summaryrefslogtreecommitdiffstats
path: root/ui/aura/gestures
diff options
context:
space:
mode:
authorvarunjain@chromium.org <varunjain@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-10-21 07:35:33 +0000
committervarunjain@chromium.org <varunjain@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-10-21 07:35:33 +0000
commit0149e30bade7d3bdc74af97332c159db6d2225ef (patch)
treebc72094d33b504b8b3804832d794e767d4c7bbdd /ui/aura/gestures
parent5000cad89977a86c49961c2262cae416313c8b91 (diff)
downloadchromium_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.cc75
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),