Chromium Code Reviews| 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 f6863f6477538122f3537d991007c5c96c58b596..8915e1eab2080c0eca3dcefe3600e47f03c16156 100644 |
| --- a/content/browser/renderer_host/input/touch_action_filter_unittest.cc |
| +++ b/content/browser/renderer_host/input/touch_action_filter_unittest.cc |
| @@ -434,4 +434,66 @@ TEST(TouchActionFilterTest, Pinch) { |
| EXPECT_FALSE(filter.FilterGestureEvent(&scroll_end)); |
| } |
| +TEST(TouchActionFilterTest, DoubleTap) { |
| + TouchActionFilter filter; |
| + |
| + WebGestureEvent unconfirmed_tap = SyntheticWebGestureEventBuilder::Build( |
| + WebInputEvent::GestureTapUnconfirmed, |
| + WebGestureEvent::Touchscreen); |
| + WebGestureEvent tap = SyntheticWebGestureEventBuilder::Build( |
| + WebInputEvent::GestureTap, WebGestureEvent::Touchscreen); |
| + WebGestureEvent double_tap = SyntheticWebGestureEventBuilder::Build( |
| + WebInputEvent::GestureDoubleTap, |
| + WebGestureEvent::Touchscreen); |
| + |
| + // Double tap is disabled with any touch action other than auto. |
| + filter.OnSetTouchAction(TOUCH_ACTION_NONE); |
| + EXPECT_TRUE(filter.FilterGestureEvent(&double_tap)); |
| + EXPECT_FALSE(filter.FilterGestureEvent(&unconfirmed_tap)); |
| + EXPECT_EQ(unconfirmed_tap.type, WebInputEvent::GestureTap); |
| + EXPECT_TRUE(filter.FilterGestureEvent(&tap)); |
| + EXPECT_FALSE(filter.FilterGestureEvent(&tap)); |
| +} |
| + |
| +TEST(TouchActionFilterTest, CancelledTapWithoutDelay) { |
| + // A GestureTapUnconfirmed which is converted to a GestureTap prevents a |
| + // future GestureTapCancel. |
| + TouchActionFilter filter; |
| + WebGestureEvent unconfirmed_tap = SyntheticWebGestureEventBuilder::Build( |
| + WebInputEvent::GestureTapUnconfirmed, |
| + WebGestureEvent::Touchscreen); |
| + WebGestureEvent tap_cancel = SyntheticWebGestureEventBuilder::Build( |
| + WebInputEvent::GestureTapCancel, WebGestureEvent::Touchscreen); |
| + WebGestureEvent tap = SyntheticWebGestureEventBuilder::Build( |
| + WebInputEvent::GestureTap, WebGestureEvent::Touchscreen); |
| + |
| + filter.OnSetTouchAction(TOUCH_ACTION_NONE); |
| + EXPECT_FALSE(filter.FilterGestureEvent(&unconfirmed_tap)); |
| + EXPECT_EQ(unconfirmed_tap.type, WebInputEvent::GestureTap); |
| + EXPECT_TRUE(filter.FilterGestureEvent(&tap_cancel)); |
| + |
| + // Now that the previous tap is over, a future tap should not be filtered. |
| + EXPECT_FALSE(filter.FilterGestureEvent(&tap)); |
| +} |
| + |
| +TEST(TouchActionFilterTest, DoubleTapWithTouchActionAuto) { |
|
Rick Byers
2014/02/18 20:40:16
nit: move this test case up above the other two si
tdresser
2014/02/18 21:27:15
Done.
|
| + TouchActionFilter filter; |
| + |
| + WebGestureEvent unconfirmed_tap = SyntheticWebGestureEventBuilder::Build( |
| + WebInputEvent::GestureTapUnconfirmed, |
| + WebGestureEvent::Touchscreen); |
| + WebGestureEvent tap = SyntheticWebGestureEventBuilder::Build( |
| + WebInputEvent::GestureTap, WebGestureEvent::Touchscreen); |
| + WebGestureEvent double_tap = SyntheticWebGestureEventBuilder::Build( |
| + WebInputEvent::GestureDoubleTap, |
| + WebGestureEvent::Touchscreen); |
| + |
| + // Double tap is allowed with touch action auto. |
| + filter.OnSetTouchAction(TOUCH_ACTION_AUTO); |
| + EXPECT_FALSE(filter.FilterGestureEvent(&double_tap)); |
| + EXPECT_FALSE(filter.FilterGestureEvent(&unconfirmed_tap)); |
| + EXPECT_EQ(unconfirmed_tap.type, WebInputEvent::GestureTapUnconfirmed); |
| + EXPECT_FALSE(filter.FilterGestureEvent(&tap)); |
| +} |
| + |
| } // namespace content |