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

Unified Diff: content/browser/renderer_host/input/touch_action_filter_unittest.cc

Issue 93733005: Implement support for touch-action: pan-x/pan-y in chromium (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Apply jdduke CR feedback Created 7 years 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 side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698