Index: ui/events/blink/input_handler_proxy.cc |
diff --git a/ui/events/blink/input_handler_proxy.cc b/ui/events/blink/input_handler_proxy.cc |
index 6ff1983d7139c16be4b7604726a8c80db40dea7f..1c3daab994cae54f590a2cb71e7e83e680285264 100644 |
--- a/ui/events/blink/input_handler_proxy.cc |
+++ b/ui/events/blink/input_handler_proxy.cc |
@@ -258,6 +258,7 @@ InputHandlerProxy::InputHandlerProxy( |
#endif |
gesture_scroll_on_impl_thread_(false), |
gesture_pinch_on_impl_thread_(false), |
+ scroll_sequence_ignored_(false), |
fling_may_be_active_on_main_thread_(false), |
disallow_horizontal_fling_scroll_(false), |
disallow_vertical_fling_scroll_(false), |
@@ -856,6 +857,7 @@ InputHandlerProxy::EventDisposition InputHandlerProxy::HandleGestureScrollBegin( |
result = DID_NOT_HANDLE; |
break; |
case cc::InputHandler::SCROLL_IGNORED: |
+ scroll_sequence_ignored_ = true; |
result = DROP_EVENT; |
break; |
} |
@@ -872,6 +874,10 @@ InputHandlerProxy::HandleGestureScrollUpdate( |
#ifndef NDEBUG |
DCHECK(expect_scroll_update_end_); |
#endif |
+ |
+ if (scroll_sequence_ignored_) |
+ return DROP_EVENT; |
+ |
if (!gesture_scroll_on_impl_thread_ && !gesture_pinch_on_impl_thread_) |
return DID_NOT_HANDLE; |
@@ -933,6 +939,12 @@ InputHandlerProxy::EventDisposition InputHandlerProxy::HandleGestureScrollEnd( |
cc::ScrollState scroll_state = CreateScrollStateForGesture(gesture_event); |
input_handler_->ScrollEnd(&scroll_state); |
} |
+ |
+ if (scroll_sequence_ignored_) { |
+ scroll_sequence_ignored_ = false; |
+ return DROP_EVENT; |
+ } |
+ |
if (!gesture_scroll_on_impl_thread_) |
return DID_NOT_HANDLE; |