Index: ui/aura/gestures/gesture_recognizer_unittest.cc |
diff --git a/ui/aura/gestures/gesture_recognizer_unittest.cc b/ui/aura/gestures/gesture_recognizer_unittest.cc |
index 4336d3baab5e0cab3c92018b7a290f660c0ca5be..5acc6ba516087fecb163d7e09a4f0a7eb1cc3b38 100644 |
--- a/ui/aura/gestures/gesture_recognizer_unittest.cc |
+++ b/ui/aura/gestures/gesture_recognizer_unittest.cc |
@@ -96,8 +96,8 @@ class GestureEventConsumeDelegate : public TestWindowDelegate { |
scroll_x_hint_(0), |
scroll_y_hint_(0), |
tap_count_(0), |
- wait_until_event_(ui::ET_UNKNOWN) { |
- } |
+ flags_(0), |
+ wait_until_event_(ui::ET_UNKNOWN) {} |
virtual ~GestureEventConsumeDelegate() {} |
@@ -137,6 +137,7 @@ class GestureEventConsumeDelegate : public TestWindowDelegate { |
scroll_y_hint_ = 0; |
tap_count_ = 0; |
scale_ = 0; |
+ flags_ = 0; |
} |
const std::vector<ui::EventType>& events() const { return events_; }; |
@@ -185,6 +186,7 @@ class GestureEventConsumeDelegate : public TestWindowDelegate { |
float scale() const { return scale_; } |
const gfx::Rect& bounding_box() const { return bounding_box_; } |
int tap_count() const { return tap_count_; } |
+ int flags() const { return flags_; } |
void WaitUntilReceivedGesture(ui::EventType type) { |
wait_until_event_ = type; |
@@ -195,6 +197,7 @@ class GestureEventConsumeDelegate : public TestWindowDelegate { |
virtual void OnGestureEvent(ui::GestureEvent* gesture) OVERRIDE { |
events_.push_back(gesture->type()); |
bounding_box_ = gesture->details().bounding_box(); |
+ flags_ = gesture->flags(); |
switch (gesture->type()) { |
case ui::ET_GESTURE_TAP: |
tap_location_ = gesture->location(); |
@@ -265,6 +268,9 @@ class GestureEventConsumeDelegate : public TestWindowDelegate { |
swipe_up_ = gesture->details().swipe_up(); |
swipe_down_ = gesture->details().swipe_down(); |
break; |
+ case ui::ET_SCROLL_FLING_CANCEL: |
+ // Only used in unified gesture detection. |
+ break; |
default: |
NOTREACHED(); |
} |
@@ -315,6 +321,7 @@ class GestureEventConsumeDelegate : public TestWindowDelegate { |
float scale_; |
gfx::Rect bounding_box_; |
int tap_count_; |
+ int flags_; |
ui::EventType wait_until_event_; |
@@ -528,7 +535,9 @@ class TimedEvents { |
int simulated_now_; |
public: |
- TimedEvents() : simulated_now_(0) { |
+ // Use a non-zero start time to pass DCHECKs which ensure events have had a |
+ // time assigned. |
+ TimedEvents() : simulated_now_(1) { |
} |
base::TimeDelta Now() { |
@@ -666,13 +675,23 @@ class RemoveOnTouchCancelHandler : public TestEventHandler { |
} // namespace |
-class GestureRecognizerTest : public AuraTestBase { |
+class GestureRecognizerTest : public AuraTestBase, |
+ public ::testing::WithParamInterface<bool> { |
public: |
GestureRecognizerTest() {} |
+ bool UsingUnifiedGR() { |
+ return GetParam(); |
+ } |
+ |
virtual void SetUp() OVERRIDE { |
- CommandLine::ForCurrentProcess()->AppendSwitch( |
- switches::kEnableScrollPrediction); |
+ // TODO(tdresser): Once unified GR has landed, only run these tests once. |
+ if (UsingUnifiedGR()) { |
+ // TODO(tdresser): use unified GR once it's available. |
+ // CommandLine::ForCurrentProcess()->AppendSwitch( |
+ // switches::kUseUnifiedGestureDetector); |
+ } |
+ |
AuraTestBase::SetUp(); |
} |
@@ -680,7 +699,7 @@ class GestureRecognizerTest : public AuraTestBase { |
}; |
// Check that appropriate touch events generate tap gesture events. |
-TEST_F(GestureRecognizerTest, GestureEventTap) { |
+TEST_P(GestureRecognizerTest, GestureEventTap) { |
scoped_ptr<GestureEventConsumeDelegate> delegate( |
new GestureEventConsumeDelegate()); |
TimedEvents tes; |
@@ -731,7 +750,7 @@ TEST_F(GestureRecognizerTest, GestureEventTap) { |
// Check that appropriate touch events generate tap gesture events |
// when information about the touch radii are provided. |
-TEST_F(GestureRecognizerTest, GestureEventTapRegion) { |
+TEST_P(GestureRecognizerTest, GestureEventTapRegion) { |
scoped_ptr<GestureEventConsumeDelegate> delegate( |
new GestureEventConsumeDelegate()); |
TimedEvents tes; |
@@ -971,7 +990,7 @@ TEST_F(GestureRecognizerTest, GestureEventTapRegion) { |
} |
// Check that appropriate touch events generate scroll gesture events. |
-TEST_F(GestureRecognizerTest, GestureEventScroll) { |
+TEST_P(GestureRecognizerTest, GestureEventScroll) { |
// We'll start by moving the touch point by (10.5, 10.5). We want 5 dips of |
// that distance to be consumed by the slop, so we set the slop radius to |
// sqrt(5 * 5 + 5 * 5). |
@@ -1015,14 +1034,15 @@ TEST_F(GestureRecognizerTest, GestureEventScroll) { |
// be empty, since it's a single point and the radius for testing is zero. |
EXPECT_TRUE(delegate->bounding_box().IsEmpty()); |
- // Move some more to generate a few more scroll updates. |
- tes.SendScrollEvent(event_processor(), 91, 192, kTouchId, delegate.get()); |
+ // Move some more to generate a few more scroll updates. Make sure that we get |
+ // out of the snap channel for the unified GR. |
+ tes.SendScrollEvent(event_processor(), 20, 120, kTouchId, delegate.get()); |
EXPECT_1_EVENT(delegate->events(), ui::ET_GESTURE_SCROLL_UPDATE); |
- EXPECT_FLOAT_EQ(-20.5, delegate->scroll_x()); |
- EXPECT_FLOAT_EQ(-19.5, delegate->scroll_y()); |
+ EXPECT_FLOAT_EQ(-91.5, delegate->scroll_x()); |
+ EXPECT_FLOAT_EQ(-91.5, delegate->scroll_y()); |
EXPECT_TRUE(delegate->bounding_box().IsEmpty()); |
- tes.SendScrollEvent(event_processor(), 121, 196, kTouchId, delegate.get()); |
+ tes.SendScrollEvent(event_processor(), 50, 124, kTouchId, delegate.get()); |
EXPECT_1_EVENT(delegate->events(), ui::ET_GESTURE_SCROLL_UPDATE); |
EXPECT_EQ(30, delegate->scroll_x()); |
EXPECT_EQ(4, delegate->scroll_y()); |
@@ -1041,7 +1061,7 @@ TEST_F(GestureRecognizerTest, GestureEventScroll) { |
} |
// Check that predicted scroll update positions are correct. |
-TEST_F(GestureRecognizerTest, GestureEventScrollPrediction) { |
+TEST_P(GestureRecognizerTest, GestureEventScrollPrediction) { |
const double prediction_interval = 0.03; |
ui::GestureConfiguration::set_scroll_prediction_seconds(prediction_interval); |
// We'll start by moving the touch point by (5, 5). We want all of that |
@@ -1073,7 +1093,7 @@ TEST_F(GestureRecognizerTest, GestureEventScrollPrediction) { |
delegate->Reset(); |
// Get rid of touch slop. |
- ui::TouchEvent move(ui::ET_TOUCH_MOVED, gfx::Point(101, 201), |
+ ui::TouchEvent move(ui::ET_TOUCH_MOVED, gfx::Point(111, 211), |
kTouchId, tes.Now()); |
DispatchEventUsingWindowDispatcher(&move); |
EXPECT_3_EVENTS(delegate->events(), |
@@ -1116,7 +1136,7 @@ TEST_F(GestureRecognizerTest, GestureEventScrollPrediction) { |
} |
// Check that the bounding box during a scroll event is correct. |
-TEST_F(GestureRecognizerTest, GestureEventScrollBoundingBox) { |
+TEST_P(GestureRecognizerTest, GestureEventScrollBoundingBox) { |
TimedEvents tes; |
for (int radius = 1; radius <= 10; ++radius) { |
ui::GestureConfiguration::set_default_radius(radius); |
@@ -1173,7 +1193,7 @@ TEST_F(GestureRecognizerTest, GestureEventScrollBoundingBox) { |
// Check Scroll End Events report correct velocities |
// if the user was on a horizontal rail |
-TEST_F(GestureRecognizerTest, GestureEventHorizontalRailFling) { |
+TEST_P(GestureRecognizerTest, GestureEventHorizontalRailFling) { |
scoped_ptr<GestureEventConsumeDelegate> delegate( |
new GestureEventConsumeDelegate()); |
TimedEvents tes; |
@@ -1187,7 +1207,7 @@ TEST_F(GestureRecognizerTest, GestureEventHorizontalRailFling) { |
DispatchEventUsingWindowDispatcher(&press); |
// Get rid of touch slop. |
- ui::TouchEvent move(ui::ET_TOUCH_MOVED, gfx::Point(5, 0), |
+ ui::TouchEvent move(ui::ET_TOUCH_MOVED, gfx::Point(10, 0), |
kTouchId, tes.Now()); |
DispatchEventUsingWindowDispatcher(&move); |
delegate->Reset(); |
@@ -1195,9 +1215,9 @@ TEST_F(GestureRecognizerTest, GestureEventHorizontalRailFling) { |
// Move the touch-point horizontally enough that it is considered a |
// horizontal scroll. |
- tes.SendScrollEvent(event_processor(), 25, 1, kTouchId, delegate.get()); |
- EXPECT_EQ(0, delegate->scroll_y()); |
- EXPECT_EQ(20, delegate->scroll_x()); |
+ tes.SendScrollEvent(event_processor(), 30, 1, kTouchId, delegate.get()); |
+ EXPECT_FLOAT_EQ(0, delegate->scroll_y()); |
+ EXPECT_FLOAT_EQ(20, delegate->scroll_x()); |
// Get a high x velocity, while still staying on the rail |
tes.SendScrollEvents(event_processor(), 1, 1, |
@@ -1218,7 +1238,7 @@ TEST_F(GestureRecognizerTest, GestureEventHorizontalRailFling) { |
// Check Scroll End Events report correct velocities |
// if the user was on a vertical rail |
-TEST_F(GestureRecognizerTest, GestureEventVerticalRailFling) { |
+TEST_P(GestureRecognizerTest, GestureEventVerticalRailFling) { |
scoped_ptr<GestureEventConsumeDelegate> delegate( |
new GestureEventConsumeDelegate()); |
TimedEvents tes; |
@@ -1232,14 +1252,14 @@ TEST_F(GestureRecognizerTest, GestureEventVerticalRailFling) { |
DispatchEventUsingWindowDispatcher(&press); |
// Get rid of touch slop. |
- ui::TouchEvent move(ui::ET_TOUCH_MOVED, gfx::Point(0, 5), |
+ ui::TouchEvent move(ui::ET_TOUCH_MOVED, gfx::Point(0, 10), |
kTouchId, tes.Now()); |
DispatchEventUsingWindowDispatcher(&move); |
delegate->Reset(); |
// Move the touch-point vertically enough that it is considered a |
// vertical scroll. |
- tes.SendScrollEvent(event_processor(), 1, 25, kTouchId, delegate.get()); |
+ tes.SendScrollEvent(event_processor(), 1, 30, kTouchId, delegate.get()); |
EXPECT_EQ(20, delegate->scroll_y()); |
EXPECT_EQ(0, delegate->scroll_x()); |
EXPECT_EQ(0, delegate->scroll_velocity_x()); |
@@ -1262,9 +1282,9 @@ TEST_F(GestureRecognizerTest, GestureEventVerticalRailFling) { |
EXPECT_GT(delegate->velocity_y(), 0); |
} |
-// Check Scroll End Events reports zero velocities |
-// if the user is not on a rail |
-TEST_F(GestureRecognizerTest, GestureEventNonRailFling) { |
+// Check Scroll End Events report non-zero velocities if the user is not on a |
+// rail |
+TEST_P(GestureRecognizerTest, GestureEventNonRailFling) { |
ui::GestureConfiguration::set_max_touch_move_in_pixels_for_click(0); |
scoped_ptr<GestureEventConsumeDelegate> delegate( |
new GestureEventConsumeDelegate()); |
@@ -1278,10 +1298,11 @@ TEST_F(GestureRecognizerTest, GestureEventNonRailFling) { |
kTouchId, tes.Now()); |
DispatchEventUsingWindowDispatcher(&press); |
- // Move the touch-point such that a non-rail scroll begins |
- tes.SendScrollEvent(event_processor(), 20, 20, kTouchId, delegate.get()); |
- EXPECT_EQ(20, delegate->scroll_y()); |
- EXPECT_EQ(20, delegate->scroll_x()); |
+ // Move the touch-point such that a non-rail scroll begins, and we're outside |
+ // the snap channel for the unified GR. |
+ tes.SendScrollEvent(event_processor(), 50, 50, kTouchId, delegate.get()); |
+ EXPECT_EQ(50, delegate->scroll_y()); |
+ EXPECT_EQ(50, delegate->scroll_x()); |
tes.SendScrollEvents(event_processor(), 1, 1, |
10, 100, kTouchId, 1, |
@@ -1300,10 +1321,9 @@ TEST_F(GestureRecognizerTest, GestureEventNonRailFling) { |
} |
// Check that appropriate touch events generate long press events |
-TEST_F(GestureRecognizerTest, GestureEventLongPress) { |
+TEST_P(GestureRecognizerTest, GestureEventLongPress) { |
scoped_ptr<GestureEventConsumeDelegate> delegate( |
new GestureEventConsumeDelegate()); |
- TimedEvents tes; |
const int kWindowWidth = 123; |
const int kWindowHeight = 45; |
const int kTouchId = 2; |
@@ -1318,8 +1338,10 @@ TEST_F(GestureRecognizerTest, GestureEventLongPress) { |
ScopedGestureRecognizerSetter gr_setter(gesture_recognizer); |
- ui::TouchEvent press1(ui::ET_TOUCH_PRESSED, gfx::Point(101, 201), |
- kTouchId, tes.Now()); |
+ ui::TouchEvent press1(ui::ET_TOUCH_PRESSED, |
+ gfx::Point(101, 201), |
+ kTouchId, |
+ ui::EventTimeForNow()); |
DispatchEventUsingWindowDispatcher(&press1); |
EXPECT_TRUE(delegate->tap_down()); |
EXPECT_TRUE(delegate->begin()); |
@@ -1334,17 +1356,20 @@ TEST_F(GestureRecognizerTest, GestureEventLongPress) { |
EXPECT_FALSE(delegate->tap_cancel()); |
delegate->Reset(); |
- ui::TouchEvent release1(ui::ET_TOUCH_RELEASED, gfx::Point(101, 201), |
- kTouchId, tes.Now()); |
+ ui::TouchEvent release1(ui::ET_TOUCH_RELEASED, |
+ gfx::Point(101, 201), |
+ kTouchId, |
+ ui::EventTimeForNow()); |
DispatchEventUsingWindowDispatcher(&release1); |
EXPECT_FALSE(delegate->long_press()); |
- // Note the tap down isn't cancelled until the release |
+ // Note the tap cancel isn't dispatched until the release |
EXPECT_TRUE(delegate->tap_cancel()); |
+ EXPECT_FALSE(delegate->tap()); |
} |
// Check that scrolling cancels a long press |
-TEST_F(GestureRecognizerTest, GestureEventLongPressCancelledByScroll) { |
+TEST_P(GestureRecognizerTest, GestureEventLongPressCancelledByScroll) { |
scoped_ptr<GestureEventConsumeDelegate> delegate( |
new GestureEventConsumeDelegate()); |
TimedEvents tes; |
@@ -1391,10 +1416,9 @@ TEST_F(GestureRecognizerTest, GestureEventLongPressCancelledByScroll) { |
} |
// Check that appropriate touch events generate long tap events |
-TEST_F(GestureRecognizerTest, GestureEventLongTap) { |
+TEST_P(GestureRecognizerTest, GestureEventLongTap) { |
scoped_ptr<GestureEventConsumeDelegate> delegate( |
new GestureEventConsumeDelegate()); |
- TimedEvents tes; |
const int kWindowWidth = 123; |
const int kWindowHeight = 45; |
const int kTouchId = 2; |
@@ -1409,8 +1433,10 @@ TEST_F(GestureRecognizerTest, GestureEventLongTap) { |
ScopedGestureRecognizerSetter gr_setter(gesture_recognizer); |
- ui::TouchEvent press1(ui::ET_TOUCH_PRESSED, gfx::Point(101, 201), |
- kTouchId, tes.Now()); |
+ ui::TouchEvent press1(ui::ET_TOUCH_PRESSED, |
+ gfx::Point(101, 201), |
+ kTouchId, |
+ ui::EventTimeForNow()); |
DispatchEventUsingWindowDispatcher(&press1); |
EXPECT_TRUE(delegate->tap_down()); |
EXPECT_TRUE(delegate->begin()); |
@@ -1425,18 +1451,26 @@ TEST_F(GestureRecognizerTest, GestureEventLongTap) { |
EXPECT_FALSE(delegate->tap_cancel()); |
delegate->Reset(); |
- ui::TouchEvent release1(ui::ET_TOUCH_RELEASED, gfx::Point(101, 201), |
- kTouchId, tes.Now()); |
+ ui::TouchEvent release1(ui::ET_TOUCH_RELEASED, |
+ gfx::Point(101, 201), |
+ kTouchId, |
+ ui::EventTimeForNow()); |
DispatchEventUsingWindowDispatcher(&release1); |
EXPECT_FALSE(delegate->long_press()); |
EXPECT_TRUE(delegate->long_tap()); |
- // Note the tap down isn't cancelled until the release |
+ // Note the tap cancel isn't dispatched until the release |
EXPECT_TRUE(delegate->tap_cancel()); |
+ EXPECT_FALSE(delegate->tap()); |
} |
// Check that second tap cancels a long press |
-TEST_F(GestureRecognizerTest, GestureEventLongPressCancelledBySecondTap) { |
+TEST_P(GestureRecognizerTest, GestureEventLongPressCancelledBySecondTap) { |
+ // TODO(tdresser): enable this test with unified GR once two finger tap is |
+ // supported. See crbug.com/354396. |
+ if (UsingUnifiedGR()) |
+ return; |
+ |
scoped_ptr<GestureEventConsumeDelegate> delegate( |
new GestureEventConsumeDelegate()); |
TimedEvents tes; |
@@ -1493,7 +1527,7 @@ TEST_F(GestureRecognizerTest, GestureEventLongPressCancelledBySecondTap) { |
// Check that horizontal scroll gestures cause scrolls on horizontal rails. |
// Also tests that horizontal rails can be broken. |
-TEST_F(GestureRecognizerTest, GestureEventHorizontalRailScroll) { |
+TEST_P(GestureRecognizerTest, GestureEventHorizontalRailScroll) { |
scoped_ptr<GestureEventConsumeDelegate> delegate( |
new GestureEventConsumeDelegate()); |
TimedEvents tes; |
@@ -1515,7 +1549,7 @@ TEST_F(GestureRecognizerTest, GestureEventHorizontalRailScroll) { |
// Move the touch-point horizontally enough that it is considered a |
// horizontal scroll. |
- tes.SendScrollEvent(event_processor(), 25, 1, kTouchId, delegate.get()); |
+ tes.SendScrollEvent(event_processor(), 25, 0, kTouchId, delegate.get()); |
EXPECT_EQ(0, delegate->scroll_y()); |
EXPECT_EQ(20, delegate->scroll_x()); |
@@ -1543,7 +1577,7 @@ TEST_F(GestureRecognizerTest, GestureEventHorizontalRailScroll) { |
// Check that vertical scroll gestures cause scrolls on vertical rails. |
// Also tests that vertical rails can be broken. |
-TEST_F(GestureRecognizerTest, GestureEventVerticalRailScroll) { |
+TEST_P(GestureRecognizerTest, GestureEventVerticalRailScroll) { |
scoped_ptr<GestureEventConsumeDelegate> delegate( |
new GestureEventConsumeDelegate()); |
TimedEvents tes; |
@@ -1564,7 +1598,7 @@ TEST_F(GestureRecognizerTest, GestureEventVerticalRailScroll) { |
// Move the touch-point vertically enough that it is considered a |
// vertical scroll. |
- tes.SendScrollEvent(event_processor(), 1, 25, kTouchId, delegate.get()); |
+ tes.SendScrollEvent(event_processor(), 0, 25, kTouchId, delegate.get()); |
EXPECT_EQ(0, delegate->scroll_x()); |
EXPECT_EQ(20, delegate->scroll_y()); |
@@ -1591,7 +1625,7 @@ TEST_F(GestureRecognizerTest, GestureEventVerticalRailScroll) { |
EXPECT_EQ(5, delegate->scroll_y()); |
} |
-TEST_F(GestureRecognizerTest, GestureTapFollowedByScroll) { |
+TEST_P(GestureRecognizerTest, GestureTapFollowedByScroll) { |
// We'll start by moving the touch point by (5, 5). We want all of that |
// distance to be consumed by the slop, so we set the slop radius to |
// sqrt(5 * 5 + 5 * 5). |
@@ -1647,14 +1681,14 @@ TEST_F(GestureRecognizerTest, GestureTapFollowedByScroll) { |
EXPECT_FALSE(delegate->scroll_end()); |
// Get rid of touch slop. |
- ui::TouchEvent move_remove_slop(ui::ET_TOUCH_MOVED, gfx::Point(106, 206), |
+ ui::TouchEvent move_remove_slop(ui::ET_TOUCH_MOVED, gfx::Point(116, 216), |
kTouchId, tes.Now()); |
DispatchEventUsingWindowDispatcher(&move_remove_slop); |
EXPECT_TRUE(delegate->tap_cancel()); |
EXPECT_TRUE(delegate->scroll_begin()); |
- EXPECT_FALSE(delegate->scroll_update()); |
- EXPECT_EQ(5, delegate->scroll_x_hint()); |
- EXPECT_EQ(5, delegate->scroll_y_hint()); |
+ EXPECT_TRUE(delegate->scroll_update()); |
+ EXPECT_EQ(15, delegate->scroll_x_hint()); |
+ EXPECT_EQ(15, delegate->scroll_y_hint()); |
delegate->Reset(); |
@@ -1672,8 +1706,8 @@ TEST_F(GestureRecognizerTest, GestureTapFollowedByScroll) { |
EXPECT_FALSE(delegate->scroll_begin()); |
EXPECT_TRUE(delegate->scroll_update()); |
EXPECT_FALSE(delegate->scroll_end()); |
- EXPECT_EQ(29, delegate->scroll_x()); |
- EXPECT_EQ(29, delegate->scroll_y()); |
+ EXPECT_EQ(19, delegate->scroll_x()); |
+ EXPECT_EQ(19, delegate->scroll_y()); |
// Move some more to generate a few more scroll updates. |
delegate->Reset(); |
@@ -1718,7 +1752,11 @@ TEST_F(GestureRecognizerTest, GestureTapFollowedByScroll) { |
EXPECT_TRUE(delegate->fling()); |
} |
-TEST_F(GestureRecognizerTest, AsynchronousGestureRecognition) { |
+TEST_P(GestureRecognizerTest, AsynchronousGestureRecognition) { |
+ // TODO(tdresser): enable this test with unified GR once two finger tap is |
+ // supported. See crbug.com/354396. |
+ if (UsingUnifiedGR()) |
+ return; |
scoped_ptr<QueueTouchEventDelegate> queued_delegate( |
new QueueTouchEventDelegate(host()->dispatcher())); |
const int kWindowWidth = 123; |
@@ -1910,7 +1948,12 @@ TEST_F(GestureRecognizerTest, AsynchronousGestureRecognition) { |
} |
// Check that appropriate touch events generate pinch gesture events. |
-TEST_F(GestureRecognizerTest, GestureEventPinchFromScroll) { |
+TEST_P(GestureRecognizerTest, GestureEventPinchFromScroll) { |
+ // Disabled for unified GR due to differences in when pinch begin is sent. The |
+ // Aura GR sends it earlier than is necessary. |
+ if (UsingUnifiedGR()) |
+ return; |
+ |
scoped_ptr<GestureEventConsumeDelegate> delegate( |
new GestureEventConsumeDelegate()); |
TimedEvents tes; |
@@ -1995,7 +2038,7 @@ TEST_F(GestureRecognizerTest, GestureEventPinchFromScroll) { |
EXPECT_TRUE(delegate->bounding_box().IsEmpty()); |
} |
-TEST_F(GestureRecognizerTest, GestureEventPinchFromScrollFromPinch) { |
+TEST_P(GestureRecognizerTest, GestureEventPinchFromScrollFromPinch) { |
scoped_ptr<GestureEventConsumeDelegate> delegate( |
new GestureEventConsumeDelegate()); |
TimedEvents tes; |
@@ -2043,16 +2086,20 @@ scoped_ptr<GestureEventConsumeDelegate> delegate( |
DispatchEventUsingWindowDispatcher(&press3); |
// Now the touch points are close. So we will go into two finger tap. |
// Move the touch-point enough to break two-finger-tap and enter pinch. |
- ui::TouchEvent move2(ui::ET_TOUCH_MOVED, gfx::Point(101, 202), |
+ ui::TouchEvent move2(ui::ET_TOUCH_MOVED, gfx::Point(101, 50), |
kTouchId1, tes.Now()); |
DispatchEventUsingWindowDispatcher(&move2); |
EXPECT_TRUE(delegate->pinch_begin()); |
- tes.SendScrollEvent(event_processor(), 130, 230, kTouchId1, delegate.get()); |
+ tes.SendScrollEvent(event_processor(), 350, 350, kTouchId1, delegate.get()); |
EXPECT_TRUE(delegate->pinch_update()); |
} |
-TEST_F(GestureRecognizerTest, GestureEventPinchFromTap) { |
+TEST_P(GestureRecognizerTest, GestureEventPinchFromTap) { |
+ // TODO(tdresser): enable this test with unified GR once two finger tap. |
+ if (UsingUnifiedGR()) |
+ return; |
+ |
scoped_ptr<GestureEventConsumeDelegate> delegate( |
new GestureEventConsumeDelegate()); |
TimedEvents tes; |
@@ -2126,7 +2173,7 @@ TEST_F(GestureRecognizerTest, GestureEventPinchFromTap) { |
EXPECT_TRUE(delegate->bounding_box().IsEmpty()); |
} |
-TEST_F(GestureRecognizerTest, GestureEventIgnoresDisconnectedEvents) { |
+TEST_P(GestureRecognizerTest, GestureEventIgnoresDisconnectedEvents) { |
scoped_ptr<GestureEventConsumeDelegate> delegate( |
new GestureEventConsumeDelegate()); |
TimedEvents tes; |
@@ -2140,7 +2187,7 @@ 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) { |
+TEST_P(GestureRecognizerTest, GestureEventTouchLockSelectsCorrectWindow) { |
ui::GestureRecognizer* gesture_recognizer = new ui::GestureRecognizerImpl(); |
TimedEvents tes; |
ScopedGestureRecognizerSetter gr_setter(gesture_recognizer); |
@@ -2226,7 +2273,7 @@ TEST_F(GestureRecognizerTest, GestureEventTouchLockSelectsCorrectWindow) { |
// Check that a touch's target will not be effected by a touch on a different |
// screen. |
-TEST_F(GestureRecognizerTest, GestureEventTouchLockIgnoresOtherScreens) { |
+TEST_P(GestureRecognizerTest, GestureEventTouchLockIgnoresOtherScreens) { |
scoped_ptr<GestureEventConsumeDelegate> delegate( |
new GestureEventConsumeDelegate()); |
gfx::Rect bounds(0, 0, 10, 10); |
@@ -2256,7 +2303,11 @@ TEST_F(GestureRecognizerTest, GestureEventTouchLockIgnoresOtherScreens) { |
// Check that touch events outside the root window are still handled |
// by the root window's gesture sequence. |
-TEST_F(GestureRecognizerTest, GestureEventOutsideRootWindowTap) { |
+TEST_P(GestureRecognizerTest, GestureEventOutsideRootWindowTap) { |
+ // TODO(tdresser): write a version of this test for the unified GR. |
+ if (UsingUnifiedGR()) |
+ return; |
+ |
TestGestureRecognizer* gesture_recognizer = |
new TestGestureRecognizer(); |
TimedEvents tes; |
@@ -2285,7 +2336,7 @@ TEST_F(GestureRecognizerTest, GestureEventOutsideRootWindowTap) { |
EXPECT_EQ(2, root_window_gesture_sequence->point_count()); |
} |
-TEST_F(GestureRecognizerTest, NoTapWithPreventDefaultedRelease) { |
+TEST_P(GestureRecognizerTest, NoTapWithPreventDefaultedRelease) { |
scoped_ptr<QueueTouchEventDelegate> delegate( |
new QueueTouchEventDelegate(host()->dispatcher())); |
TimedEvents tes; |
@@ -2312,7 +2363,12 @@ TEST_F(GestureRecognizerTest, NoTapWithPreventDefaultedRelease) { |
EXPECT_TRUE(delegate->tap_cancel()); |
} |
-TEST_F(GestureRecognizerTest, PinchScrollWithPreventDefaultedRelease) { |
+TEST_P(GestureRecognizerTest, PinchScrollWithPreventDefaultedRelease) { |
+ // Disabled for unified GR due to differences in when pinch begin is sent. The |
+ // Aura GR sends it earlier than is necessary. |
+ if (UsingUnifiedGR()) |
+ return; |
+ |
scoped_ptr<QueueTouchEventDelegate> delegate( |
new QueueTouchEventDelegate(host()->dispatcher())); |
TimedEvents tes; |
@@ -2406,7 +2462,7 @@ TEST_F(GestureRecognizerTest, PinchScrollWithPreventDefaultedRelease) { |
EXPECT_TRUE(delegate->end()); |
} |
-TEST_F(GestureRecognizerTest, GestureEndLocation) { |
+TEST_P(GestureRecognizerTest, GestureEndLocation) { |
GestureEventConsumeDelegate delegate; |
scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
&delegate, -1234, gfx::Rect(10, 10, 300, 300), root_window())); |
@@ -2424,7 +2480,7 @@ TEST_F(GestureRecognizerTest, GestureEndLocation) { |
delegate.gesture_end_location().ToString()); |
} |
-TEST_F(GestureRecognizerTest, CaptureSendsGestureEnd) { |
+TEST_P(GestureRecognizerTest, CaptureSendsGestureEnd) { |
scoped_ptr<GestureEventConsumeDelegate> delegate( |
new GestureEventConsumeDelegate()); |
TestGestureRecognizer* gesture_recognizer = |
@@ -2453,7 +2509,7 @@ TEST_F(GestureRecognizerTest, CaptureSendsGestureEnd) { |
// Check that previous touch actions that are completely finished (either |
// released or cancelled), do not receive extra synthetic cancels upon change of |
// capture. |
-TEST_F(GestureRecognizerTest, CaptureDoesNotCancelFinishedTouches) { |
+TEST_P(GestureRecognizerTest, CaptureDoesNotCancelFinishedTouches) { |
scoped_ptr<GestureEventConsumeDelegate> delegate( |
new GestureEventConsumeDelegate()); |
scoped_ptr<TestEventHandler> handler(new TestEventHandler); |
@@ -2506,7 +2562,8 @@ TEST_F(GestureRecognizerTest, CaptureDoesNotCancelFinishedTouches) { |
root_window()->RemovePreTargetHandler(handler.get()); |
} |
-TEST_F(GestureRecognizerTest, PressDoesNotCrash) { |
+// Tests that a press with the same touch id as an existing touch is ignored. |
+TEST_P(GestureRecognizerTest, PressDoesNotCrash) { |
scoped_ptr<GestureEventConsumeDelegate> delegate( |
new GestureEventConsumeDelegate()); |
TestGestureRecognizer* gesture_recognizer = |
@@ -2535,7 +2592,12 @@ TEST_F(GestureRecognizerTest, PressDoesNotCrash) { |
EXPECT_FALSE(delegate->scroll_begin()); |
} |
-TEST_F(GestureRecognizerTest, TwoFingerTap) { |
+TEST_P(GestureRecognizerTest, TwoFingerTap) { |
+ // TODO(tdresser): enable this test with unified GR once two finger tap is |
+ // supported. See crbug.com/354396. |
+ if (UsingUnifiedGR()) |
+ return; |
+ |
scoped_ptr<GestureEventConsumeDelegate> delegate( |
new GestureEventConsumeDelegate()); |
const int kWindowWidth = 123; |
@@ -2623,7 +2685,7 @@ TEST_F(GestureRecognizerTest, TwoFingerTap) { |
EXPECT_FALSE(delegate->two_finger_tap()); |
} |
-TEST_F(GestureRecognizerTest, TwoFingerTapExpired) { |
+TEST_P(GestureRecognizerTest, TwoFingerTapExpired) { |
scoped_ptr<GestureEventConsumeDelegate> delegate( |
new GestureEventConsumeDelegate()); |
const int kWindowWidth = 123; |
@@ -2664,7 +2726,12 @@ TEST_F(GestureRecognizerTest, TwoFingerTapExpired) { |
EXPECT_FALSE(delegate->two_finger_tap()); |
} |
-TEST_F(GestureRecognizerTest, TwoFingerTapChangesToPinch) { |
+TEST_P(GestureRecognizerTest, TwoFingerTapChangesToPinch) { |
+ // TODO(tdresser): enable this test with unified GR once two finger tap is |
+ // supported. See crbug.com/354396. |
+ if (UsingUnifiedGR()) |
+ return; |
+ |
scoped_ptr<GestureEventConsumeDelegate> delegate( |
new GestureEventConsumeDelegate()); |
const int kWindowWidth = 123; |
@@ -2736,7 +2803,12 @@ TEST_F(GestureRecognizerTest, TwoFingerTapChangesToPinch) { |
} |
} |
-TEST_F(GestureRecognizerTest, NoTwoFingerTapWhenFirstFingerHasScrolled) { |
+TEST_P(GestureRecognizerTest, NoTwoFingerTapWhenFirstFingerHasScrolled) { |
+ // Disabled for unified GR due to differences in when pinch begin is sent. The |
+ // Aura GR sends it earlier than is necessary. |
+ if (UsingUnifiedGR()) |
+ return; |
+ |
scoped_ptr<GestureEventConsumeDelegate> delegate( |
new GestureEventConsumeDelegate()); |
const int kWindowWidth = 123; |
@@ -2773,7 +2845,7 @@ TEST_F(GestureRecognizerTest, NoTwoFingerTapWhenFirstFingerHasScrolled) { |
EXPECT_TRUE(delegate->pinch_end()); |
} |
-TEST_F(GestureRecognizerTest, MultiFingerSwipe) { |
+TEST_P(GestureRecognizerTest, MultiFingerSwipe) { |
scoped_ptr<GestureEventConsumeDelegate> delegate( |
new GestureEventConsumeDelegate()); |
const int kWindowWidth = 123; |
@@ -2794,30 +2866,33 @@ TEST_F(GestureRecognizerTest, MultiFingerSwipe) { |
aura::test::EventGenerator generator(root_window(), window.get()); |
+ // The unified gesture recognizer assumes a finger has stopped if it hasn't |
+ // moved for too long. See ui/events/gesture_detection/velocity_tracker.cc's |
+ // kAssumePointerStoppedTimeMs. |
for (int count = 2; count <= kTouchPoints; ++count) { |
generator.GestureMultiFingerScroll( |
- count, points, 1000, kSteps, 0, -11 * kSteps); |
+ count, points, 10, kSteps, 0, -11 * kSteps); |
EXPECT_TRUE(delegate->swipe_up()); |
delegate->Reset(); |
generator.GestureMultiFingerScroll( |
- count, points, 1000, kSteps, 0, 11 * kSteps); |
+ count, points, 10, kSteps, 0, 11 * kSteps); |
EXPECT_TRUE(delegate->swipe_down()); |
delegate->Reset(); |
generator.GestureMultiFingerScroll( |
- count, points, 1000, kSteps, -11 * kSteps, 0); |
+ count, points, 10, kSteps, -11 * kSteps, 0); |
EXPECT_TRUE(delegate->swipe_left()); |
delegate->Reset(); |
generator.GestureMultiFingerScroll( |
- count, points, 1000, kSteps, 11 * kSteps, 0); |
+ count, points, 10, kSteps, 11 * kSteps, 0); |
EXPECT_TRUE(delegate->swipe_right()); |
delegate->Reset(); |
} |
} |
-TEST_F(GestureRecognizerTest, TwoFingerTapCancelled) { |
+TEST_P(GestureRecognizerTest, TwoFingerTapCancelled) { |
scoped_ptr<GestureEventConsumeDelegate> delegate( |
new GestureEventConsumeDelegate()); |
const int kWindowWidth = 123; |
@@ -2891,7 +2966,13 @@ TEST_F(GestureRecognizerTest, TwoFingerTapCancelled) { |
} |
} |
-TEST_F(GestureRecognizerTest, VeryWideTwoFingerTouchDownShouldBeAPinch) { |
+TEST_P(GestureRecognizerTest, VeryWideTwoFingerTouchDownShouldBeAPinch) { |
+ // Disabled for unified GR due to differences in when scroll update is |
+ // sent. The Aura GR will never send a ScrollUpdate with a ScrollBegin, but |
+ // the unified GR will. |
+ if (UsingUnifiedGR()) |
+ return; |
+ |
scoped_ptr<GestureEventConsumeDelegate> delegate( |
new GestureEventConsumeDelegate()); |
const int kWindowWidth = 523; |
@@ -2948,7 +3029,7 @@ TEST_F(GestureRecognizerTest, VeryWideTwoFingerTouchDownShouldBeAPinch) { |
// Verifies if a window is the target of multiple touch-ids and we hide the |
// window everything is cleaned up correctly. |
-TEST_F(GestureRecognizerTest, FlushAllOnHide) { |
+TEST_P(GestureRecognizerTest, FlushAllOnHide) { |
scoped_ptr<GestureEventConsumeDelegate> delegate( |
new GestureEventConsumeDelegate()); |
gfx::Rect bounds(0, 0, 200, 200); |
@@ -2971,7 +3052,11 @@ TEST_F(GestureRecognizerTest, FlushAllOnHide) { |
ui::GestureRecognizer::Get()->GetTouchLockedTarget(press2)); |
} |
-TEST_F(GestureRecognizerTest, LongPressTimerStopsOnPreventDefaultedTouchMoves) { |
+TEST_P(GestureRecognizerTest, LongPressTimerStopsOnPreventDefaultedTouchMoves) { |
+ // TODO(tdresser): write a version of this test for the unified GR. |
+ if (UsingUnifiedGR()) |
+ return; |
+ |
scoped_ptr<QueueTouchEventDelegate> delegate( |
new QueueTouchEventDelegate(host()->dispatcher())); |
const int kTouchId = 2; |
@@ -3031,7 +3116,7 @@ class ConsumesTouchMovesDelegate : public GestureEventConsumeDelegate { |
// Same as GestureEventScroll, but tests that the behavior is the same |
// even if all the touch-move events are consumed. |
-TEST_F(GestureRecognizerTest, GestureEventScrollTouchMoveConsumed) { |
+TEST_P(GestureRecognizerTest, GestureEventScrollTouchMoveConsumed) { |
scoped_ptr<ConsumesTouchMovesDelegate> delegate( |
new ConsumesTouchMovesDelegate()); |
const int kWindowWidth = 123; |
@@ -3083,7 +3168,12 @@ TEST_F(GestureRecognizerTest, GestureEventScrollTouchMoveConsumed) { |
} |
// Tests the behavior of 2F scroll when all the touch-move events are consumed. |
-TEST_F(GestureRecognizerTest, GestureEventScrollTwoFingerTouchMoveConsumed) { |
+TEST_P(GestureRecognizerTest, GestureEventScrollTwoFingerTouchMoveConsumed) { |
+ // TODO(tdresser): enable this test with unified GR once two finger tap is |
+ // supported. See crbug.com/354396. |
+ if (UsingUnifiedGR()) |
+ return; |
+ |
scoped_ptr<ConsumesTouchMovesDelegate> delegate( |
new ConsumesTouchMovesDelegate()); |
const int kWindowWidth = 123; |
@@ -3190,7 +3280,7 @@ TEST_F(GestureRecognizerTest, GestureEventScrollTwoFingerTouchMoveConsumed) { |
// Like as GestureEventTouchMoveConsumed but tests the different behavior |
// depending on whether the events were consumed before or after the scroll |
// started. |
-TEST_F(GestureRecognizerTest, GestureEventScrollTouchMovePartialConsumed) { |
+TEST_P(GestureRecognizerTest, GestureEventScrollTouchMovePartialConsumed) { |
scoped_ptr<ConsumesTouchMovesDelegate> delegate( |
new ConsumesTouchMovesDelegate()); |
const int kWindowWidth = 123; |
@@ -3284,7 +3374,12 @@ TEST_F(GestureRecognizerTest, GestureEventScrollTouchMovePartialConsumed) { |
} |
// Check that appropriate touch events generate double tap gesture events. |
-TEST_F(GestureRecognizerTest, GestureEventDoubleTap) { |
+TEST_P(GestureRecognizerTest, GestureEventDoubleTap) { |
+ // TODO(tdresser): enable this test with unified GR once double / triple tap |
+ // gestures work. See crbug.com/357270. |
+ if (UsingUnifiedGR()) |
+ return; |
+ |
scoped_ptr<GestureEventConsumeDelegate> delegate( |
new GestureEventConsumeDelegate()); |
const int kWindowWidth = 123; |
@@ -3325,7 +3420,12 @@ TEST_F(GestureRecognizerTest, GestureEventDoubleTap) { |
} |
// Check that appropriate touch events generate triple tap gesture events. |
-TEST_F(GestureRecognizerTest, GestureEventTripleTap) { |
+TEST_P(GestureRecognizerTest, GestureEventTripleTap) { |
+ // TODO(tdresser): enable this test with unified GR once double / triple tap |
+ // gestures work. See crbug.com/357270. |
+ if (UsingUnifiedGR()) |
+ return; |
+ |
scoped_ptr<GestureEventConsumeDelegate> delegate( |
new GestureEventConsumeDelegate()); |
const int kWindowWidth = 123; |
@@ -3380,7 +3480,7 @@ TEST_F(GestureRecognizerTest, GestureEventTripleTap) { |
} |
// Check that we don't get a double tap when the two taps are far apart. |
-TEST_F(GestureRecognizerTest, TwoTapsFarApart) { |
+TEST_P(GestureRecognizerTest, TwoTapsFarApart) { |
scoped_ptr<GestureEventConsumeDelegate> delegate( |
new GestureEventConsumeDelegate()); |
const int kWindowWidth = 123; |
@@ -3422,7 +3522,7 @@ TEST_F(GestureRecognizerTest, TwoTapsFarApart) { |
// Check that we don't get a double tap when the two taps have a long enough |
// delay in between. |
-TEST_F(GestureRecognizerTest, TwoTapsWithDelayBetween) { |
+TEST_P(GestureRecognizerTest, TwoTapsWithDelayBetween) { |
scoped_ptr<GestureEventConsumeDelegate> delegate( |
new GestureEventConsumeDelegate()); |
const int kWindowWidth = 123; |
@@ -3465,7 +3565,12 @@ TEST_F(GestureRecognizerTest, TwoTapsWithDelayBetween) { |
// Checks that if the bounding-box of a gesture changes because of change in |
// radius of a touch-point, and not because of change in position, then there |
// are not gesture events from that. |
-TEST_F(GestureRecognizerTest, BoundingBoxRadiusChange) { |
+TEST_P(GestureRecognizerTest, BoundingBoxRadiusChange) { |
+ // TODO(tdresser): enable this test with unified GR when (if?) bounding box |
+ // behavior is unified. |
+ if (UsingUnifiedGR()) |
+ return; |
+ |
scoped_ptr<GestureEventConsumeDelegate> delegate( |
new GestureEventConsumeDelegate()); |
const int kWindowWidth = 234; |
@@ -3519,7 +3624,7 @@ TEST_F(GestureRecognizerTest, BoundingBoxRadiusChange) { |
// Checks that slow scrolls deliver the correct deltas. |
// In particular, fix for http;//crbug.com/150573. |
-TEST_F(GestureRecognizerTest, NoDriftInScroll) { |
+TEST_P(GestureRecognizerTest, NoDriftInScroll) { |
ui::GestureConfiguration::set_max_touch_move_in_pixels_for_click(3); |
ui::GestureConfiguration::set_min_scroll_delta_squared(9); |
scoped_ptr<GestureEventConsumeDelegate> delegate( |
@@ -3577,7 +3682,7 @@ TEST_F(GestureRecognizerTest, NoDriftInScroll) { |
// Ensure that move events which are preventDefaulted will cause a tap |
// cancel gesture event to be fired if the move would normally cause a |
// scroll. See bug http://crbug.com/146397. |
-TEST_F(GestureRecognizerTest, GestureEventConsumedTouchMoveCanFireTapCancel) { |
+TEST_P(GestureRecognizerTest, GestureEventConsumedTouchMoveCanFireTapCancel) { |
scoped_ptr<ConsumesTouchMovesDelegate> delegate( |
new ConsumesTouchMovesDelegate()); |
const int kTouchId = 5; |
@@ -3607,7 +3712,7 @@ TEST_F(GestureRecognizerTest, GestureEventConsumedTouchMoveCanFireTapCancel) { |
EXPECT_FALSE(delegate->scroll_end()); |
} |
-TEST_F(GestureRecognizerTest, |
+TEST_P(GestureRecognizerTest, |
TransferEventDispatchesTouchCancel) { |
scoped_ptr<GestureEventConsumeDelegate> delegate( |
new GestureEventConsumeDelegate()); |
@@ -3650,7 +3755,7 @@ TEST_F(GestureRecognizerTest, |
} |
// Check that appropriate touch events generate show press events |
-TEST_F(GestureRecognizerTest, GestureEventShowPress) { |
+TEST_P(GestureRecognizerTest, GestureEventShowPress) { |
scoped_ptr<GestureEventConsumeDelegate> delegate( |
new GestureEventConsumeDelegate()); |
TimedEvents tes; |
@@ -3689,12 +3794,13 @@ TEST_F(GestureRecognizerTest, GestureEventShowPress) { |
DispatchEventUsingWindowDispatcher(&release1); |
EXPECT_FALSE(delegate->long_press()); |
- // Note the tap down isn't cancelled until the release |
- EXPECT_TRUE(delegate->tap_cancel()); |
+ // Note the tap isn't dispatched until the release |
+ EXPECT_FALSE(delegate->tap_cancel()); |
+ EXPECT_TRUE(delegate->tap()); |
} |
// Check that scrolling cancels a show press |
-TEST_F(GestureRecognizerTest, GestureEventShowPressCancelledByScroll) { |
+TEST_P(GestureRecognizerTest, GestureEventShowPressCancelledByScroll) { |
scoped_ptr<GestureEventConsumeDelegate> delegate( |
new GestureEventConsumeDelegate()); |
TimedEvents tes; |
@@ -3741,7 +3847,7 @@ TEST_F(GestureRecognizerTest, GestureEventShowPressCancelledByScroll) { |
} |
// Test that show press events are sent immediately on tap |
-TEST_F(GestureRecognizerTest, GestureEventShowPressSentOnTap) { |
+TEST_P(GestureRecognizerTest, GestureEventShowPressSentOnTap) { |
scoped_ptr<GestureEventConsumeDelegate> delegate( |
new GestureEventConsumeDelegate()); |
TimedEvents tes; |
@@ -3773,7 +3879,7 @@ TEST_F(GestureRecognizerTest, GestureEventShowPressSentOnTap) { |
} |
// Test that consuming the first move touch event prevents a scroll. |
-TEST_F(GestureRecognizerTest, GestureEventConsumedTouchMoveScrollTest) { |
+TEST_P(GestureRecognizerTest, GestureEventConsumedTouchMoveScrollTest) { |
scoped_ptr<QueueTouchEventDelegate> delegate( |
new QueueTouchEventDelegate(host()->dispatcher())); |
TimedEvents tes; |
@@ -3787,7 +3893,10 @@ TEST_F(GestureRecognizerTest, GestureEventConsumedTouchMoveScrollTest) { |
DispatchEventUsingWindowDispatcher(&press); |
delegate->ReceivedAck(); |
- ui::TouchEvent move1(ui::ET_TOUCH_MOVED, gfx::Point(2, 2), |
+ // A touch move within the slop region is never consumed in web contents. The |
+ // unified GR won't prevent scroll if a touch move within the slop region is |
+ // consumed, so make sure this touch move exceeds the slop region. |
+ ui::TouchEvent move1(ui::ET_TOUCH_MOVED, gfx::Point(10, 10), |
kTouchId, tes.Now()); |
DispatchEventUsingWindowDispatcher(&move1); |
delegate->ReceivedAckPreventDefaulted(); |
@@ -3803,7 +3912,12 @@ TEST_F(GestureRecognizerTest, GestureEventConsumedTouchMoveScrollTest) { |
// Test that consuming the first touch move event of a touch point doesn't |
// prevent pinching once an additional touch has been pressed. |
-TEST_F(GestureRecognizerTest, GestureEventConsumedTouchMovePinchTest) { |
+TEST_P(GestureRecognizerTest, GestureEventConsumedTouchMovePinchTest) { |
+ // Consuming moves within the touch slop and the the disposition handling of |
+ // pinch events behave differently between the Unified GR and the Aura GR. |
+ if (UsingUnifiedGR()) |
+ return; |
+ |
scoped_ptr<QueueTouchEventDelegate> delegate( |
new QueueTouchEventDelegate(host()->dispatcher())); |
TimedEvents tes; |
@@ -3860,7 +3974,7 @@ TEST_F(GestureRecognizerTest, GestureEventConsumedTouchMovePinchTest) { |
} |
// Test that consuming the first move touch doesn't prevent a tap. |
-TEST_F(GestureRecognizerTest, GestureEventConsumedTouchMoveTapTest) { |
+TEST_P(GestureRecognizerTest, GestureEventConsumedTouchMoveTapTest) { |
scoped_ptr<QueueTouchEventDelegate> delegate( |
new QueueTouchEventDelegate(host()->dispatcher())); |
TimedEvents tes; |
@@ -3888,7 +4002,7 @@ TEST_F(GestureRecognizerTest, GestureEventConsumedTouchMoveTapTest) { |
} |
// Test that consuming the first move touch doesn't prevent a long press. |
-TEST_F(GestureRecognizerTest, GestureEventConsumedTouchMoveLongPressTest) { |
+TEST_P(GestureRecognizerTest, GestureEventConsumedTouchMoveLongPressTest) { |
scoped_ptr<QueueTouchEventDelegate> delegate( |
new QueueTouchEventDelegate(host()->dispatcher())); |
TimedEvents tes; |
@@ -3922,7 +4036,11 @@ TEST_F(GestureRecognizerTest, GestureEventConsumedTouchMoveLongPressTest) { |
} |
// Tests that the deltas are correct when leaving the slop region very slowly. |
-TEST_F(GestureRecognizerTest, TestExceedingSlopSlowly) { |
+TEST_P(GestureRecognizerTest, TestExceedingSlopSlowly) { |
+ // Disabled for unified GR due to subtle differences in touch slop handling. |
+ if (UsingUnifiedGR()) |
+ return; |
+ |
ui::GestureConfiguration::set_max_touch_move_in_pixels_for_click(3); |
scoped_ptr<GestureEventConsumeDelegate> delegate( |
new GestureEventConsumeDelegate()); |
@@ -3980,7 +4098,7 @@ TEST_F(GestureRecognizerTest, TestExceedingSlopSlowly) { |
delegate->Reset(); |
} |
-TEST_F(GestureRecognizerTest, ScrollAlternatelyConsumedTest) { |
+TEST_P(GestureRecognizerTest, ScrollAlternatelyConsumedTest) { |
scoped_ptr<QueueTouchEventDelegate> delegate( |
new QueueTouchEventDelegate(host()->dispatcher())); |
TimedEvents tes; |
@@ -4039,7 +4157,13 @@ TEST_F(GestureRecognizerTest, ScrollAlternatelyConsumedTest) { |
} |
} |
-TEST_F(GestureRecognizerTest, PinchAlternatelyConsumedTest) { |
+TEST_P(GestureRecognizerTest, PinchAlternatelyConsumedTest) { |
+ // Disabled for unified GR due to differences in when scroll update is |
+ // sent. The Aura GR will never send a ScrollUpdate with a ScrollBegin, but |
+ // the unified GR will. |
+ if (UsingUnifiedGR()) |
+ return; |
+ |
scoped_ptr<QueueTouchEventDelegate> delegate( |
new QueueTouchEventDelegate(host()->dispatcher())); |
TimedEvents tes; |
@@ -4123,5 +4247,38 @@ TEST_F(GestureRecognizerTest, PinchAlternatelyConsumedTest) { |
} |
} |
+// Test that touch event flags are passed through to the gesture event. |
+TEST_P(GestureRecognizerTest, GestureEventFlagsPassedFromTouchEvent) { |
+ scoped_ptr<GestureEventConsumeDelegate> delegate( |
+ new GestureEventConsumeDelegate()); |
+ TimedEvents tes; |
+ const int kWindowWidth = 123; |
+ const int kWindowHeight = 45; |
+ const int kTouchId = 6; |
+ gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); |
+ scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
+ delegate.get(), -1234, bounds, root_window())); |
+ |
+ delegate->Reset(); |
+ |
+ ui::TouchEvent press1(ui::ET_TOUCH_PRESSED, gfx::Point(101, 201), |
+ kTouchId, tes.Now()); |
+ DispatchEventUsingWindowDispatcher(&press1); |
+ EXPECT_TRUE(delegate->tap_down()); |
+ |
+ int default_flags = delegate->flags(); |
+ |
+ ui::TouchEvent move1( |
+ ui::ET_TOUCH_MOVED, gfx::Point(397, 149), kTouchId, tes.LeapForward(50)); |
+ move1.set_flags(992); |
+ |
+ DispatchEventUsingWindowDispatcher(&move1); |
+ EXPECT_NE(default_flags, delegate->flags()); |
+} |
+ |
+INSTANTIATE_TEST_CASE_P(GestureRecognizer, |
+ GestureRecognizerTest, |
+ ::testing::Bool()); |
+ |
} // namespace test |
} // namespace aura |