Chromium Code Reviews| Index: content/renderer/input/input_handler_proxy.cc |
| diff --git a/content/renderer/input/input_handler_proxy.cc b/content/renderer/input/input_handler_proxy.cc |
| index fa95881c2f1528239cb7f92f94a60e52d056d045..d721dcfd6c2ec6f693f26e235222b0816548c0b5 100644 |
| --- a/content/renderer/input/input_handler_proxy.cc |
| +++ b/content/renderer/input/input_handler_proxy.cc |
| @@ -212,7 +212,7 @@ InputHandlerProxy::EventDisposition InputHandlerProxy::HandleInputEvent( |
| *static_cast<const WebGestureEvent*>(&event); |
| return HandleGestureFling(gesture_event); |
| } else if (event.type == WebInputEvent::GestureFlingCancel) { |
| - if (CancelCurrentFling()) |
| + if (CancelCurrentFling(true)) |
| return DID_HANDLE; |
| else if (!fling_may_be_active_on_main_thread_) |
| return DROP_EVENT; |
| @@ -228,7 +228,7 @@ InputHandlerProxy::EventDisposition InputHandlerProxy::HandleInputEvent( |
| } |
| return DROP_EVENT; |
| } else if (WebInputEvent::isKeyboardEventType(event.type)) { |
| - CancelCurrentFling(); |
| + CancelCurrentFling(true); |
| } else if (event.type == WebInputEvent::MouseMove) { |
| const WebMouseEvent& mouse_event = |
| *static_cast<const WebMouseEvent*>(&event); |
| @@ -346,12 +346,13 @@ void InputHandlerProxy::Animate(base::TimeTicks time) { |
| TRACE_EVENT_INSTANT0("renderer", |
| "InputHandlerProxy::animate::flingOver", |
| TRACE_EVENT_SCOPE_THREAD); |
| - CancelCurrentFling(); |
| + CancelCurrentFling(true); |
|
aelias_OOO_until_Jul13
2014/01/11 03:07:03
Also, a concrete bug here is that this is called w
jdduke (slow)
2014/01/15 21:50:05
Hmm, that should only hold for non-root flings. F
|
| } |
| } |
| void InputHandlerProxy::MainThreadHasStoppedFlinging() { |
| fling_may_be_active_on_main_thread_ = false; |
| + client_->DidStopFlinging(); |
| } |
| void InputHandlerProxy::DidOverscroll(const cc::DidOverscrollParams& params) { |
| @@ -369,7 +370,8 @@ void InputHandlerProxy::DidOverscroll(const cc::DidOverscrollParams& params) { |
| client_->DidOverscroll(params); |
| } |
| -bool InputHandlerProxy::CancelCurrentFling() { |
| +bool InputHandlerProxy::CancelCurrentFling( |
| + bool send_fling_stopped_notification) { |
| bool had_fling_animation = fling_curve_; |
| if (had_fling_animation && |
| fling_parameters_.sourceDevice == WebGestureEvent::Touchscreen) { |
| @@ -388,6 +390,8 @@ bool InputHandlerProxy::CancelCurrentFling() { |
| fling_curve_.reset(); |
| gesture_scroll_on_impl_thread_ = false; |
| fling_parameters_ = blink::WebActiveWheelFlingParameters(); |
| + if (send_fling_stopped_notification && had_fling_animation) |
| + client_->DidStopFlinging(); |
| return had_fling_animation; |
| } |
| @@ -423,7 +427,7 @@ bool InputHandlerProxy::TouchpadFlingScroll( |
| // the subarea but then is flung "under" the pointer. |
| client_->TransferActiveWheelFlingAnimation(fling_parameters_); |
| fling_may_be_active_on_main_thread_ = true; |
| - CancelCurrentFling(); |
| + CancelCurrentFling(false); |
| break; |
| } |