| 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..449b2f6850247e2b6f54da5d8ea38b04b60b73c7 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,44 @@ 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:
|
| + DCHECK(active_touches_);
|
| + DCHECK(current_touch_target_);
|
| + current_touch_target_->ProcessTouchEvent(*event, latency);
|
| + --active_touches_;
|
| + if (!active_touches_)
|
| + current_touch_target_ = nullptr;
|
| + break;
|
| + default:
|
| + NOTREACHED();
|
| + }
|
| +}
|
| +
|
| void RenderWidgetHostInputEventRouter::AddSurfaceIdNamespaceOwner(
|
| uint32_t id,
|
| RenderWidgetHostViewBase* owner) {
|
|
|