Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(47)

Side by Side Diff: ui/events/blink/input_handler_proxy.cc

Issue 1415953004: Move content/renderer input handling for web input events to ui (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Move code to ui Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « ui/events/blink/input_handler_proxy.h ('k') | ui/events/blink/input_handler_proxy_client.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/renderer/input/input_handler_proxy.h" 5 #include "ui/events/blink/input_handler_proxy.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/auto_reset.h" 9 #include "base/auto_reset.h"
10 #include "base/command_line.h" 10 #include "base/command_line.h"
11 #include "base/location.h" 11 #include "base/location.h"
12 #include "base/logging.h" 12 #include "base/logging.h"
13 #include "base/metrics/histogram.h" 13 #include "base/metrics/histogram.h"
14 #include "base/single_thread_task_runner.h" 14 #include "base/single_thread_task_runner.h"
15 #include "base/thread_task_runner_handle.h" 15 #include "base/thread_task_runner_handle.h"
16 #include "base/trace_event/trace_event.h" 16 #include "base/trace_event/trace_event.h"
17 #include "content/common/input/did_overscroll_params.h"
18 #include "content/common/input/web_input_event_traits.h"
19 #include "content/public/common/content_switches.h"
20 #include "content/renderer/input/input_handler_proxy_client.h"
21 #include "content/renderer/input/input_scroll_elasticity_controller.h"
22 #include "third_party/WebKit/public/platform/Platform.h"
23 #include "third_party/WebKit/public/web/WebInputEvent.h" 17 #include "third_party/WebKit/public/web/WebInputEvent.h"
18 #include "ui/events/blink/input_handler_proxy_client.h"
19 #include "ui/events/blink/input_scroll_elasticity_controller.h"
24 #include "ui/events/latency_info.h" 20 #include "ui/events/latency_info.h"
25 #include "ui/gfx/geometry/point_conversions.h" 21 #include "ui/gfx/geometry/point_conversions.h"
26 22
27 using blink::WebFloatPoint; 23 using blink::WebFloatPoint;
28 using blink::WebFloatSize; 24 using blink::WebFloatSize;
29 using blink::WebGestureEvent; 25 using blink::WebGestureEvent;
30 using blink::WebInputEvent; 26 using blink::WebInputEvent;
31 using blink::WebMouseEvent; 27 using blink::WebMouseEvent;
32 using blink::WebMouseWheelEvent; 28 using blink::WebMouseWheelEvent;
33 using blink::WebPoint; 29 using blink::WebPoint;
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
171 break; 167 break;
172 default: 168 default:
173 NOTREACHED(); 169 NOTREACHED();
174 break; 170 break;
175 } 171 }
176 } 172 }
177 } 173 }
178 174
179 } // namespace 175 } // namespace
180 176
181 namespace content { 177 namespace ui {
182 178
183 InputHandlerProxy::InputHandlerProxy(cc::InputHandler* input_handler, 179 InputHandlerProxy::InputHandlerProxy(cc::InputHandler* input_handler,
184 InputHandlerProxyClient* client) 180 InputHandlerProxyClient* client)
185 : client_(client), 181 : client_(client),
186 input_handler_(input_handler), 182 input_handler_(input_handler),
187 deferred_fling_cancel_time_seconds_(0), 183 deferred_fling_cancel_time_seconds_(0),
188 synchronous_input_handler_(nullptr), 184 synchronous_input_handler_(nullptr),
189 allow_root_animate_(true), 185 allow_root_animate_(true),
190 #ifndef NDEBUG 186 #ifndef NDEBUG
191 expect_scroll_update_end_(false), 187 expect_scroll_update_end_(false),
192 #endif 188 #endif
193 gesture_scroll_on_impl_thread_(false), 189 gesture_scroll_on_impl_thread_(false),
194 gesture_pinch_on_impl_thread_(false), 190 gesture_pinch_on_impl_thread_(false),
195 fling_may_be_active_on_main_thread_(false), 191 fling_may_be_active_on_main_thread_(false),
196 disallow_horizontal_fling_scroll_(false), 192 disallow_horizontal_fling_scroll_(false),
197 disallow_vertical_fling_scroll_(false), 193 disallow_vertical_fling_scroll_(false),
198 has_fling_animation_started_(false), 194 has_fling_animation_started_(false),
195 smooth_scroll_enabled_(false),
199 uma_latency_reporting_enabled_(base::TimeTicks::IsHighResolution()) { 196 uma_latency_reporting_enabled_(base::TimeTicks::IsHighResolution()) {
200 DCHECK(client); 197 DCHECK(client);
201 input_handler_->BindToClient(this); 198 input_handler_->BindToClient(this);
202 smooth_scroll_enabled_ = base::CommandLine::ForCurrentProcess()->HasSwitch(
203 switches::kEnableSmoothScrolling);
204 cc::ScrollElasticityHelper* scroll_elasticity_helper = 199 cc::ScrollElasticityHelper* scroll_elasticity_helper =
205 input_handler_->CreateScrollElasticityHelper(); 200 input_handler_->CreateScrollElasticityHelper();
206 if (scroll_elasticity_helper) { 201 if (scroll_elasticity_helper) {
207 scroll_elasticity_controller_.reset( 202 scroll_elasticity_controller_.reset(
208 new InputScrollElasticityController(scroll_elasticity_helper)); 203 new InputScrollElasticityController(scroll_elasticity_helper));
209 } 204 }
210 } 205 }
211 206
212 InputHandlerProxy::~InputHandlerProxy() {} 207 InputHandlerProxy::~InputHandlerProxy() {}
213 208
(...skipping 20 matching lines...) Expand all
234 229
235 scoped_ptr<cc::SwapPromiseMonitor> latency_info_swap_promise_monitor = 230 scoped_ptr<cc::SwapPromiseMonitor> latency_info_swap_promise_monitor =
236 input_handler_->CreateLatencyInfoSwapPromiseMonitor(latency_info); 231 input_handler_->CreateLatencyInfoSwapPromiseMonitor(latency_info);
237 InputHandlerProxy::EventDisposition disposition = HandleInputEvent(event); 232 InputHandlerProxy::EventDisposition disposition = HandleInputEvent(event);
238 return disposition; 233 return disposition;
239 } 234 }
240 235
241 InputHandlerProxy::EventDisposition InputHandlerProxy::HandleInputEvent( 236 InputHandlerProxy::EventDisposition InputHandlerProxy::HandleInputEvent(
242 const WebInputEvent& event) { 237 const WebInputEvent& event) {
243 DCHECK(input_handler_); 238 DCHECK(input_handler_);
244 TRACE_EVENT1("input,benchmark", "InputHandlerProxy::HandleInputEvent",
245 "type", WebInputEventTraits::GetName(event.type));
tdresser 2015/11/11 05:58:24 Why did this trace disappear?
Khushal 2015/11/11 06:18:26 WebInputEventTraits lives in content. May be we m
246 239
247 if (FilterInputEventForFlingBoosting(event)) 240 if (FilterInputEventForFlingBoosting(event))
248 return DID_HANDLE; 241 return DID_HANDLE;
249 242
250 switch (event.type) { 243 switch (event.type) {
251 case WebInputEvent::MouseWheel: 244 case WebInputEvent::MouseWheel:
252 return HandleMouseWheel(static_cast<const WebMouseWheelEvent&>(event)); 245 return HandleMouseWheel(static_cast<const WebMouseWheelEvent&>(event));
253 246
254 case WebInputEvent::GestureScrollBegin: 247 case WebInputEvent::GestureScrollBegin:
255 return HandleGestureScrollBegin( 248 return HandleGestureScrollBegin(
(...skipping 607 matching lines...) Expand 10 before | Expand all | Expand 10 after
863 if (!scroll_result.did_overscroll_root) 856 if (!scroll_result.did_overscroll_root)
864 return; 857 return;
865 858
866 TRACE_EVENT2("input", 859 TRACE_EVENT2("input",
867 "InputHandlerProxy::DidOverscroll", 860 "InputHandlerProxy::DidOverscroll",
868 "dx", 861 "dx",
869 scroll_result.unused_scroll_delta.x(), 862 scroll_result.unused_scroll_delta.x(),
870 "dy", 863 "dy",
871 scroll_result.unused_scroll_delta.y()); 864 scroll_result.unused_scroll_delta.y());
872 865
873 DidOverscrollParams params;
874 params.accumulated_overscroll = scroll_result.accumulated_root_overscroll;
875 params.latest_overscroll_delta = scroll_result.unused_scroll_delta;
876 params.current_fling_velocity =
877 ToClientScrollIncrement(current_fling_velocity_);
878 params.causal_event_viewport_point = gfx::PointF(causal_event_viewport_point);
879
880 if (fling_curve_) { 866 if (fling_curve_) {
881 static const int kFlingOverscrollThreshold = 1; 867 static const int kFlingOverscrollThreshold = 1;
882 disallow_horizontal_fling_scroll_ |= 868 disallow_horizontal_fling_scroll_ |=
883 std::abs(params.accumulated_overscroll.x()) >= 869 std::abs(scroll_result.accumulated_root_overscroll.x()) >=
884 kFlingOverscrollThreshold; 870 kFlingOverscrollThreshold;
885 disallow_vertical_fling_scroll_ |= 871 disallow_vertical_fling_scroll_ |=
886 std::abs(params.accumulated_overscroll.y()) >= 872 std::abs(scroll_result.accumulated_root_overscroll.y()) >=
887 kFlingOverscrollThreshold; 873 kFlingOverscrollThreshold;
888 } 874 }
889 875
890 client_->DidOverscroll(params); 876 client_->DidOverscroll(scroll_result.accumulated_root_overscroll,
877 scroll_result.unused_scroll_delta,
878 ToClientScrollIncrement(current_fling_velocity_),
879 gfx::PointF(causal_event_viewport_point));
891 } 880 }
892 881
893 bool InputHandlerProxy::CancelCurrentFling() { 882 bool InputHandlerProxy::CancelCurrentFling() {
894 if (CancelCurrentFlingWithoutNotifyingClient()) { 883 if (CancelCurrentFlingWithoutNotifyingClient()) {
895 client_->DidStopFlinging(); 884 client_->DidStopFlinging();
896 return true; 885 return true;
897 } 886 }
898 return false; 887 return false;
899 } 888 }
900 889
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
1038 // It's possible the provided |increment| is sufficiently small as to not 1027 // It's possible the provided |increment| is sufficiently small as to not
1039 // trigger a scroll, e.g., with a trivial time delta between fling updates. 1028 // trigger a scroll, e.g., with a trivial time delta between fling updates.
1040 // Return true in this case to prevent early fling termination. 1029 // Return true in this case to prevent early fling termination.
1041 if (std::abs(clipped_increment.width) < kScrollEpsilon && 1030 if (std::abs(clipped_increment.width) < kScrollEpsilon &&
1042 std::abs(clipped_increment.height) < kScrollEpsilon) 1031 std::abs(clipped_increment.height) < kScrollEpsilon)
1043 return true; 1032 return true;
1044 1033
1045 return did_scroll; 1034 return did_scroll;
1046 } 1035 }
1047 1036
1048 } // namespace content 1037 } // namespace ui
OLDNEW
« no previous file with comments | « ui/events/blink/input_handler_proxy.h ('k') | ui/events/blink/input_handler_proxy_client.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698