Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(83)

Side by Side Diff: ui/events/gestures/gesture_recognizer_impl.cc

Issue 306483003: Prepare for Unified Gesture Recognizer landing in Aura (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Disable UGR again. Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 <limits> 7 #include <limits>
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after
301 301
302 void GestureRecognizerImpl::DispatchGestureEvent(GestureEvent* event) { 302 void GestureRecognizerImpl::DispatchGestureEvent(GestureEvent* event) {
303 GestureConsumer* consumer = GetTargetForGestureEvent(*event); 303 GestureConsumer* consumer = GetTargetForGestureEvent(*event);
304 if (consumer) { 304 if (consumer) {
305 GestureEventHelper* helper = FindDispatchHelperForConsumer(consumer); 305 GestureEventHelper* helper = FindDispatchHelperForConsumer(consumer);
306 if (helper) 306 if (helper)
307 helper->DispatchGestureEvent(event); 307 helper->DispatchGestureEvent(event);
308 } 308 }
309 } 309 }
310 310
311 GestureSequence::Gestures* GestureRecognizerImpl::ProcessTouchEventForGesture( 311 ScopedVector<GestureEvent>* GestureRecognizerImpl::ProcessTouchEventForGesture(
312 const TouchEvent& event, 312 const TouchEvent& event,
313 ui::EventResult result, 313 ui::EventResult result,
314 GestureConsumer* target) { 314 GestureConsumer* target) {
315 SetupTargets(event, target); 315 SetupTargets(event, target);
316 316
317 if (!use_unified_gesture_detector_) { 317 if (!use_unified_gesture_detector_) {
318 GestureSequence* gesture_sequence = GetGestureSequenceForConsumer(target); 318 GestureSequence* gesture_sequence = GetGestureSequenceForConsumer(target);
319 return gesture_sequence->ProcessTouchEventForGesture(event, result); 319 return gesture_sequence->ProcessTouchEventForGesture(event, result);
320 } else { 320 } else {
321 GestureProviderAura* gesture_provider = 321 GestureProviderAura* gesture_provider =
322 GetGestureProviderForConsumer(target); 322 GetGestureProviderForConsumer(target);
323 // TODO(tdresser) - detect gestures eagerly. 323 // TODO(tdresser) - detect gestures eagerly.
324 if (!(result & ER_CONSUMED)) { 324 if (!(result & ER_CONSUMED)) {
325 if (gesture_provider->OnTouchEvent(event)) 325 if (gesture_provider->OnTouchEvent(event)) {
326 gesture_provider->OnTouchEventAck(result != ER_UNHANDLED); 326 gesture_provider->OnTouchEventAck(result != ER_UNHANDLED);
327 return gesture_provider->GetAndResetPendingGestures();
328 }
327 } 329 }
328 return NULL; 330 return NULL;
329 } 331 }
330 } 332 }
331 333
332 bool GestureRecognizerImpl::CleanupStateForConsumer( 334 bool GestureRecognizerImpl::CleanupStateForConsumer(
333 GestureConsumer* consumer) { 335 GestureConsumer* consumer) {
334 bool state_cleaned_up = false; 336 bool state_cleaned_up = false;
335 337
336 if (!use_unified_gesture_detector_) { 338 if (!use_unified_gesture_detector_) {
337 if (consumer_sequence_.count(consumer)) { 339 if (consumer_sequence_.count(consumer)) {
338 state_cleaned_up = true; 340 state_cleaned_up = true;
339 delete consumer_sequence_[consumer]; 341 delete consumer_sequence_[consumer];
340 consumer_sequence_.erase(consumer); 342 consumer_sequence_.erase(consumer);
341 } 343 }
342 } else { 344 } else {
343 if (consumer_gesture_provider_.count(consumer)) { 345 if (consumer_gesture_provider_.count(consumer)) {
344 state_cleaned_up = true; 346 state_cleaned_up = true;
345 // Don't immediately delete the GestureProvider, as we could be in the 347 delete consumer_gesture_provider_[consumer];
346 // middle of dispatching a set of gestures.
347 base::MessageLoop::current()->DeleteSoon(
348 FROM_HERE, consumer_gesture_provider_[consumer]);
349 consumer_gesture_provider_.erase(consumer); 348 consumer_gesture_provider_.erase(consumer);
350 } 349 }
351 } 350 }
352 351
353 state_cleaned_up |= RemoveConsumerFromMap(consumer, &touch_id_target_); 352 state_cleaned_up |= RemoveConsumerFromMap(consumer, &touch_id_target_);
354 state_cleaned_up |= 353 state_cleaned_up |=
355 RemoveConsumerFromMap(consumer, &touch_id_target_for_gestures_); 354 RemoveConsumerFromMap(consumer, &touch_id_target_for_gestures_);
356 return state_cleaned_up; 355 return state_cleaned_up;
357 } 356 }
358 357
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
413 std::vector<GestureEventHelper*>::iterator it; 412 std::vector<GestureEventHelper*>::iterator it;
414 for (it = helpers.begin(); it != helpers.end(); ++it) 413 for (it = helpers.begin(); it != helpers.end(); ++it)
415 gesture_recognizer->AddGestureEventHelper(*it); 414 gesture_recognizer->AddGestureEventHelper(*it);
416 415
417 helpers.clear(); 416 helpers.clear();
418 g_gesture_recognizer_instance = 417 g_gesture_recognizer_instance =
419 static_cast<GestureRecognizerImpl*>(gesture_recognizer); 418 static_cast<GestureRecognizerImpl*>(gesture_recognizer);
420 } 419 }
421 420
422 } // namespace ui 421 } // namespace ui
OLDNEW
« ui/events/gestures/gesture_provider_aura.cc ('K') | « ui/events/gestures/gesture_provider_aura.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698