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); |
} |
} |
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; |
} |