| 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 18baa4cf33d4dd8cbcc16699b89b28e4d6451d49..17a8517f71d03d166eceab01561c644849d41401 100644
|
| --- a/ui/events/blink/input_handler_proxy.cc
|
| +++ b/ui/events/blink/input_handler_proxy.cc
|
| @@ -835,12 +835,19 @@ InputHandlerProxy::EventDisposition InputHandlerProxy::HandleGestureFlingStart(
|
| InputHandlerProxy::EventDisposition InputHandlerProxy::HandleTouchStart(
|
| const blink::WebTouchEvent& touch_event) {
|
| EventDisposition result = DROP_EVENT;
|
| + bool maybe_passive_due_to_fling = false;
|
| for (size_t i = 0; i < touch_event.touchesLength; ++i) {
|
| if (touch_event.touches[i].state != WebTouchPoint::StatePressed)
|
| continue;
|
| - if (input_handler_->DoTouchEventsBlockScrollAt(
|
| + cc::EventListenerProperties event_result =
|
| + input_handler_->DoTouchHandlersBlockScrollAt(
|
| gfx::Point(touch_event.touches[i].position.x,
|
| - touch_event.touches[i].position.y))) {
|
| + touch_event.touches[i].position.y));
|
| + if (event_result != cc::EventListenerProperties::kNone) {
|
| + maybe_passive_due_to_fling =
|
| + event_result ==
|
| + cc::EventListenerProperties::kBlockingAndPassiveDueToFling
|
| + ? true : false;
|
| result = DID_NOT_HANDLE;
|
| break;
|
| }
|
| @@ -892,7 +899,8 @@ InputHandlerProxy::EventDisposition InputHandlerProxy::HandleTouchStart(
|
| }
|
|
|
| bool is_fling_on_impl = fling_curve_ && !fling_may_be_active_on_main_thread_;
|
| - if (result == DID_NOT_HANDLE && is_fling_on_impl)
|
| + if (result == DID_NOT_HANDLE && is_fling_on_impl &&
|
| + maybe_passive_due_to_fling)
|
| result = DID_NOT_HANDLE_NON_BLOCKING_DUE_TO_FLING;
|
|
|
| return result;
|
|
|