Index: content/renderer/input/input_event_filter.cc |
diff --git a/content/renderer/input/input_event_filter.cc b/content/renderer/input/input_event_filter.cc |
index e62ee2cf941c784c96db901db93940ae26ccb648..e83071291434e3c2ef4286020d9da6e92ca69741 100644 |
--- a/content/renderer/input/input_event_filter.cc |
+++ b/content/renderer/input/input_event_filter.cc |
@@ -50,7 +50,9 @@ InputEventFilter::InputEventFilter( |
main_listener_(main_listener), |
sender_(NULL), |
target_task_runner_(target_task_runner), |
- current_overscroll_params_(NULL) { |
+ current_overscroll_params_(NULL), |
+ is_flinging_on_main_(false), |
+ is_flinging_on_impl_(false) { |
DCHECK(target_task_runner_.get()); |
} |
@@ -83,9 +85,18 @@ void InputEventFilter::DidOverscroll(int routing_id, |
} |
void InputEventFilter::DidStopFlinging(int routing_id) { |
+ is_flinging_on_main_ = false; |
+ is_flinging_on_impl_ = false; |
SendMessage(base::WrapUnique(new InputHostMsg_DidStopFlinging(routing_id))); |
} |
+void InputEventFilter::DidStartFlinging(bool is_on_impl) { |
+ if (is_on_impl) |
+ is_flinging_on_impl_ = true; |
+ else |
+ is_flinging_on_main_ = true; |
+} |
+ |
void InputEventFilter::NotifyInputEventHandled( |
int routing_id, |
blink::WebInputEvent::Type type) { |
@@ -183,8 +194,9 @@ void InputEventFilter::ForwardToHandler(const IPC::Message& message) { |
DCHECK(!overscroll_params); |
RouteQueueMap::iterator iter = route_queues_.find(routing_id); |
if (iter != route_queues_.end()) |
- send_ack &= iter->second->HandleEvent(event, latency_info, dispatch_type, |
- ack_state); |
+ send_ack &= iter->second->HandleEvent( |
+ event, latency_info, dispatch_type, ack_state, |
+ (is_flinging_on_main_ || is_flinging_on_impl_)); |
} |
if (!send_ack) |