scroll_input_handler.h 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. // Copyright 2018 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #ifndef UI_COMPOSITOR_OVERSCROLL_SCROLL_INPUT_HANDLER_H_
  5. #define UI_COMPOSITOR_OVERSCROLL_SCROLL_INPUT_HANDLER_H_
  6. #include "base/memory/weak_ptr.h"
  7. #include "cc/input/input_handler.h"
  8. #include "ui/compositor/compositor_export.h"
  9. namespace ui {
  10. class Layer;
  11. class ScrollEvent;
  12. // Class to feed UI-thread scroll events to a cc::InputHandler. Inspired by
  13. // ui::InputHandlerProxy but greatly simplified.
  14. class COMPOSITOR_EXPORT ScrollInputHandler : public cc::InputHandlerClient {
  15. public:
  16. explicit ScrollInputHandler(
  17. const base::WeakPtr<cc::InputHandler>& input_handler);
  18. ScrollInputHandler(const ScrollInputHandler&) = delete;
  19. ScrollInputHandler& operator=(const ScrollInputHandler&) = delete;
  20. ~ScrollInputHandler() override;
  21. // Ask the InputHandler to scroll |element| according to |scroll|.
  22. bool OnScrollEvent(const ScrollEvent& event, Layer* layer_to_scroll);
  23. // cc::InputHandlerClient:
  24. void WillShutdown() override;
  25. void Animate(base::TimeTicks time) override;
  26. void ReconcileElasticOverscrollAndRootScroll() override;
  27. void SetPrefersReducedMotion(bool prefers_reduced_motion) override;
  28. void UpdateRootLayerStateForSynchronousInputHandler(
  29. const gfx::PointF& total_scroll_offset,
  30. const gfx::PointF& max_scroll_offset,
  31. const gfx::SizeF& scrollable_size,
  32. float page_scale_factor,
  33. float min_page_scale_factor,
  34. float max_page_scale_factor) override;
  35. void DeliverInputForBeginFrame(const viz::BeginFrameArgs& args) override;
  36. void DeliverInputForHighLatencyMode() override;
  37. private:
  38. // Cleared in WillShutdown().
  39. base::WeakPtr<cc::InputHandler> input_handler_weak_ptr_;
  40. };
  41. } // namespace ui
  42. #endif // UI_COMPOSITOR_OVERSCROLL_SCROLL_INPUT_HANDLER_H_