Index: content/browser/renderer_host/input/input_router_impl_unittest.cc |
diff --git a/content/browser/renderer_host/input/input_router_impl_unittest.cc b/content/browser/renderer_host/input/input_router_impl_unittest.cc |
index 423cd6788abe2f54ff8cd35d968b3cd7159f4d6b..b09eee724175166f4d6309ec3677e84741f081b5 100644 |
--- a/content/browser/renderer_host/input/input_router_impl_unittest.cc |
+++ b/content/browser/renderer_host/input/input_router_impl_unittest.cc |
@@ -992,8 +992,12 @@ TEST_F(InputRouterImplTest, GestureShowPressIsInOrder) { |
} |
// Test that touch ack timeout behavior is properly configured via the command |
-// line, and toggled by the view update flags. |
+// line, and toggled by view update flags and allowed touch actions. |
TEST_F(InputRouterImplTest, TouchAckTimeoutConfigured) { |
+ // Unless explicitly supported via the command-line, the touch timeout should |
+ // be disabled. |
+ EXPECT_FALSE(TouchEventTimeoutEnabled()); |
+ |
CommandLine::ForCurrentProcess()->AppendSwitchASCII( |
switches::kTouchAckTimeoutDelayMs, "5"); |
TearDown(); |
@@ -1016,6 +1020,36 @@ TEST_F(InputRouterImplTest, TouchAckTimeoutConfigured) { |
input_router()->OnViewUpdated(InputRouter::VIEW_FLAGS_NONE); |
EXPECT_TRUE(TouchEventTimeoutEnabled()); |
+ |
+ // TOUCH_ACTION_NONE should disable the touch timeout. |
+ OnHasTouchEventHandlers(true); |
+ PressTouchPoint(1, 1); |
+ SendTouchEvent(); |
+ OnSetTouchAction(TOUCH_ACTION_NONE); |
+ EXPECT_FALSE(TouchEventTimeoutEnabled()); |
+ ReleaseTouchPoint(0); |
+ SendTouchEvent(); |
+ SendInputEventACK(WebInputEvent::TouchStart, INPUT_EVENT_ACK_STATE_CONSUMED); |
+ SendInputEventACK(WebInputEvent::TouchStart, INPUT_EVENT_ACK_STATE_CONSUMED); |
+ |
+ // As the touch-action is reset by a new touch sequence, the timeout behavior |
+ // should be restored. (Note that this is not entirely accurate: the timeout |
+ // will be enabled just *after* the new event has been forwarded from the |
+ // TouchEventQueue to the router, so the timeout won't actually take |
+ // meaningful effect until the following touch event is sent). |
Rick Byers
2014/03/05 21:24:23
We both agree we like this property. Perhaps make
jdduke (slow)
2014/03/06 00:15:25
Definitely, added a test.
|
+ PressTouchPoint(1, 1); |
+ SendTouchEvent(); |
+ EXPECT_TRUE(TouchEventTimeoutEnabled()); |
+ ReleaseTouchPoint(0); |
+ SendTouchEvent(); |
+ SendInputEventACK(WebInputEvent::TouchStart, INPUT_EVENT_ACK_STATE_CONSUMED); |
+ SendInputEventACK(WebInputEvent::TouchStart, INPUT_EVENT_ACK_STATE_CONSUMED); |
+ |
+ // Only TOUCH_ACTION_NONE should disable the timeout. |
+ PressTouchPoint(1, 1); |
+ SendTouchEvent(); |
+ OnSetTouchAction(TOUCH_ACTION_PAN_Y); |
+ EXPECT_TRUE(TouchEventTimeoutEnabled()); |
} |
// Test that TouchActionFilter::ResetTouchAction is called before the |