| Index: content/browser/renderer_host/input/input_router_impl.cc
|
| diff --git a/content/browser/renderer_host/input/input_router_impl.cc b/content/browser/renderer_host/input/input_router_impl.cc
|
| index 598e21747a928a468ffb9f3af15e7bbbcd347c06..1af52e2f0a1402134debaf7653a92ad0c0a048c2 100644
|
| --- a/content/browser/renderer_host/input/input_router_impl.cc
|
| +++ b/content/browser/renderer_host/input/input_router_impl.cc
|
| @@ -160,8 +160,11 @@ void InputRouterImpl::SendGestureEvent(
|
|
|
| wheel_event_queue_.OnGestureScrollEvent(gesture_event);
|
|
|
| - if (gesture_event.event.sourceDevice == blink::WebGestureDeviceTouchscreen)
|
| + if (gesture_event.event.sourceDevice == blink::WebGestureDeviceTouchscreen) {
|
| + if (gesture_event.event.type == blink::WebInputEvent::GestureScrollBegin)
|
| + touch_event_queue_.PrependTouchScrollNotification();
|
| touch_event_queue_.OnGestureScrollEvent(gesture_event);
|
| + }
|
|
|
| gesture_event_queue_.QueueEvent(gesture_event);
|
| }
|
| @@ -370,20 +373,21 @@ void InputRouterImpl::OfferToHandlers(const WebInputEvent& input_event,
|
| return;
|
|
|
| // Touch events should always indicate in the event whether they are
|
| - // cancelable (respect ACK disposition) or not except touchmove.
|
| + // cancelable (respect ACK disposition) or not, except touchmove and
|
| + // touchscollstarted.
|
| bool should_block = WebInputEventTraits::ShouldBlockEventStream(input_event);
|
| + if (WebInputEvent::isTouchEventType(input_event.type) &&
|
| + input_event.type != WebInputEvent::TouchMove &&
|
| + input_event.type != WebInputEvent::TouchScrollStarted) {
|
| + const WebTouchEvent& touch = static_cast<const WebTouchEvent&>(input_event);
|
| + DCHECK_EQ(should_block, touch.cancelable);
|
| + }
|
|
|
| OfferToRenderer(input_event, latency_info,
|
| should_block
|
| ? InputEventDispatchType::DISPATCH_TYPE_BLOCKING
|
| : InputEventDispatchType::DISPATCH_TYPE_NON_BLOCKING);
|
|
|
| - if (WebInputEvent::isTouchEventType(input_event.type) &&
|
| - input_event.type != WebInputEvent::TouchMove) {
|
| - const WebTouchEvent& touch = static_cast<const WebTouchEvent&>(input_event);
|
| - DCHECK_EQ(should_block, touch.cancelable);
|
| - }
|
| -
|
| // Generate a synthetic ack if the event was sent so it doesn't block.
|
| if (!should_block) {
|
| ProcessInputEventAck(
|
|
|