Chromium Code Reviews| Index: content/browser/renderer_host/input/gesture_event_queue.cc |
| diff --git a/content/browser/renderer_host/input/gesture_event_queue.cc b/content/browser/renderer_host/input/gesture_event_queue.cc |
| index 15cda746b21da1b0c32c55e3ed40d47aad010373..49450f380a70184697c31c3dec93fafe5ac6101f 100644 |
| --- a/content/browser/renderer_host/input/gesture_event_queue.cc |
| +++ b/content/browser/renderer_host/input/gesture_event_queue.cc |
| @@ -186,6 +186,9 @@ void GestureEventQueue::QueueAndForwardIfNecessary( |
| case WebInputEvent::GestureScrollUpdate: |
| QueueScrollOrPinchAndForwardIfNecessary(gesture_event); |
| return; |
| + case WebInputEvent::GestureScrollBegin: |
| + if (FilterScrollBegin(gesture_event)) |
| + return; |
| default: |
| break; |
| } |
| @@ -195,6 +198,23 @@ void GestureEventQueue::QueueAndForwardIfNecessary( |
| client_->SendGestureEventImmediately(gesture_event); |
| } |
| +bool GestureEventQueue::FilterScrollBegin( |
| + const GestureEventWithLatencyInfo& gesture_event) { |
| + // If a synthetic scroll begin is encountered; it can cancel out a previous |
|
tdresser
2016/05/02 13:27:15
; -> ,
dtapuska
2016/05/02 13:57:24
Done.
|
| + // synthetic scroll end. This allows a later gesture scroll update to coalesce |
| + // with the previous one. crbug.com/607340. |
| + bool synthetic = gesture_event.event.data.scrollBegin.synthetic; |
| + if (synthetic && EventsInFlightCount() < coalesced_gesture_events_.size()) { |
|
tdresser
2016/05/02 13:27:15
Might be worth factoring out |EventsInFlightCount(
dtapuska
2016/05/02 13:57:24
Done.
|
| + GestureEventWithLatencyInfo* last_event = &coalesced_gesture_events_.back(); |
| + if (last_event->event.type == WebInputEvent::GestureScrollEnd && |
| + last_event->event.data.scrollEnd.synthetic) { |
| + coalesced_gesture_events_.pop_back(); |
| + return true; |
| + } |
| + } |
| + return false; |
| +} |
| + |
| void GestureEventQueue::ProcessGestureAck(InputEventAckState ack_result, |
| WebInputEvent::Type type, |
| const ui::LatencyInfo& latency) { |