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