diff options
author | varunjain@chromium.org <varunjain@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-10-21 07:35:33 +0000 |
---|---|---|
committer | varunjain@chromium.org <varunjain@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-10-21 07:35:33 +0000 |
commit | 0149e30bade7d3bdc74af97332c159db6d2225ef (patch) | |
tree | bc72094d33b504b8b3804832d794e767d4c7bbdd /ui/aura/gestures | |
parent | 5000cad89977a86c49961c2262cae416313c8b91 (diff) | |
download | chromium_src-0149e30bade7d3bdc74af97332c159db6d2225ef.zip chromium_src-0149e30bade7d3bdc74af97332c159db6d2225ef.tar.gz chromium_src-0149e30bade7d3bdc74af97332c159db6d2225ef.tar.bz2 |
Gesture recognizer must be a singleton accross all aura::RootWindows
BUG=279317
Review URL: https://codereview.chromium.org/25350006
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@229753 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ui/aura/gestures')
-rw-r--r-- | ui/aura/gestures/gesture_recognizer_unittest.cc | 75 |
1 files changed, 46 insertions, 29 deletions
diff --git a/ui/aura/gestures/gesture_recognizer_unittest.cc b/ui/aura/gestures/gesture_recognizer_unittest.cc index 38aca7f..a8db300 100644 --- a/ui/aura/gestures/gesture_recognizer_unittest.cc +++ b/ui/aura/gestures/gesture_recognizer_unittest.cc @@ -453,8 +453,8 @@ class TestOneShotGestureSequenceTimer class TimerTestGestureSequence : public ui::GestureSequence { public: - explicit TimerTestGestureSequence(ui::GestureEventHelper* helper) - : ui::GestureSequence(helper) { + explicit TimerTestGestureSequence(ui::GestureSequenceDelegate* delegate) + : ui::GestureSequence(delegate) { } void ForceTimeout() { @@ -476,8 +476,7 @@ class TimerTestGestureSequence : public ui::GestureSequence { class TestGestureRecognizer : public ui::GestureRecognizerImpl { public: - explicit TestGestureRecognizer(RootWindow* root_window) - : GestureRecognizerImpl(root_window) { + TestGestureRecognizer() : GestureRecognizerImpl() { } ui::GestureSequence* GetGestureSequenceForTesting(Window* window) { @@ -490,13 +489,12 @@ class TestGestureRecognizer : public ui::GestureRecognizerImpl { class TimerTestGestureRecognizer : public TestGestureRecognizer { public: - explicit TimerTestGestureRecognizer(RootWindow* root_window) - : TestGestureRecognizer(root_window) { + TimerTestGestureRecognizer() : TestGestureRecognizer() { } virtual ui::GestureSequence* CreateSequence( - ui::GestureEventHelper* helper) OVERRIDE { - return new TimerTestGestureSequence(helper); + ui::GestureSequenceDelegate* delegate) OVERRIDE { + return new TimerTestGestureSequence(delegate); } private: @@ -507,6 +505,26 @@ base::TimeDelta GetTime() { return ui::EventTimeForNow(); } +class ScopedGestureRecognizerSetter { + public: + // Takes ownership of |new_gr|. + explicit ScopedGestureRecognizerSetter(ui::GestureRecognizer* new_gr) + : new_gr_(new_gr) { + original_gr_ = ui::GestureRecognizer::Get(); + ui::SetGestureRecognizerForTesting(new_gr_.get()); + } + + virtual ~ScopedGestureRecognizerSetter() { + ui::SetGestureRecognizerForTesting(original_gr_); + } + + private: + ui::GestureRecognizer* original_gr_; + scoped_ptr<ui::GestureRecognizer> new_gr_; + + DISALLOW_COPY_AND_ASSIGN(ScopedGestureRecognizerSetter); +}; + class TimedEvents { private: int simulated_now_; @@ -1254,9 +1272,9 @@ TEST_F(GestureRecognizerTest, GestureEventLongPress) { delegate->Reset(); TimerTestGestureRecognizer* gesture_recognizer = - new TimerTestGestureRecognizer(root_window()); + new TimerTestGestureRecognizer(); - root_window()->SetGestureRecognizerForTesting(gesture_recognizer); + ScopedGestureRecognizerSetter gr_setter(gesture_recognizer); ui::TouchEvent press1(ui::ET_TOUCH_PRESSED, gfx::Point(101, 201), kTouchId, tes.Now()); @@ -1300,12 +1318,12 @@ TEST_F(GestureRecognizerTest, GestureEventLongPressCancelledByScroll) { delegate->Reset(); TimerTestGestureRecognizer* gesture_recognizer = - new TimerTestGestureRecognizer(root_window()); + new TimerTestGestureRecognizer(); TimerTestGestureSequence* gesture_sequence = static_cast<TimerTestGestureSequence*>( gesture_recognizer->GetGestureSequenceForTesting(window.get())); - root_window()->SetGestureRecognizerForTesting(gesture_recognizer); + ScopedGestureRecognizerSetter gr_setter(gesture_recognizer); ui::TouchEvent press1(ui::ET_TOUCH_PRESSED, gfx::Point(101, 201), kTouchId, tes.Now()); @@ -1346,9 +1364,9 @@ TEST_F(GestureRecognizerTest, GestureEventLongTap) { delegate->Reset(); TimerTestGestureRecognizer* gesture_recognizer = - new TimerTestGestureRecognizer(root_window()); + new TimerTestGestureRecognizer(); - root_window()->SetGestureRecognizerForTesting(gesture_recognizer); + ScopedGestureRecognizerSetter gr_setter(gesture_recognizer); ui::TouchEvent press1(ui::ET_TOUCH_PRESSED, gfx::Point(101, 201), kTouchId, tes.Now()); @@ -1392,12 +1410,12 @@ TEST_F(GestureRecognizerTest, GestureEventLongPressCancelledBySecondTap) { delegate.get(), -1234, bounds, root_window())); TimerTestGestureRecognizer* gesture_recognizer = - new TimerTestGestureRecognizer(root_window()); + new TimerTestGestureRecognizer(); TimerTestGestureSequence* gesture_sequence = static_cast<TimerTestGestureSequence*>( gesture_recognizer->GetGestureSequenceForTesting(window.get())); - root_window()->SetGestureRecognizerForTesting(gesture_recognizer); + ScopedGestureRecognizerSetter gr_setter(gesture_recognizer); delegate->Reset(); ui::TouchEvent press(ui::ET_TOUCH_PRESSED, gfx::Point(101, 201), @@ -2058,10 +2076,9 @@ TEST_F(GestureRecognizerTest, GestureEventIgnoresDisconnectedEvents) { // Check that a touch is locked to the window of the closest current touch // within max_separation_for_gesture_touches_in_pixels TEST_F(GestureRecognizerTest, GestureEventTouchLockSelectsCorrectWindow) { - ui::GestureRecognizer* gesture_recognizer = - new ui::GestureRecognizerImpl(root_window()); + ui::GestureRecognizer* gesture_recognizer = new ui::GestureRecognizerImpl(); TimedEvents tes; - root_window()->SetGestureRecognizerForTesting(gesture_recognizer); + ScopedGestureRecognizerSetter gr_setter(gesture_recognizer); ui::GestureConsumer* target; const int kNumWindows = 4; @@ -2146,9 +2163,9 @@ TEST_F(GestureRecognizerTest, GestureEventTouchLockSelectsCorrectWindow) { // by the root window's gesture sequence. TEST_F(GestureRecognizerTest, GestureEventOutsideRootWindowTap) { TestGestureRecognizer* gesture_recognizer = - new TestGestureRecognizer(root_window()); + new TestGestureRecognizer(); TimedEvents tes; - root_window()->SetGestureRecognizerForTesting(gesture_recognizer); + ScopedGestureRecognizerSetter gr_setter(gesture_recognizer); scoped_ptr<aura::Window> window(CreateTestWindowWithBounds( gfx::Rect(-100, -100, 2000, 2000), root_window())); @@ -2298,8 +2315,8 @@ TEST_F(GestureRecognizerTest, CaptureSendsGestureEnd) { scoped_ptr<GestureEventConsumeDelegate> delegate( new GestureEventConsumeDelegate()); TestGestureRecognizer* gesture_recognizer = - new TestGestureRecognizer(root_window()); - root_window()->SetGestureRecognizerForTesting(gesture_recognizer); + new TestGestureRecognizer(); + ScopedGestureRecognizerSetter gr_setter(gesture_recognizer); scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( delegate.get(), -1234, gfx::Rect(10, 10, 300, 300), root_window())); @@ -2378,8 +2395,8 @@ TEST_F(GestureRecognizerTest, PressDoesNotCrash) { scoped_ptr<GestureEventConsumeDelegate> delegate( new GestureEventConsumeDelegate()); TestGestureRecognizer* gesture_recognizer = - new TestGestureRecognizer(root_window()); - root_window()->SetGestureRecognizerForTesting(gesture_recognizer); + new TestGestureRecognizer(); + ScopedGestureRecognizerSetter gr_setter(gesture_recognizer); TimedEvents tes; scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( @@ -2815,9 +2832,9 @@ TEST_F(GestureRecognizerTest, FlushAllOnHide) { root_window()->AsRootWindowHostDelegate()->OnHostTouchEvent(&press2); window->Hide(); EXPECT_EQ(NULL, - root_window()->gesture_recognizer()->GetTouchLockedTarget(&press1)); + ui::GestureRecognizer::Get()->GetTouchLockedTarget(&press1)); EXPECT_EQ(NULL, - root_window()->gesture_recognizer()->GetTouchLockedTarget(&press2)); + ui::GestureRecognizer::Get()->GetTouchLockedTarget(&press2)); } TEST_F(GestureRecognizerTest, LongPressTimerStopsOnPreventDefaultedTouchMoves) { @@ -2831,12 +2848,12 @@ TEST_F(GestureRecognizerTest, LongPressTimerStopsOnPreventDefaultedTouchMoves) { TimedEvents tes; TimerTestGestureRecognizer* gesture_recognizer = - new TimerTestGestureRecognizer(root_window()); + new TimerTestGestureRecognizer(); TimerTestGestureSequence* gesture_sequence = static_cast<TimerTestGestureSequence*>( gesture_recognizer->GetGestureSequenceForTesting(window.get())); - root_window()->SetGestureRecognizerForTesting(gesture_recognizer); + ScopedGestureRecognizerSetter gr_setter(gesture_recognizer); delegate->Reset(); ui::TouchEvent press(ui::ET_TOUCH_PRESSED, gfx::Point(101, 201), |