Chromium Code Reviews| Index: ui/events/gestures/gesture_recognizer_impl.cc |
| diff --git a/ui/events/gestures/gesture_recognizer_impl.cc b/ui/events/gestures/gesture_recognizer_impl.cc |
| index 9be2e4188f841b3a7f8407e8c50000356a807eaa..0dbce96a0598e85d00095477f754daa02b1fd640 100644 |
| --- a/ui/events/gestures/gesture_recognizer_impl.cc |
| +++ b/ui/events/gestures/gesture_recognizer_impl.cc |
| @@ -271,6 +271,7 @@ bool GestureRecognizerImpl::ProcessTouchEventPreDispatch( |
| GestureProviderAura* gesture_provider = |
| GetGestureProviderForConsumer(consumer); |
| + event_to_gesture_provider_[event->unique_event_id()] = gesture_provider; |
| return gesture_provider->OnTouchEvent(event); |
| } |
| @@ -278,8 +279,16 @@ GestureRecognizer::Gestures GestureRecognizerImpl::AckTouchEvent( |
| uint32_t unique_event_id, |
| ui::EventResult result, |
| GestureConsumer* consumer) { |
| - GestureProviderAura* gesture_provider = |
| - GetGestureProviderForConsumer(consumer); |
| + GestureProviderAura* gesture_provider = nullptr; |
| + |
| + // Check if we have already processed this event before dispatch and have a |
| + // consumer associted with it. |
|
tdresser
2017/04/05 14:23:39
associted -> associated
malaykeshav
2017/04/06 20:50:32
Done
|
| + if (event_to_gesture_provider_.count(unique_event_id)) { |
| + gesture_provider = event_to_gesture_provider_[unique_event_id]; |
| + event_to_gesture_provider_.erase(unique_event_id); |
| + } else { |
| + gesture_provider = GetGestureProviderForConsumer(consumer); |
| + } |
| gesture_provider->OnTouchEventAck(unique_event_id, result != ER_UNHANDLED); |
| return gesture_provider->GetAndResetPendingGestures(); |
| } |