jdduke@chromium.org | 7a72d45 | 2013-12-13 10:01:13 | [diff] [blame] | 1 | // Copyright 2013 The Chromium Authors. All rights reserved. |
jamesr@chromium.org | 200a9c06 | 2013-05-20 04:34:37 | [diff] [blame] | 2 | // Use of this source code is governed by a BSD-style license that can be |
| 3 | // found in the LICENSE file. |
| 4 | |
jdduke@chromium.org | 7a72d45 | 2013-12-13 10:01:13 | [diff] [blame] | 5 | #ifndef CONTENT_RENDERER_INPUT_INPUT_HANDLER_WRAPPER_H_ |
| 6 | #define CONTENT_RENDERER_INPUT_INPUT_HANDLER_WRAPPER_H_ |
jamesr@chromium.org | 200a9c06 | 2013-05-20 04:34:37 | [diff] [blame] | 7 | |
avi | 1023d01 | 2015-12-25 02:39:14 | [diff] [blame] | 8 | #include "base/macros.h" |
jamesr@chromium.org | 200a9c06 | 2013-05-20 04:34:37 | [diff] [blame] | 9 | #include "base/memory/weak_ptr.h" |
skyostil | 2d3b5bd | 2015-05-27 15:40:59 | [diff] [blame] | 10 | #include "base/single_thread_task_runner.h" |
jdduke@chromium.org | 7a72d45 | 2013-12-13 10:01:13 | [diff] [blame] | 11 | #include "content/renderer/input/input_handler_manager.h" |
khushalsagar | 3a8d056 | 2015-11-23 22:50:36 | [diff] [blame] | 12 | #include "ui/events/blink/input_handler_proxy.h" |
| 13 | #include "ui/events/blink/input_handler_proxy_client.h" |
| 14 | |
| 15 | namespace ui { |
| 16 | class InputHandlerProxy; |
| 17 | class InputHandlerProxyClient; |
| 18 | } |
jamesr@chromium.org | 200a9c06 | 2013-05-20 04:34:37 | [diff] [blame] | 19 | |
| 20 | namespace content { |
| 21 | |
| 22 | // This class lives on the compositor thread. |
khushalsagar | 3a8d056 | 2015-11-23 22:50:36 | [diff] [blame] | 23 | class InputHandlerWrapper : public ui::InputHandlerProxyClient { |
jamesr@chromium.org | 200a9c06 | 2013-05-20 04:34:37 | [diff] [blame] | 24 | public: |
skyostil | 2d3b5bd | 2015-05-27 15:40:59 | [diff] [blame] | 25 | InputHandlerWrapper( |
| 26 | InputHandlerManager* input_handler_manager, |
| 27 | int routing_id, |
| 28 | const scoped_refptr<base::SingleThreadTaskRunner>& main_task_runner, |
| 29 | const base::WeakPtr<cc::InputHandler>& input_handler, |
wjmaclean | 1d97062 | 2017-01-21 22:28:24 | [diff] [blame] | 30 | const base::WeakPtr<RenderWidget>& render_widget, |
dtapuska | e7dd21de | 2016-06-09 13:41:56 | [diff] [blame] | 31 | bool enable_smooth_scrolling); |
dcheng | 6d18e40 | 2014-10-21 12:32:52 | [diff] [blame] | 32 | ~InputHandlerWrapper() override; |
jamesr@chromium.org | 200a9c06 | 2013-05-20 04:34:37 | [diff] [blame] | 33 | |
| 34 | int routing_id() const { return routing_id_; } |
khushalsagar | 3a8d056 | 2015-11-23 22:50:36 | [diff] [blame] | 35 | ui::InputHandlerProxy* input_handler_proxy() { |
| 36 | return &input_handler_proxy_; |
| 37 | } |
jamesr@chromium.org | 200a9c06 | 2013-05-20 04:34:37 | [diff] [blame] | 38 | |
dtapuska | 3d5624d3 | 2016-08-30 04:34:00 | [diff] [blame] | 39 | void NeedsMainFrame(); |
| 40 | |
jamesr@chromium.org | 200a9c06 | 2013-05-20 04:34:37 | [diff] [blame] | 41 | // InputHandlerProxyClient implementation. |
dcheng | 6d18e40 | 2014-10-21 12:32:52 | [diff] [blame] | 42 | void WillShutdown() override; |
dtapuska | 1bcb284c4 | 2016-09-20 22:12:48 | [diff] [blame] | 43 | void DispatchNonBlockingEventToMainThread( |
jam | 013b74c8 | 2017-02-10 16:36:10 | [diff] [blame] | 44 | ui::WebScopedInputEvent event, |
dtapuska | 1bcb284c4 | 2016-09-20 22:12:48 | [diff] [blame] | 45 | const ui::LatencyInfo& latency_info) override; |
altimin | eb6bd196 | 2017-05-03 14:52:38 | [diff] [blame] | 46 | std::unique_ptr<blink::WebGestureCurve> CreateFlingAnimationCurve( |
rjkroege@chromium.org | 8ec812e3 | 2014-06-03 21:53:33 | [diff] [blame] | 47 | blink::WebGestureDevice deviceSource, |
abarth@chromium.org | 180ef24 | 2013-11-07 06:50:46 | [diff] [blame] | 48 | const blink::WebFloatPoint& velocity, |
mohan.reddy | ee0b42a | 2014-10-08 04:53:14 | [diff] [blame] | 49 | const blink::WebSize& cumulativeScroll) override; |
sunyunjia | bbea8a9 | 2017-08-31 11:18:54 | [diff] [blame] | 50 | void DidOverscroll( |
| 51 | const gfx::Vector2dF& accumulated_overscroll, |
| 52 | const gfx::Vector2dF& latest_overscroll_delta, |
| 53 | const gfx::Vector2dF& current_fling_velocity, |
| 54 | const gfx::PointF& causal_event_viewport_point, |
Sandra Sun | 2288e853 | 2017-11-30 22:50:16 | [diff] [blame] | 55 | const cc::OverscrollBehavior& overscroll_behavior) override; |
dcheng | 6d18e40 | 2014-10-21 12:32:52 | [diff] [blame] | 56 | void DidStopFlinging() override; |
alexclarke | 3722366b | 2014-11-11 09:52:22 | [diff] [blame] | 57 | void DidAnimateForInput() override; |
sahel | 42f43cb | 2017-05-11 17:58:31 | [diff] [blame] | 58 | void GenerateScrollBeginAndSendToMainThread( |
| 59 | const blink::WebGestureEvent& update_event) override; |
Hayley Ferr | 5e19e83 | 2017-08-02 20:41:05 | [diff] [blame] | 60 | void SetWhiteListedTouchAction( |
| 61 | cc::TouchAction touch_action, |
| 62 | uint32_t unique_touch_event_id, |
| 63 | ui::InputHandlerProxy::EventDisposition event_disposition) override; |
jamesr@chromium.org | 200a9c06 | 2013-05-20 04:34:37 | [diff] [blame] | 64 | |
| 65 | private: |
jamesr@chromium.org | 200a9c06 | 2013-05-20 04:34:37 | [diff] [blame] | 66 | InputHandlerManager* input_handler_manager_; |
| 67 | int routing_id_; |
khushalsagar | 3a8d056 | 2015-11-23 22:50:36 | [diff] [blame] | 68 | ui::InputHandlerProxy input_handler_proxy_; |
skyostil | 2d3b5bd | 2015-05-27 15:40:59 | [diff] [blame] | 69 | scoped_refptr<base::SingleThreadTaskRunner> main_task_runner_; |
jamesr@chromium.org | 200a9c06 | 2013-05-20 04:34:37 | [diff] [blame] | 70 | |
| 71 | // Can only be accessed on the main thread. |
wjmaclean | 1d97062 | 2017-01-21 22:28:24 | [diff] [blame] | 72 | base::WeakPtr<RenderWidget> render_widget_; |
jamesr@chromium.org | 200a9c06 | 2013-05-20 04:34:37 | [diff] [blame] | 73 | |
| 74 | DISALLOW_COPY_AND_ASSIGN(InputHandlerWrapper); |
| 75 | }; |
| 76 | |
| 77 | } // namespace content |
| 78 | |
jdduke@chromium.org | 7a72d45 | 2013-12-13 10:01:13 | [diff] [blame] | 79 | #endif // CONTENT_RENDERER_INPUT_INPUT_HANDLER_WRAPPER_H_ |