Index: content/browser/renderer_host/input/touch_action_filter_unittest.cc |
diff --git a/content/browser/renderer_host/input/touch_action_filter_unittest.cc b/content/browser/renderer_host/input/touch_action_filter_unittest.cc |
index a07ef09dfbe9ed1dc5bf25eff458ec59b94221ee..a9f67fefe7176c5dabf52449b86be6b93cc0f83e 100644 |
--- a/content/browser/renderer_host/input/touch_action_filter_unittest.cc |
+++ b/content/browser/renderer_host/input/touch_action_filter_unittest.cc |
@@ -17,84 +17,340 @@ namespace content { |
TEST(TouchActionFilterTest, SimpleFilter) { |
TouchActionFilter filter; |
- const WebGestureEvent scroll_begin = SyntheticWebGestureEventBuilder::Build( |
- WebInputEvent::GestureScrollBegin, WebGestureEvent::Touchscreen); |
- const WebGestureEvent scroll_update = |
- SyntheticWebGestureEventBuilder::BuildScrollUpdate(0, 10, 0); |
- const WebGestureEvent scroll_end = SyntheticWebGestureEventBuilder::Build( |
+ WebGestureEvent scroll_begin = |
+ SyntheticWebGestureEventBuilder::BuildScrollBegin(2, 3); |
+ const float kDeltaX = 5; |
+ const float kDeltaY = 10; |
+ WebGestureEvent scroll_update = |
+ SyntheticWebGestureEventBuilder::BuildScrollUpdate(kDeltaX, kDeltaY, 0); |
+ WebGestureEvent scroll_end = SyntheticWebGestureEventBuilder::Build( |
WebInputEvent::GestureScrollEnd, WebGestureEvent::Touchscreen); |
- const WebGestureEvent tap = SyntheticWebGestureEventBuilder::Build( |
+ WebGestureEvent tap = SyntheticWebGestureEventBuilder::Build( |
WebInputEvent::GestureTap, WebGestureEvent::Touchscreen); |
// No events filtered by default. |
- EXPECT_FALSE(filter.FilterGestureEvent(scroll_begin)); |
- EXPECT_FALSE(filter.FilterGestureEvent(scroll_update)); |
- EXPECT_FALSE(filter.FilterGestureEvent(scroll_end)); |
- EXPECT_FALSE(filter.FilterGestureEvent(tap)); |
+ EXPECT_FALSE(filter.FilterGestureEvent(&scroll_begin)); |
+ EXPECT_FALSE(filter.FilterGestureEvent(&scroll_update)); |
+ EXPECT_EQ(kDeltaX, scroll_update.data.scrollUpdate.deltaX); |
+ EXPECT_EQ(kDeltaY, scroll_update.data.scrollUpdate.deltaY); |
+ EXPECT_FALSE(filter.FilterGestureEvent(&scroll_end)); |
+ EXPECT_FALSE(filter.FilterGestureEvent(&tap)); |
// TOUCH_ACTION_AUTO doesn't cause any filtering. |
filter.OnSetTouchAction(TOUCH_ACTION_AUTO); |
- EXPECT_FALSE(filter.FilterGestureEvent(scroll_begin)); |
- EXPECT_FALSE(filter.FilterGestureEvent(scroll_update)); |
- EXPECT_FALSE(filter.FilterGestureEvent(scroll_end)); |
+ EXPECT_FALSE(filter.FilterGestureEvent(&scroll_begin)); |
+ EXPECT_FALSE(filter.FilterGestureEvent(&scroll_update)); |
+ EXPECT_EQ(kDeltaX, scroll_update.data.scrollUpdate.deltaX); |
+ EXPECT_EQ(kDeltaY, scroll_update.data.scrollUpdate.deltaY); |
+ EXPECT_FALSE(filter.FilterGestureEvent(&scroll_end)); |
// TOUCH_ACTION_NONE filters out all scroll events, but no other events. |
filter.OnSetTouchAction(TOUCH_ACTION_NONE); |
- EXPECT_FALSE(filter.FilterGestureEvent(tap)); |
- EXPECT_TRUE(filter.FilterGestureEvent(scroll_begin)); |
- EXPECT_TRUE(filter.FilterGestureEvent(scroll_update)); |
- EXPECT_TRUE(filter.FilterGestureEvent(scroll_update)); |
- EXPECT_TRUE(filter.FilterGestureEvent(scroll_end)); |
+ EXPECT_FALSE(filter.FilterGestureEvent(&tap)); |
+ EXPECT_TRUE(filter.FilterGestureEvent(&scroll_begin)); |
+ EXPECT_TRUE(filter.FilterGestureEvent(&scroll_update)); |
+ EXPECT_TRUE(filter.FilterGestureEvent(&scroll_update)); |
+ EXPECT_EQ(kDeltaX, scroll_update.data.scrollUpdate.deltaX); |
+ EXPECT_EQ(kDeltaY, scroll_update.data.scrollUpdate.deltaY); |
+ EXPECT_TRUE(filter.FilterGestureEvent(&scroll_end)); |
// After the end of a gesture the state is reset. |
- EXPECT_FALSE(filter.FilterGestureEvent(scroll_begin)); |
- EXPECT_FALSE(filter.FilterGestureEvent(scroll_update)); |
- EXPECT_FALSE(filter.FilterGestureEvent(scroll_end)); |
+ EXPECT_FALSE(filter.FilterGestureEvent(&scroll_begin)); |
+ EXPECT_FALSE(filter.FilterGestureEvent(&scroll_update)); |
+ EXPECT_FALSE(filter.FilterGestureEvent(&scroll_end)); |
// Setting touch action doesn't impact any in-progress gestures. |
- EXPECT_FALSE(filter.FilterGestureEvent(scroll_begin)); |
+ EXPECT_FALSE(filter.FilterGestureEvent(&scroll_begin)); |
filter.OnSetTouchAction(TOUCH_ACTION_NONE); |
- EXPECT_FALSE(filter.FilterGestureEvent(scroll_update)); |
- EXPECT_FALSE(filter.FilterGestureEvent(scroll_end)); |
+ EXPECT_FALSE(filter.FilterGestureEvent(&scroll_update)); |
+ EXPECT_FALSE(filter.FilterGestureEvent(&scroll_end)); |
// And the state is still cleared for the next gesture. |
- EXPECT_FALSE(filter.FilterGestureEvent(scroll_begin)); |
- EXPECT_FALSE(filter.FilterGestureEvent(scroll_end)); |
+ EXPECT_FALSE(filter.FilterGestureEvent(&scroll_begin)); |
+ EXPECT_FALSE(filter.FilterGestureEvent(&scroll_end)); |
// Changing the touch action during a gesture has no effect. |
filter.OnSetTouchAction(TOUCH_ACTION_NONE); |
- EXPECT_TRUE(filter.FilterGestureEvent(scroll_begin)); |
+ EXPECT_TRUE(filter.FilterGestureEvent(&scroll_begin)); |
filter.OnSetTouchAction(TOUCH_ACTION_AUTO); |
- EXPECT_TRUE(filter.FilterGestureEvent(scroll_update)); |
- EXPECT_TRUE(filter.FilterGestureEvent(scroll_update)); |
- EXPECT_TRUE(filter.FilterGestureEvent(scroll_end)); |
+ EXPECT_TRUE(filter.FilterGestureEvent(&scroll_update)); |
+ EXPECT_TRUE(filter.FilterGestureEvent(&scroll_update)); |
+ EXPECT_EQ(kDeltaX, scroll_update.data.scrollUpdate.deltaX); |
+ EXPECT_EQ(kDeltaY, scroll_update.data.scrollUpdate.deltaY); |
+ EXPECT_TRUE(filter.FilterGestureEvent(&scroll_end)); |
+} |
+ |
+TEST(TouchActionFilterTest, Fling) { |
+ TouchActionFilter filter; |
+ |
+ WebGestureEvent scroll_begin = |
+ SyntheticWebGestureEventBuilder::BuildScrollBegin(2, 3); |
+ WebGestureEvent scroll_update = |
+ SyntheticWebGestureEventBuilder::BuildScrollUpdate(5, 10, 0); |
+ const float kFlingX = 7; |
+ const float kFlingY = -4; |
+ WebGestureEvent fling_start = SyntheticWebGestureEventBuilder::BuildFling( |
+ kFlingX, kFlingY, WebGestureEvent::Touchscreen); |
+ WebGestureEvent pad_fling = SyntheticWebGestureEventBuilder::BuildFling( |
+ kFlingX, kFlingY, WebGestureEvent::Touchpad); |
+ |
+ // TOUCH_ACTION_NONE filters out fling events. |
+ filter.OnSetTouchAction(TOUCH_ACTION_NONE); |
+ EXPECT_TRUE(filter.FilterGestureEvent(&scroll_begin)); |
+ EXPECT_TRUE(filter.FilterGestureEvent(&scroll_update)); |
+ EXPECT_TRUE(filter.FilterGestureEvent(&fling_start)); |
+ EXPECT_EQ(kFlingX, fling_start.data.flingStart.velocityX); |
+ EXPECT_EQ(kFlingY, fling_start.data.flingStart.velocityY); |
+ |
+ // After a fling the state is reset. |
+ EXPECT_FALSE(filter.FilterGestureEvent(&scroll_begin)); |
+ EXPECT_FALSE(filter.FilterGestureEvent(&scroll_update)); |
+ EXPECT_FALSE(filter.FilterGestureEvent(&fling_start)); |
+ |
+ // touchpad flings aren't filtered and don't reset state. |
+ filter.OnSetTouchAction(TOUCH_ACTION_NONE); |
+ EXPECT_TRUE(filter.FilterGestureEvent(&scroll_begin)); |
+ EXPECT_TRUE(filter.FilterGestureEvent(&scroll_update)); |
+ EXPECT_FALSE(filter.FilterGestureEvent(&pad_fling)); |
+ EXPECT_TRUE(filter.FilterGestureEvent(&fling_start)); |
+} |
+ |
+TEST(TouchActionFilterTest, PanX) { |
+ TouchActionFilter filter; |
+ const float kDX = 5; |
+ const float kDY = 10; |
+ const float kFlingX = 7; |
+ const float kFlingY = -4; |
+ WebGestureEvent scrollEnd = SyntheticWebGestureEventBuilder::Build( |
+ WebInputEvent::GestureScrollEnd, WebGestureEvent::Touchscreen); |
+ |
+ { |
+ // Scrolls with no direction hint are permitted in the X axis. |
+ filter.OnSetTouchAction(TOUCH_ACTION_PAN_X); |
+ |
+ WebGestureEvent scroll_begin = |
+ SyntheticWebGestureEventBuilder::BuildScrollBegin(0, 0); |
+ EXPECT_FALSE(filter.FilterGestureEvent(&scroll_begin)); |
+ |
+ WebGestureEvent scroll_update = |
+ SyntheticWebGestureEventBuilder::BuildScrollUpdate(kDX, kDY, 0); |
+ EXPECT_FALSE(filter.FilterGestureEvent(&scroll_update)); |
+ EXPECT_EQ(kDX, scroll_update.data.scrollUpdate.deltaX); |
+ EXPECT_EQ(0, scroll_update.data.scrollUpdate.deltaY); |
+ |
+ EXPECT_FALSE(filter.FilterGestureEvent(&scrollEnd)); |
+ } |
+ |
+ { |
+ // Scrolls hinted mostly in the X axis are permitted in that axis. |
+ filter.OnSetTouchAction(TOUCH_ACTION_PAN_X); |
+ WebGestureEvent scroll_begin = |
+ SyntheticWebGestureEventBuilder::BuildScrollBegin(-7, 6); |
+ EXPECT_FALSE(filter.FilterGestureEvent(&scroll_begin)); |
+ |
+ WebGestureEvent scroll_update = |
+ SyntheticWebGestureEventBuilder::BuildScrollUpdate(kDX, kDY, 0); |
+ EXPECT_FALSE(filter.FilterGestureEvent(&scroll_update)); |
+ EXPECT_EQ(kDX, scroll_update.data.scrollUpdate.deltaX); |
+ EXPECT_EQ(0, scroll_update.data.scrollUpdate.deltaY); |
+ |
+ WebGestureEvent scroll_update2 = |
+ SyntheticWebGestureEventBuilder::BuildScrollUpdate(-4, -2, 0); |
+ EXPECT_FALSE(filter.FilterGestureEvent(&scroll_update2)); |
+ EXPECT_EQ(-4, scroll_update2.data.scrollUpdate.deltaX); |
+ EXPECT_EQ(0, scroll_update2.data.scrollUpdate.deltaY); |
+ |
+ WebGestureEvent fling_start = SyntheticWebGestureEventBuilder::BuildFling( |
+ kFlingX, kFlingY, WebGestureEvent::Touchscreen); |
+ EXPECT_FALSE(filter.FilterGestureEvent(&fling_start)); |
+ EXPECT_EQ(kFlingX, fling_start.data.flingStart.velocityX); |
+ EXPECT_EQ(0, fling_start.data.flingStart.velocityY); |
+ } |
+ |
+ { |
+ // Scrolls hinted mostly in the Y direction are suppressed entirely. |
+ filter.OnSetTouchAction(TOUCH_ACTION_PAN_X); |
+ WebGestureEvent scroll_begin = |
+ SyntheticWebGestureEventBuilder::BuildScrollBegin(-7, 8); |
+ EXPECT_TRUE(filter.FilterGestureEvent(&scroll_begin)); |
+ |
+ WebGestureEvent scroll_update = |
+ SyntheticWebGestureEventBuilder::BuildScrollUpdate(kDX, kDY, 0); |
+ EXPECT_TRUE(filter.FilterGestureEvent(&scroll_update)); |
+ EXPECT_EQ(kDX, scroll_update.data.scrollUpdate.deltaX); |
+ EXPECT_EQ(kDY, scroll_update.data.scrollUpdate.deltaY); |
+ |
+ EXPECT_TRUE(filter.FilterGestureEvent(&scrollEnd)); |
+ } |
+} |
+ |
+TEST(TouchActionFilterTest, PanY) { |
+ TouchActionFilter filter; |
+ const float kDX = 5; |
+ const float kDY = 10; |
+ const float kFlingX = 7; |
+ const float kFlingY = -4; |
+ WebGestureEvent scrollEnd = SyntheticWebGestureEventBuilder::Build( |
+ WebInputEvent::GestureScrollEnd, WebGestureEvent::Touchscreen); |
+ |
+ { |
+ // Scrolls with no direction hint are permitted in the Y axis. |
+ filter.OnSetTouchAction(TOUCH_ACTION_PAN_Y); |
+ |
+ WebGestureEvent scroll_begin = |
+ SyntheticWebGestureEventBuilder::BuildScrollBegin(0, 0); |
+ EXPECT_FALSE(filter.FilterGestureEvent(&scroll_begin)); |
+ |
+ WebGestureEvent scroll_update = |
+ SyntheticWebGestureEventBuilder::BuildScrollUpdate(kDX, kDY, 0); |
+ EXPECT_FALSE(filter.FilterGestureEvent(&scroll_update)); |
+ EXPECT_EQ(0, scroll_update.data.scrollUpdate.deltaX); |
+ EXPECT_EQ(kDY, scroll_update.data.scrollUpdate.deltaY); |
+ |
+ EXPECT_FALSE(filter.FilterGestureEvent(&scrollEnd)); |
+ } |
+ |
+ { |
+ // Scrolls hinted mostly in the Y axis are permitted in that axis. |
+ filter.OnSetTouchAction(TOUCH_ACTION_PAN_Y); |
+ WebGestureEvent scroll_begin = |
+ SyntheticWebGestureEventBuilder::BuildScrollBegin(-6, 7); |
+ EXPECT_FALSE(filter.FilterGestureEvent(&scroll_begin)); |
+ |
+ WebGestureEvent scroll_update = |
+ SyntheticWebGestureEventBuilder::BuildScrollUpdate(kDX, kDY, 0); |
+ EXPECT_FALSE(filter.FilterGestureEvent(&scroll_update)); |
+ EXPECT_EQ(0, scroll_update.data.scrollUpdate.deltaX); |
+ EXPECT_EQ(kDY, scroll_update.data.scrollUpdate.deltaY); |
+ |
+ WebGestureEvent scroll_update2 = |
+ SyntheticWebGestureEventBuilder::BuildScrollUpdate(-4, -2, 0); |
+ EXPECT_FALSE(filter.FilterGestureEvent(&scroll_update2)); |
+ EXPECT_EQ(0, scroll_update2.data.scrollUpdate.deltaX); |
+ EXPECT_EQ(-2, scroll_update2.data.scrollUpdate.deltaY); |
+ |
+ WebGestureEvent fling_start = SyntheticWebGestureEventBuilder::BuildFling( |
+ kFlingX, kFlingY, WebGestureEvent::Touchscreen); |
+ EXPECT_FALSE(filter.FilterGestureEvent(&fling_start)); |
+ EXPECT_EQ(0, fling_start.data.flingStart.velocityX); |
+ EXPECT_EQ(kFlingY, fling_start.data.flingStart.velocityY); |
+ } |
+ |
+ { |
+ // Scrolls hinted mostly in the X direction are suppressed entirely. |
+ filter.OnSetTouchAction(TOUCH_ACTION_PAN_Y); |
+ WebGestureEvent scroll_begin = |
+ SyntheticWebGestureEventBuilder::BuildScrollBegin(-8, 7); |
+ EXPECT_TRUE(filter.FilterGestureEvent(&scroll_begin)); |
+ |
+ WebGestureEvent scroll_update = |
+ SyntheticWebGestureEventBuilder::BuildScrollUpdate(kDX, kDY, 0); |
+ EXPECT_TRUE(filter.FilterGestureEvent(&scroll_update)); |
+ EXPECT_EQ(kDX, scroll_update.data.scrollUpdate.deltaX); |
+ EXPECT_EQ(kDY, scroll_update.data.scrollUpdate.deltaY); |
+ |
+ EXPECT_TRUE(filter.FilterGestureEvent(&scrollEnd)); |
+ } |
+} |
+ |
+TEST(TouchActionFilterTest, PanXY) { |
+ TouchActionFilter filter; |
+ const float kDX = 5; |
+ const float kDY = 10; |
+ const float kFlingX = 7; |
+ const float kFlingY = -4; |
+ |
+ { |
+ // Scrolls hinted in the X axis are permitted and unmodified. |
+ filter.OnSetTouchAction(TOUCH_ACTION_PAN_X_Y); |
+ WebGestureEvent scroll_begin = |
+ SyntheticWebGestureEventBuilder::BuildScrollBegin(-7, 6); |
+ EXPECT_FALSE(filter.FilterGestureEvent(&scroll_begin)); |
+ |
+ WebGestureEvent scroll_update = |
+ SyntheticWebGestureEventBuilder::BuildScrollUpdate(kDX, kDY, 0); |
+ EXPECT_FALSE(filter.FilterGestureEvent(&scroll_update)); |
+ EXPECT_EQ(kDX, scroll_update.data.scrollUpdate.deltaX); |
+ EXPECT_EQ(kDY, scroll_update.data.scrollUpdate.deltaY); |
+ |
+ WebGestureEvent fling_start = SyntheticWebGestureEventBuilder::BuildFling( |
+ kFlingX, kFlingY, WebGestureEvent::Touchscreen); |
+ EXPECT_FALSE(filter.FilterGestureEvent(&fling_start)); |
+ EXPECT_EQ(kFlingX, fling_start.data.flingStart.velocityX); |
+ EXPECT_EQ(kFlingY, fling_start.data.flingStart.velocityY); |
+ } |
+ |
+ { |
+ // Scrolls hinted in the Y axis are permitted and unmodified. |
+ filter.OnSetTouchAction(TOUCH_ACTION_PAN_X_Y); |
+ WebGestureEvent scroll_begin = |
+ SyntheticWebGestureEventBuilder::BuildScrollBegin(-6, 7); |
+ EXPECT_FALSE(filter.FilterGestureEvent(&scroll_begin)); |
+ |
+ WebGestureEvent scroll_update = |
+ SyntheticWebGestureEventBuilder::BuildScrollUpdate(kDX, kDY, 0); |
+ EXPECT_FALSE(filter.FilterGestureEvent(&scroll_update)); |
+ EXPECT_EQ(kDX, scroll_update.data.scrollUpdate.deltaX); |
+ EXPECT_EQ(kDY, scroll_update.data.scrollUpdate.deltaY); |
+ |
+ WebGestureEvent fling_start = SyntheticWebGestureEventBuilder::BuildFling( |
+ kFlingX, kFlingY, WebGestureEvent::Touchscreen); |
+ EXPECT_FALSE(filter.FilterGestureEvent(&fling_start)); |
+ EXPECT_EQ(kFlingX, fling_start.data.flingStart.velocityX); |
+ EXPECT_EQ(kFlingY, fling_start.data.flingStart.velocityY); |
+ } |
+} |
+ |
+TEST(TouchActionFilterTest, Intersect) { |
+ EXPECT_EQ(TOUCH_ACTION_NONE, |
+ TouchActionFilter::Intersect(TOUCH_ACTION_NONE, TOUCH_ACTION_AUTO)); |
+ EXPECT_EQ(TOUCH_ACTION_NONE, |
+ TouchActionFilter::Intersect(TOUCH_ACTION_AUTO, TOUCH_ACTION_NONE)); |
+ EXPECT_EQ(TOUCH_ACTION_PAN_X, |
+ TouchActionFilter::Intersect(TOUCH_ACTION_AUTO, TOUCH_ACTION_PAN_X)); |
+ EXPECT_EQ(TOUCH_ACTION_PAN_Y, |
+ TouchActionFilter::Intersect(TOUCH_ACTION_PAN_Y, TOUCH_ACTION_AUTO)); |
+ EXPECT_EQ(TOUCH_ACTION_AUTO, |
+ TouchActionFilter::Intersect(TOUCH_ACTION_AUTO, TOUCH_ACTION_AUTO)); |
+ EXPECT_EQ(TOUCH_ACTION_PAN_X, |
+ TouchActionFilter::Intersect(TOUCH_ACTION_PAN_X_Y, TOUCH_ACTION_PAN_X)); |
+ EXPECT_EQ(TOUCH_ACTION_PAN_Y, |
+ TouchActionFilter::Intersect(TOUCH_ACTION_PAN_Y, TOUCH_ACTION_PAN_X_Y)); |
+ EXPECT_EQ(TOUCH_ACTION_PAN_X_Y, |
+ TouchActionFilter::Intersect(TOUCH_ACTION_PAN_X_Y, TOUCH_ACTION_AUTO)); |
+ EXPECT_EQ(TOUCH_ACTION_NONE, |
+ TouchActionFilter::Intersect(TOUCH_ACTION_PAN_X, TOUCH_ACTION_PAN_Y)); |
} |
TEST(TouchActionFilterTest, MultiTouch) { |
TouchActionFilter filter; |
- const WebGestureEvent scroll_begin = SyntheticWebGestureEventBuilder::Build( |
- WebInputEvent::GestureScrollBegin, WebGestureEvent::Touchscreen); |
- const WebGestureEvent scroll_update = |
- SyntheticWebGestureEventBuilder::BuildScrollUpdate(0, 10, 0); |
- const WebGestureEvent scrollEnd = SyntheticWebGestureEventBuilder::Build( |
+ WebGestureEvent scroll_begin = |
+ SyntheticWebGestureEventBuilder::BuildScrollBegin(2, 3); |
+ const float kDeltaX = 5; |
+ const float kDeltaY = 10; |
+ WebGestureEvent scroll_update = |
+ SyntheticWebGestureEventBuilder::BuildScrollUpdate(kDeltaX, kDeltaY, 0); |
+ WebGestureEvent scrollEnd = SyntheticWebGestureEventBuilder::Build( |
WebInputEvent::GestureScrollEnd, WebGestureEvent::Touchscreen); |
// For multiple points, the intersection is what matters. |
filter.OnSetTouchAction(TOUCH_ACTION_NONE); |
filter.OnSetTouchAction(TOUCH_ACTION_AUTO); |
- EXPECT_TRUE(filter.FilterGestureEvent(scroll_begin)); |
- EXPECT_TRUE(filter.FilterGestureEvent(scroll_update)); |
- EXPECT_TRUE(filter.FilterGestureEvent(scroll_update)); |
- EXPECT_TRUE(filter.FilterGestureEvent(scrollEnd)); |
+ EXPECT_TRUE(filter.FilterGestureEvent(&scroll_begin)); |
+ EXPECT_TRUE(filter.FilterGestureEvent(&scroll_update)); |
+ EXPECT_TRUE(filter.FilterGestureEvent(&scroll_update)); |
+ EXPECT_EQ(kDeltaX, scroll_update.data.scrollUpdate.deltaX); |
+ EXPECT_EQ(kDeltaY, scroll_update.data.scrollUpdate.deltaY); |
+ EXPECT_TRUE(filter.FilterGestureEvent(&scrollEnd)); |
- filter.OnSetTouchAction(TOUCH_ACTION_AUTO); |
- filter.OnSetTouchAction(TOUCH_ACTION_NONE); |
- filter.OnSetTouchAction(TOUCH_ACTION_AUTO); |
- EXPECT_TRUE(filter.FilterGestureEvent(scroll_begin)); |
- EXPECT_TRUE(filter.FilterGestureEvent(scroll_update)); |
- EXPECT_TRUE(filter.FilterGestureEvent(scroll_update)); |
- EXPECT_TRUE(filter.FilterGestureEvent(scrollEnd)); |
+ // Intersection of PAN_X and PAN_Y is NONE. |
+ filter.OnSetTouchAction(TOUCH_ACTION_PAN_X); |
+ filter.OnSetTouchAction(TOUCH_ACTION_PAN_Y); |
+ filter.OnSetTouchAction(TOUCH_ACTION_PAN_X_Y); |
+ EXPECT_TRUE(filter.FilterGestureEvent(&scroll_begin)); |
+ EXPECT_TRUE(filter.FilterGestureEvent(&scroll_update)); |
+ EXPECT_TRUE(filter.FilterGestureEvent(&scrollEnd)); |
} |
} // namespace content |