#ifndef UI_COMPOSITOR_OVERSCROLL_SCROLL_INPUT_HANDLER_H_
#define UI_COMPOSITOR_OVERSCROLL_SCROLL_INPUT_HANDLER_H_
#include "base/memory/weak_ptr.h"
#include "cc/input/input_handler.h"
#include "ui/compositor/compositor_export.h"
namespace ui {
class Layer;
class ScrollEvent;
class COMPOSITOR_EXPORT ScrollInputHandler : public cc::InputHandlerClient {
public:
explicit ScrollInputHandler(
const base::WeakPtr<cc::InputHandler>& input_handler);
ScrollInputHandler(const ScrollInputHandler&) = delete;
ScrollInputHandler& operator=(const ScrollInputHandler&) = delete;
~ScrollInputHandler() override;
bool OnScrollEvent(const ScrollEvent& event, Layer* layer_to_scroll);
void WillShutdown() override;
void Animate(base::TimeTicks time) override;
void ReconcileElasticOverscrollAndRootScroll() override;
void SetPrefersReducedMotion(bool prefers_reduced_motion) override;
void UpdateRootLayerStateForSynchronousInputHandler(
const gfx::PointF& total_scroll_offset,
const gfx::PointF& max_scroll_offset,
const gfx::SizeF& scrollable_size,
float page_scale_factor,
float min_page_scale_factor,
float max_page_scale_factor) override;
void DeliverInputForBeginFrame(const viz::BeginFrameArgs& args) override;
void DeliverInputForHighLatencyMode() override;
void DeliverInputForDeadline() override;
void DidFinishImplFrame() override;
bool HasQueuedInput() const override;
void SetScrollEventDispatchMode(
cc::InputHandlerClient::ScrollEventDispatchMode mode,
double scroll_deadline_ratio) override;
private:
base::WeakPtr<cc::InputHandler> input_handler_weak_ptr_;
};
}
#endif