Chromium Code Reviews| Index: content/browser/renderer_host/render_widget_host_input_event_router.cc |
| diff --git a/content/browser/renderer_host/render_widget_host_input_event_router.cc b/content/browser/renderer_host/render_widget_host_input_event_router.cc |
| index 49053b9718b363351b8693fdc6ff4cc597e17f9a..905b3e1df617ca7ccc69047d74e02229c4cde92b 100644 |
| --- a/content/browser/renderer_host/render_widget_host_input_event_router.cc |
| +++ b/content/browser/renderer_host/render_widget_host_input_event_router.cc |
| @@ -10,7 +10,8 @@ |
| namespace content { |
| -RenderWidgetHostInputEventRouter::RenderWidgetHostInputEventRouter() {} |
| +RenderWidgetHostInputEventRouter::RenderWidgetHostInputEventRouter() |
| + : current_touch_target_(nullptr), active_touches_(0) {} |
| RenderWidgetHostInputEventRouter::~RenderWidgetHostInputEventRouter() { |
| owner_map_.clear(); |
| @@ -67,6 +68,45 @@ void RenderWidgetHostInputEventRouter::RouteMouseWheelEvent( |
| target->ProcessMouseWheelEvent(*event); |
| } |
| +void RenderWidgetHostInputEventRouter::RouteTouchEvent( |
| + RenderWidgetHostViewBase* root_view, |
| + blink::WebTouchEvent* event, |
| + const ui::LatencyInfo& latency) { |
| + switch (event->type) { |
| + case blink::WebInputEvent::TouchStart: { |
| + if (!active_touches_) { |
| + // Since this is the first touch, it defines the target for the rest |
| + // of this sequence. |
| + DCHECK(!current_touch_target_); |
| + gfx::Point transformed_point; |
| + gfx::Point original_point(event->touches[0].position.x, |
| + event->touches[0].position.y); |
| + current_touch_target_ = |
| + FindEventTarget(root_view, original_point, &transformed_point); |
| + } |
| + ++active_touches_; |
| + current_touch_target_->ProcessTouchEvent(*event, latency); |
| + break; |
| + } |
| + case blink::WebInputEvent::TouchMove: |
| + DCHECK(current_touch_target_); |
| + current_touch_target_->ProcessTouchEvent(*event, latency); |
| + break; |
| + case blink::WebInputEvent::TouchEnd: |
| + case blink::WebInputEvent::TouchCancel: |
|
tdresser
2015/11/02 21:10:19
Check for target here too.
wjmaclean
2015/11/03 14:54:25
Done.
|
| + DCHECK(active_touches_); |
| + current_touch_target_->ProcessTouchEvent(*event, latency); |
| + --active_touches_; |
| + if (!active_touches_) { |
| + DCHECK(current_touch_target_); |
| + current_touch_target_ = nullptr; |
| + } |
| + break; |
| + default: |
| + NOTREACHED(); |
| + } |
| +} |
| + |
| void RenderWidgetHostInputEventRouter::AddSurfaceIdNamespaceOwner( |
| uint32_t id, |
| RenderWidgetHostViewBase* owner) { |