| 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 82d4ae8e0d544c1ea709669f073886e11d3c6bed..b3385b3c79e7692d12186b430375ffed38fe166e 100644
|
| --- a/content/browser/renderer_host/input/input_router_impl_unittest.cc
|
| +++ b/content/browser/renderer_host/input/input_router_impl_unittest.cc
|
| @@ -144,7 +144,7 @@ bool EventListIsSubset(const ScopedVector<ui::TouchEvent>& subset,
|
|
|
| class InputRouterImplTest : public testing::Test {
|
| public:
|
| - InputRouterImplTest(bool raf_aligned_touch = false) {
|
| + InputRouterImplTest(bool raf_aligned_touch = true) {
|
| if (raf_aligned_touch) {
|
| feature_list_.InitFromCommandLine(
|
| features::kRafAlignedTouchInputEvents.name, "");
|
| @@ -370,9 +370,9 @@ class InputRouterImplTest : public testing::Test {
|
| std::unique_ptr<TestBrowserContext> browser_context_;
|
| };
|
|
|
| -class InputRouterImplRafAlignedTouchEnabledTest : public InputRouterImplTest {
|
| +class InputRouterImplRafAlignedTouchDisabledTest : public InputRouterImplTest {
|
| public:
|
| - InputRouterImplRafAlignedTouchEnabledTest() : InputRouterImplTest(true) {}
|
| + InputRouterImplRafAlignedTouchDisabledTest() : InputRouterImplTest(false) {}
|
| };
|
|
|
| TEST_F(InputRouterImplTest, CoalescesRangeSelection) {
|
| @@ -800,7 +800,7 @@ TEST_F(InputRouterImplTest, CoalescesWheelEvents) {
|
| }
|
|
|
| // Tests that touch-events are queued properly.
|
| -TEST_F(InputRouterImplTest, TouchEventQueue) {
|
| +TEST_F(InputRouterImplRafAlignedTouchDisabledTest, TouchEventQueue) {
|
| OnHasTouchEventHandlers(true);
|
|
|
| PressTouchPoint(1, 1);
|
| @@ -834,6 +834,41 @@ TEST_F(InputRouterImplTest, TouchEventQueue) {
|
| EXPECT_EQ(0U, GetSentMessageCountAndResetSink());
|
| }
|
|
|
| +// Tests that touch-events are sent properly.
|
| +TEST_F(InputRouterImplTest, TouchEventQueue) {
|
| + OnHasTouchEventHandlers(true);
|
| +
|
| + PressTouchPoint(1, 1);
|
| + uint32_t touch_press_event_id = SendTouchEvent();
|
| + EXPECT_TRUE(client_->GetAndResetFilterEventCalled());
|
| + EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
|
| + EXPECT_FALSE(TouchEventQueueEmpty());
|
| +
|
| + // The second touch should be sent right away.
|
| + MoveTouchPoint(0, 5, 5);
|
| + uint32_t touch_move_event_id = SendTouchEvent();
|
| + EXPECT_TRUE(client_->GetAndResetFilterEventCalled());
|
| + EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
|
| + EXPECT_FALSE(TouchEventQueueEmpty());
|
| +
|
| + // Receive an ACK for the first touch-event.
|
| + SendTouchEventACK(WebInputEvent::TouchStart, INPUT_EVENT_ACK_STATE_CONSUMED,
|
| + touch_press_event_id);
|
| + EXPECT_FALSE(TouchEventQueueEmpty());
|
| + EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount());
|
| + EXPECT_EQ(WebInputEvent::TouchStart,
|
| + ack_handler_->acked_touch_event().event.type());
|
| + EXPECT_EQ(0U, GetSentMessageCountAndResetSink());
|
| +
|
| + SendTouchEventACK(WebInputEvent::TouchMove, INPUT_EVENT_ACK_STATE_CONSUMED,
|
| + touch_move_event_id);
|
| + EXPECT_TRUE(TouchEventQueueEmpty());
|
| + EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount());
|
| + EXPECT_EQ(WebInputEvent::TouchMove,
|
| + ack_handler_->acked_touch_event().event.type());
|
| + EXPECT_EQ(0U, GetSentMessageCountAndResetSink());
|
| +}
|
| +
|
| // Tests that the touch-queue is emptied after a page stops listening for touch
|
| // events and the outstanding ack is received.
|
| TEST_F(InputRouterImplTest, TouchEventQueueFlush) {
|
| @@ -1055,7 +1090,10 @@ TEST_F(InputRouterImplTest, GestureTypesIgnoringAck) {
|
| WebInputEvent::Type type = eventTypes[i];
|
| if (WebInputEventTraits::ShouldBlockEventStream(GetEventWithType(type))) {
|
| SimulateGestureEvent(type, blink::WebGestureDeviceTouchscreen);
|
| - EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
|
| + if (type == WebInputEvent::GestureScrollUpdate)
|
| + EXPECT_EQ(2U, GetSentMessageCountAndResetSink());
|
| + else
|
| + EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
|
| EXPECT_EQ(0U, ack_handler_->GetAndResetAckCount());
|
| EXPECT_EQ(1, client_->in_flight_event_count());
|
| EXPECT_TRUE(HasPendingEvents());
|
| @@ -1141,7 +1179,7 @@ TEST_F(InputRouterImplTest, GestureTypesIgnoringAckInterleaved) {
|
|
|
| SimulateGestureEvent(WebInputEvent::GestureScrollUpdate,
|
| blink::WebGestureDeviceTouchscreen);
|
| - ASSERT_EQ(1U, GetSentMessageCountAndResetSink());
|
| + ASSERT_EQ(2U, GetSentMessageCountAndResetSink());
|
| EXPECT_EQ(0U, ack_handler_->GetAndResetAckCount());
|
| EXPECT_EQ(1, client_->in_flight_event_count());
|
|
|
| @@ -1393,7 +1431,7 @@ TEST_F(InputRouterImplTest, TouchActionResetBeforeEventReachesRenderer) {
|
|
|
| // Ensure touch action is still none, as the next touch start hasn't been
|
| // acked yet. ScrollBegin and ScrollEnd don't require acks.
|
| - EXPECT_EQ(3U, GetSentMessageCountAndResetSink());
|
| + EXPECT_EQ(6U, GetSentMessageCountAndResetSink());
|
| SimulateGestureEvent(WebInputEvent::GestureScrollBegin,
|
| blink::WebGestureDeviceTouchscreen);
|
| EXPECT_EQ(0U, GetSentMessageCountAndResetSink());
|
| @@ -1411,7 +1449,7 @@ TEST_F(InputRouterImplTest, TouchActionResetBeforeEventReachesRenderer) {
|
| touch_press_event_id2);
|
| SendTouchEventACK(WebInputEvent::TouchMove, INPUT_EVENT_ACK_STATE_CONSUMED,
|
| touch_move_event_id2);
|
| - EXPECT_EQ(3U, GetSentMessageCountAndResetSink());
|
| + EXPECT_EQ(0U, GetSentMessageCountAndResetSink());
|
| SimulateGestureEvent(WebInputEvent::GestureScrollBegin,
|
| blink::WebGestureDeviceTouchscreen);
|
| EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
|
| @@ -1451,7 +1489,7 @@ TEST_F(InputRouterImplTest, TouchActionResetWhenTouchHasNoConsumer) {
|
|
|
| // Ensure we have touch-action:none. ScrollBegin and ScrollEnd don't require
|
| // acks.
|
| - EXPECT_EQ(3U, GetSentMessageCountAndResetSink());
|
| + EXPECT_EQ(6U, GetSentMessageCountAndResetSink());
|
| SimulateGestureEvent(WebInputEvent::GestureScrollBegin,
|
| blink::WebGestureDeviceTouchscreen);
|
| EXPECT_EQ(0U, GetSentMessageCountAndResetSink());
|
| @@ -1466,7 +1504,7 @@ TEST_F(InputRouterImplTest, TouchActionResetWhenTouchHasNoConsumer) {
|
| touch_press_event_id2);
|
|
|
| // Ensure touch action has been set to auto, as the touch had no consumer.
|
| - EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
|
| + EXPECT_EQ(0U, GetSentMessageCountAndResetSink());
|
| SimulateGestureEvent(WebInputEvent::GestureScrollBegin,
|
| blink::WebGestureDeviceTouchscreen);
|
| EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
|
| @@ -1487,15 +1525,15 @@ TEST_F(InputRouterImplTest, TouchActionResetWhenTouchHandlerRemoved) {
|
| OnSetTouchAction(TOUCH_ACTION_NONE);
|
| ReleaseTouchPoint(0);
|
| uint32_t touch_release_event_id = SendTouchEvent();
|
| - EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
|
| + EXPECT_EQ(3U, GetSentMessageCountAndResetSink());
|
|
|
| // Ensure we have touch-action:none, suppressing scroll events.
|
| SendTouchEventACK(WebInputEvent::TouchStart, INPUT_EVENT_ACK_STATE_CONSUMED,
|
| touch_press_event_id);
|
| - EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
|
| + EXPECT_EQ(0U, GetSentMessageCountAndResetSink());
|
| SendTouchEventACK(WebInputEvent::TouchMove,
|
| INPUT_EVENT_ACK_STATE_NOT_CONSUMED, touch_move_event_id);
|
| - EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
|
| + EXPECT_EQ(0U, GetSentMessageCountAndResetSink());
|
| SimulateGestureEvent(WebInputEvent::GestureScrollBegin,
|
| blink::WebGestureDeviceTouchscreen);
|
| EXPECT_EQ(0U, GetSentMessageCountAndResetSink());
|
| @@ -1522,8 +1560,7 @@ TEST_F(InputRouterImplTest, TouchActionResetWhenTouchHandlerRemoved) {
|
|
|
| // Test that the double tap gesture depends on the touch action of the first
|
| // tap.
|
| -TEST_F(InputRouterImplRafAlignedTouchEnabledTest,
|
| - DoubleTapGestureDependsOnFirstTap) {
|
| +TEST_F(InputRouterImplTest, DoubleTapGestureDependsOnFirstTap) {
|
| OnHasTouchEventHandlers(true);
|
|
|
| // Sequence 1.
|
| @@ -1590,7 +1627,8 @@ TEST_F(InputRouterImplRafAlignedTouchEnabledTest,
|
|
|
| // Test that the double tap gesture depends on the touch action of the first
|
| // tap.
|
| -TEST_F(InputRouterImplTest, DoubleTapGestureDependsOnFirstTap) {
|
| +TEST_F(InputRouterImplRafAlignedTouchDisabledTest,
|
| + DoubleTapGestureDependsOnFirstTap) {
|
| OnHasTouchEventHandlers(true);
|
|
|
| // Sequence 1.
|
|
|