| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "ui/events/gestures/gesture_recognizer_impl.h" | 5 #include "ui/events/gestures/gesture_recognizer_impl.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <limits> | 9 #include <limits> |
| 10 #include <memory> | 10 #include <memory> |
| (...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 237 consumer_gesture_provider_[consumer].get(); | 237 consumer_gesture_provider_[consumer].get(); |
| 238 if (!gesture_provider) { | 238 if (!gesture_provider) { |
| 239 gesture_provider = new GestureProviderAura(consumer, this); | 239 gesture_provider = new GestureProviderAura(consumer, this); |
| 240 consumer_gesture_provider_[consumer] = base::WrapUnique(gesture_provider); | 240 consumer_gesture_provider_[consumer] = base::WrapUnique(gesture_provider); |
| 241 } | 241 } |
| 242 return gesture_provider; | 242 return gesture_provider; |
| 243 } | 243 } |
| 244 | 244 |
| 245 void GestureRecognizerImpl::SetupTargets(const TouchEvent& event, | 245 void GestureRecognizerImpl::SetupTargets(const TouchEvent& event, |
| 246 GestureConsumer* target) { | 246 GestureConsumer* target) { |
| 247 event_to_gesture_provider_[event.unique_event_id()] = |
| 248 GetGestureProviderForConsumer(target); |
| 247 if (event.type() == ui::ET_TOUCH_RELEASED || | 249 if (event.type() == ui::ET_TOUCH_RELEASED || |
| 248 event.type() == ui::ET_TOUCH_CANCELLED) { | 250 event.type() == ui::ET_TOUCH_CANCELLED) { |
| 249 touch_id_target_.erase(event.pointer_details().id); | 251 touch_id_target_.erase(event.pointer_details().id); |
| 250 } else if (event.type() == ui::ET_TOUCH_PRESSED) { | 252 } else if (event.type() == ui::ET_TOUCH_PRESSED) { |
| 251 touch_id_target_[event.pointer_details().id] = target; | 253 touch_id_target_[event.pointer_details().id] = target; |
| 252 } | 254 } |
| 253 } | 255 } |
| 254 | 256 |
| 255 void GestureRecognizerImpl::DispatchGestureEvent( | 257 void GestureRecognizerImpl::DispatchGestureEvent( |
| 256 GestureConsumer* raw_input_consumer, | 258 GestureConsumer* raw_input_consumer, |
| (...skipping 16 matching lines...) Expand all Loading... |
| 273 | 275 |
| 274 GestureProviderAura* gesture_provider = | 276 GestureProviderAura* gesture_provider = |
| 275 GetGestureProviderForConsumer(consumer); | 277 GetGestureProviderForConsumer(consumer); |
| 276 return gesture_provider->OnTouchEvent(event); | 278 return gesture_provider->OnTouchEvent(event); |
| 277 } | 279 } |
| 278 | 280 |
| 279 GestureRecognizer::Gestures GestureRecognizerImpl::AckTouchEvent( | 281 GestureRecognizer::Gestures GestureRecognizerImpl::AckTouchEvent( |
| 280 uint32_t unique_event_id, | 282 uint32_t unique_event_id, |
| 281 ui::EventResult result, | 283 ui::EventResult result, |
| 282 GestureConsumer* consumer) { | 284 GestureConsumer* consumer) { |
| 283 GestureProviderAura* gesture_provider = | 285 GestureProviderAura* gesture_provider = nullptr; |
| 284 GetGestureProviderForConsumer(consumer); | 286 |
| 287 // Check if we have already processed this event before dispatch and have a |
| 288 // consumer associated with it. |
| 289 auto event_to_gesture_provider_iterator = |
| 290 event_to_gesture_provider_.find(unique_event_id); |
| 291 if (event_to_gesture_provider_iterator != event_to_gesture_provider_.end()) { |
| 292 gesture_provider = event_to_gesture_provider_iterator->second; |
| 293 event_to_gesture_provider_.erase(event_to_gesture_provider_iterator); |
| 294 } else { |
| 295 gesture_provider = GetGestureProviderForConsumer(consumer); |
| 296 } |
| 285 gesture_provider->OnTouchEventAck(unique_event_id, result != ER_UNHANDLED); | 297 gesture_provider->OnTouchEventAck(unique_event_id, result != ER_UNHANDLED); |
| 286 return gesture_provider->GetAndResetPendingGestures(); | 298 return gesture_provider->GetAndResetPendingGestures(); |
| 287 } | 299 } |
| 288 | 300 |
| 289 bool GestureRecognizerImpl::CleanupStateForConsumer( | 301 bool GestureRecognizerImpl::CleanupStateForConsumer( |
| 290 GestureConsumer* consumer) { | 302 GestureConsumer* consumer) { |
| 291 bool state_cleaned_up = false; | 303 bool state_cleaned_up = false; |
| 292 | 304 |
| 293 if (consumer_gesture_provider_.count(consumer)) { | 305 if (consumer_gesture_provider_.count(consumer)) { |
| 294 state_cleaned_up = true; | 306 state_cleaned_up = true; |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 353 std::vector<GestureEventHelper*>::iterator it; | 365 std::vector<GestureEventHelper*>::iterator it; |
| 354 for (it = helpers.begin(); it != helpers.end(); ++it) | 366 for (it = helpers.begin(); it != helpers.end(); ++it) |
| 355 gesture_recognizer->AddGestureEventHelper(*it); | 367 gesture_recognizer->AddGestureEventHelper(*it); |
| 356 | 368 |
| 357 helpers.clear(); | 369 helpers.clear(); |
| 358 g_gesture_recognizer_instance = | 370 g_gesture_recognizer_instance = |
| 359 static_cast<GestureRecognizerImpl*>(gesture_recognizer); | 371 static_cast<GestureRecognizerImpl*>(gesture_recognizer); |
| 360 } | 372 } |
| 361 | 373 |
| 362 } // namespace ui | 374 } // namespace ui |
| OLD | NEW |