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 "base/metrics/histogram_macros.h" | 7 #include "base/metrics/histogram_macros.h" |
8 #include "cc/quads/surface_draw_quad.h" | 8 #include "cc/quads/surface_draw_quad.h" |
9 #include "cc/surfaces/surface_id_allocator.h" | 9 #include "cc/surfaces/surface_id_allocator.h" |
10 #include "cc/surfaces/surface_manager.h" | 10 #include "cc/surfaces/surface_manager.h" |
11 #include "content/browser/renderer_host/render_widget_host_impl.h" | 11 #include "content/browser/renderer_host/render_widget_host_impl.h" |
12 #include "content/browser/renderer_host/render_widget_host_view_base.h" | 12 #include "content/browser/renderer_host/render_widget_host_view_base.h" |
13 #include "content/common/frame_messages.h" | 13 #include "content/common/frame_messages.h" |
14 #include "third_party/WebKit/public/web/WebInputEvent.h" | 14 #include "third_party/WebKit/public/web/WebInputEvent.h" |
15 | 15 |
16 namespace { | 16 namespace { |
17 | 17 |
18 void TransformEventTouchPositions(blink::WebTouchEvent* event, | 18 void TransformEventTouchPositions(blink::WebTouchEvent* event, |
19 const gfx::Vector2d& delta) { | 19 const gfx::Vector2d& delta) { |
20 for (unsigned i = 0; i < event->touchesLength; ++i) { | 20 for (unsigned i = 0; i < event->touchesLength; ++i) { |
21 event->touches[i].position.x += delta.x(); | 21 event->touches[i].position.x += delta.x(); |
22 event->touches[i].position.y += delta.y(); | 22 event->touches[i].position.y += delta.y(); |
23 } | 23 } |
24 } | 24 } |
25 | 25 |
| 26 blink::WebGestureEvent DummyGestureScrollUpdate() { |
| 27 blink::WebGestureEvent dummy_gesture_scroll_update; |
| 28 dummy_gesture_scroll_update.type = blink::WebInputEvent::GestureScrollUpdate; |
| 29 return dummy_gesture_scroll_update; |
| 30 } |
| 31 |
26 } // anonymous namespace | 32 } // anonymous namespace |
27 | 33 |
28 namespace content { | 34 namespace content { |
29 | 35 |
30 void RenderWidgetHostInputEventRouter::OnRenderWidgetHostViewBaseDestroyed( | 36 void RenderWidgetHostInputEventRouter::OnRenderWidgetHostViewBaseDestroyed( |
31 RenderWidgetHostViewBase* view) { | 37 RenderWidgetHostViewBase* view) { |
32 view->RemoveObserver(this); | 38 view->RemoveObserver(this); |
33 | 39 |
34 // Remove this view from the owner_map. | 40 // Remove this view from the owner_map. |
35 for (auto entry : owner_map_) { | 41 for (auto entry : owner_map_) { |
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
245 // might be to always transform each point to the |touch_target_.target| | 251 // might be to always transform each point to the |touch_target_.target| |
246 // for the duration of the sequence. | 252 // for the duration of the sequence. |
247 touch_target_.delta = transformed_point - original_point; | 253 touch_target_.delta = transformed_point - original_point; |
248 touchscreen_gesture_target_queue_.push_back(touch_target_); | 254 touchscreen_gesture_target_queue_.push_back(touch_target_); |
249 | 255 |
250 if (!touch_target_.target) | 256 if (!touch_target_.target) |
251 return; | 257 return; |
252 | 258 |
253 if (touch_target_.target == bubbling_gesture_scroll_target_.target) { | 259 if (touch_target_.target == bubbling_gesture_scroll_target_.target) { |
254 SendGestureScrollEnd(bubbling_gesture_scroll_target_.target, | 260 SendGestureScrollEnd(bubbling_gesture_scroll_target_.target, |
255 blink::WebGestureEvent()); | 261 DummyGestureScrollUpdate()); |
256 CancelScrollBubbling(bubbling_gesture_scroll_target_.target); | 262 CancelScrollBubbling(bubbling_gesture_scroll_target_.target); |
257 } | 263 } |
258 } | 264 } |
259 | 265 |
260 if (touch_target_.target) { | 266 if (touch_target_.target) { |
261 TransformEventTouchPositions(event, touch_target_.delta); | 267 TransformEventTouchPositions(event, touch_target_.delta); |
262 touch_target_.target->ProcessTouchEvent(*event, latency); | 268 touch_target_.target->ProcessTouchEvent(*event, latency); |
263 } | 269 } |
264 break; | 270 break; |
265 } | 271 } |
(...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
490 } | 496 } |
491 | 497 |
492 touchscreen_gesture_target_ = touchscreen_gesture_target_queue_.front(); | 498 touchscreen_gesture_target_ = touchscreen_gesture_target_queue_.front(); |
493 touchscreen_gesture_target_queue_.pop_front(); | 499 touchscreen_gesture_target_queue_.pop_front(); |
494 | 500 |
495 // Abort any scroll bubbling in progress to avoid double entry. | 501 // Abort any scroll bubbling in progress to avoid double entry. |
496 if (touchscreen_gesture_target_.target && | 502 if (touchscreen_gesture_target_.target && |
497 touchscreen_gesture_target_.target == | 503 touchscreen_gesture_target_.target == |
498 bubbling_gesture_scroll_target_.target) { | 504 bubbling_gesture_scroll_target_.target) { |
499 SendGestureScrollEnd(bubbling_gesture_scroll_target_.target, | 505 SendGestureScrollEnd(bubbling_gesture_scroll_target_.target, |
500 blink::WebGestureEvent()); | 506 DummyGestureScrollUpdate()); |
501 CancelScrollBubbling(bubbling_gesture_scroll_target_.target); | 507 CancelScrollBubbling(bubbling_gesture_scroll_target_.target); |
502 } | 508 } |
503 } | 509 } |
504 | 510 |
505 if (!touchscreen_gesture_target_.target) | 511 if (!touchscreen_gesture_target_.target) |
506 return; | 512 return; |
507 | 513 |
508 // TODO(mohsen): Add tests to check event location. | 514 // TODO(mohsen): Add tests to check event location. |
509 event->x += touchscreen_gesture_target_.delta.x(); | 515 event->x += touchscreen_gesture_target_.delta.x(); |
510 event->y += touchscreen_gesture_target_.delta.y(); | 516 event->y += touchscreen_gesture_target_.delta.y(); |
(...skipping 17 matching lines...) Expand all Loading... |
528 // touchpad gesture sequence, though this could be wrong; a better approach | 534 // touchpad gesture sequence, though this could be wrong; a better approach |
529 // might be to always transform each point to the | 535 // might be to always transform each point to the |
530 // |touchpad_gesture_target_.target| for the duration of the sequence. | 536 // |touchpad_gesture_target_.target| for the duration of the sequence. |
531 touchpad_gesture_target_.delta = transformed_point - original_point; | 537 touchpad_gesture_target_.delta = transformed_point - original_point; |
532 | 538 |
533 // Abort any scroll bubbling in progress to avoid double entry. | 539 // Abort any scroll bubbling in progress to avoid double entry. |
534 if (touchpad_gesture_target_.target && | 540 if (touchpad_gesture_target_.target && |
535 touchpad_gesture_target_.target == | 541 touchpad_gesture_target_.target == |
536 bubbling_gesture_scroll_target_.target) { | 542 bubbling_gesture_scroll_target_.target) { |
537 SendGestureScrollEnd(bubbling_gesture_scroll_target_.target, | 543 SendGestureScrollEnd(bubbling_gesture_scroll_target_.target, |
538 blink::WebGestureEvent()); | 544 DummyGestureScrollUpdate()); |
539 CancelScrollBubbling(bubbling_gesture_scroll_target_.target); | 545 CancelScrollBubbling(bubbling_gesture_scroll_target_.target); |
540 } | 546 } |
541 } | 547 } |
542 | 548 |
543 if (!touchpad_gesture_target_.target) | 549 if (!touchpad_gesture_target_.target) |
544 return; | 550 return; |
545 | 551 |
546 // TODO(mohsen): Add tests to check event location. | 552 // TODO(mohsen): Add tests to check event location. |
547 event->x += touchpad_gesture_target_.delta.x(); | 553 event->x += touchpad_gesture_target_.delta.x(); |
548 event->y += touchpad_gesture_target_.delta.y(); | 554 event->y += touchpad_gesture_target_.delta.y(); |
549 touchpad_gesture_target_.target->ProcessGestureEvent(*event, latency); | 555 touchpad_gesture_target_.target->ProcessGestureEvent(*event, latency); |
550 } | 556 } |
551 | 557 |
552 } // namespace content | 558 } // namespace content |
OLD | NEW |