OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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/browser/renderer_host/render_widget_host_input_event_router.h" | 5 #include "content/browser/renderer_host/render_widget_host_input_event_router.h" |
6 | 6 |
7 #include <vector> | 7 #include <vector> |
8 | 8 |
9 #include "base/metrics/histogram_macros.h" | 9 #include "base/metrics/histogram_macros.h" |
10 #include "cc/quads/surface_draw_quad.h" | 10 #include "cc/quads/surface_draw_quad.h" |
(...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
277 if (root_view->IsMouseLocked()) { | 277 if (root_view->IsMouseLocked()) { |
278 target = RenderWidgetHostImpl::From(root_view->GetRenderWidgetHost()) | 278 target = RenderWidgetHostImpl::From(root_view->GetRenderWidgetHost()) |
279 ->delegate() | 279 ->delegate() |
280 ->GetMouseLockWidget() | 280 ->GetMouseLockWidget() |
281 ->GetView(); | 281 ->GetView(); |
282 if (!root_view->TransformPointToCoordSpaceForView( | 282 if (!root_view->TransformPointToCoordSpaceForView( |
283 gfx::Point(event->PositionInWidget().x, | 283 gfx::Point(event->PositionInWidget().x, |
284 event->PositionInWidget().y), | 284 event->PositionInWidget().y), |
285 target, &transformed_point)) | 285 target, &transformed_point)) |
286 return; | 286 return; |
287 } else { | 287 } else if (root_view->wheel_scroll_latching_enabled()) { |
| 288 if (event->phase == blink::WebMouseWheelEvent::kPhaseBegan) { |
| 289 wheel_target_.target = FindEventTarget( |
| 290 root_view, |
| 291 gfx::Point(event->PositionInWidget().x, event->PositionInWidget().y), |
| 292 &transformed_point); |
| 293 wheel_target_.delta = |
| 294 transformed_point - |
| 295 gfx::Point(event->PositionInWidget().x, event->PositionInWidget().y); |
| 296 target = wheel_target_.target; |
| 297 } else { |
| 298 if (wheel_target_.target) { |
| 299 target = wheel_target_.target; |
| 300 transformed_point = gfx::Point(event->PositionInWidget().x, |
| 301 event->PositionInWidget().y) + |
| 302 wheel_target_.delta; |
| 303 } |
| 304 } |
| 305 |
| 306 } else { // !root_view->IsMouseLocked() && |
| 307 // !root_view->wheel_scroll_latching_enabled() |
288 target = FindEventTarget( | 308 target = FindEventTarget( |
289 root_view, | 309 root_view, |
290 gfx::Point(event->PositionInWidget().x, event->PositionInWidget().y), | 310 gfx::Point(event->PositionInWidget().x, event->PositionInWidget().y), |
291 &transformed_point); | 311 &transformed_point); |
292 } | 312 } |
293 | 313 |
294 if (!target) | 314 if (!target) |
295 return; | 315 return; |
296 | 316 |
297 event->SetPositionInWidget(transformed_point.x(), transformed_point.y()); | 317 event->SetPositionInWidget(transformed_point.x(), transformed_point.y()); |
298 target->ProcessMouseWheelEvent(*event, latency); | 318 target->ProcessMouseWheelEvent(*event, latency); |
| 319 |
| 320 DCHECK(root_view->wheel_scroll_latching_enabled() || !wheel_target_.target); |
| 321 if (event->phase == blink::WebMouseWheelEvent::kPhaseEnded || |
| 322 event->momentum_phase == blink::WebMouseWheelEvent::kPhaseEnded) { |
| 323 wheel_target_.target = nullptr; |
| 324 } |
299 } | 325 } |
300 | 326 |
301 void RenderWidgetHostInputEventRouter::RouteGestureEvent( | 327 void RenderWidgetHostInputEventRouter::RouteGestureEvent( |
302 RenderWidgetHostViewBase* root_view, | 328 RenderWidgetHostViewBase* root_view, |
303 blink::WebGestureEvent* event, | 329 blink::WebGestureEvent* event, |
304 const ui::LatencyInfo& latency) { | 330 const ui::LatencyInfo& latency) { |
305 if (event->IsTargetViewport()) { | 331 if (event->IsTargetViewport()) { |
306 root_view->ProcessGestureEvent(*event, latency); | 332 root_view->ProcessGestureEvent(*event, latency); |
307 return; | 333 return; |
308 } | 334 } |
(...skipping 538 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
847 std::vector<RenderWidgetHostView*> | 873 std::vector<RenderWidgetHostView*> |
848 RenderWidgetHostInputEventRouter::GetRenderWidgetHostViewsForTests() const { | 874 RenderWidgetHostInputEventRouter::GetRenderWidgetHostViewsForTests() const { |
849 std::vector<RenderWidgetHostView*> hosts; | 875 std::vector<RenderWidgetHostView*> hosts; |
850 for (auto entry : owner_map_) | 876 for (auto entry : owner_map_) |
851 hosts.push_back(entry.second); | 877 hosts.push_back(entry.second); |
852 | 878 |
853 return hosts; | 879 return hosts; |
854 } | 880 } |
855 | 881 |
856 } // namespace content | 882 } // namespace content |
OLD | NEW |