| 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 01d2544ceebb997e47f6822a2eea07fb510480f0..54d506e89c58db93fc3c3d8b0e3781fbbe77c7b5 100644
|
| --- a/ui/events/blink/input_handler_proxy.cc
|
| +++ b/ui/events/blink/input_handler_proxy.cc
|
| @@ -797,7 +797,6 @@ InputHandlerProxy::EventDisposition InputHandlerProxy::HandleGestureFlingStart(
|
| TRACE_EVENT_SCOPE_THREAD);
|
| gesture_scroll_on_impl_thread_ = false;
|
| fling_may_be_active_on_main_thread_ = true;
|
| - client_->DidStartFlinging();
|
| return DID_NOT_HANDLE;
|
| }
|
| case cc::InputHandler::SCROLL_IGNORED: {
|
| @@ -821,12 +820,14 @@ InputHandlerProxy::EventDisposition InputHandlerProxy::HandleGestureFlingStart(
|
| InputHandlerProxy::EventDisposition InputHandlerProxy::HandleTouchStart(
|
| const blink::WebTouchEvent& touch_event) {
|
| EventDisposition result = DROP_EVENT;
|
| + cc::InputHandler::TouchStartHitResult hit_result =
|
| + cc::InputHandler::TouchStartHitResult::SAME_LAYER;
|
| for (size_t i = 0; i < touch_event.touchesLength; ++i) {
|
| if (touch_event.touches[i].state != WebTouchPoint::StatePressed)
|
| continue;
|
| - if (input_handler_->DoTouchEventsBlockScrollAt(
|
| - gfx::Point(touch_event.touches[i].position.x,
|
| - touch_event.touches[i].position.y))) {
|
| + hit_result = input_handler_->DoTouchEventsBlockScrollAt(gfx::Point(
|
| + touch_event.touches[i].position.x, touch_event.touches[i].position.y));
|
| + if (hit_result != cc::InputHandler::HANDLER) {
|
| result = DID_NOT_HANDLE;
|
| break;
|
| }
|
| @@ -876,7 +877,14 @@ InputHandlerProxy::EventDisposition InputHandlerProxy::HandleTouchStart(
|
| cc::EventListenerProperties::kNone) {
|
| result = DID_HANDLE_NON_BLOCKING;
|
| }
|
| + bool is_fling_on_impl = fling_curve_ && !fling_may_be_active_on_main_thread_;
|
| + bool touch_on_active_scroll_layer =
|
| + hit_result == cc::InputHandler::TouchStartHitResult::SAME_LAYER;
|
|
|
| + if (result == DID_NOT_HANDLE && touch_on_active_scroll_layer &&
|
| + is_fling_on_impl) {
|
| + result = DID_NOT_HANDLE_NON_BLOCKING;
|
| + }
|
| return result;
|
| }
|
|
|
| @@ -1301,6 +1309,7 @@ bool InputHandlerProxy::TouchpadFlingScroll(
|
| case DROP_EVENT:
|
| break;
|
| case DID_NOT_HANDLE:
|
| + case DID_NOT_HANDLE_NON_BLOCKING:
|
| TRACE_EVENT_INSTANT0("input",
|
| "InputHandlerProxy::scrollBy::AbortFling",
|
| TRACE_EVENT_SCOPE_THREAD);
|
| @@ -1312,7 +1321,6 @@ bool InputHandlerProxy::TouchpadFlingScroll(
|
| // the subarea but then is flung "under" the pointer.
|
| client_->TransferActiveWheelFlingAnimation(fling_parameters_);
|
| fling_may_be_active_on_main_thread_ = true;
|
| - client_->DidStartFlinging();
|
| CancelCurrentFlingWithoutNotifyingClient();
|
| break;
|
| }
|
|
|