| 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 |