| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "content/browser/renderer_host/input/input_router_impl.h" | 5 #include "content/browser/renderer_host/input/input_router_impl.h" |
| 6 | 6 |
| 7 #include <math.h> | 7 #include <math.h> |
| 8 #include <stddef.h> | 8 #include <stddef.h> |
| 9 #include <stdint.h> | 9 #include <stdint.h> |
| 10 | 10 |
| (...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 137 } | 137 } |
| 138 | 138 |
| 139 return true; | 139 return true; |
| 140 } | 140 } |
| 141 #endif // defined(USE_AURA) | 141 #endif // defined(USE_AURA) |
| 142 | 142 |
| 143 } // namespace | 143 } // namespace |
| 144 | 144 |
| 145 class InputRouterImplTest : public testing::Test { | 145 class InputRouterImplTest : public testing::Test { |
| 146 public: | 146 public: |
| 147 InputRouterImplTest(bool raf_aligned_touch = false) { | 147 InputRouterImplTest(bool raf_aligned_touch = true) { |
| 148 if (raf_aligned_touch) { | 148 if (raf_aligned_touch) { |
| 149 feature_list_.InitFromCommandLine( | 149 feature_list_.InitFromCommandLine( |
| 150 features::kRafAlignedTouchInputEvents.name, ""); | 150 features::kRafAlignedTouchInputEvents.name, ""); |
| 151 } else { | 151 } else { |
| 152 feature_list_.InitFromCommandLine( | 152 feature_list_.InitFromCommandLine( |
| 153 "", features::kRafAlignedTouchInputEvents.name); | 153 "", features::kRafAlignedTouchInputEvents.name); |
| 154 } | 154 } |
| 155 } | 155 } |
| 156 | 156 |
| 157 ~InputRouterImplTest() override {} | 157 ~InputRouterImplTest() override {} |
| (...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 363 std::unique_ptr<InputRouterImpl> input_router_; | 363 std::unique_ptr<InputRouterImpl> input_router_; |
| 364 | 364 |
| 365 private: | 365 private: |
| 366 base::MessageLoopForUI message_loop_; | 366 base::MessageLoopForUI message_loop_; |
| 367 SyntheticWebTouchEvent touch_event_; | 367 SyntheticWebTouchEvent touch_event_; |
| 368 | 368 |
| 369 base::test::ScopedFeatureList feature_list_; | 369 base::test::ScopedFeatureList feature_list_; |
| 370 std::unique_ptr<TestBrowserContext> browser_context_; | 370 std::unique_ptr<TestBrowserContext> browser_context_; |
| 371 }; | 371 }; |
| 372 | 372 |
| 373 class InputRouterImplRafAlignedTouchEnabledTest : public InputRouterImplTest { | 373 class InputRouterImplRafAlignedTouchDisabledTest : public InputRouterImplTest { |
| 374 public: | 374 public: |
| 375 InputRouterImplRafAlignedTouchEnabledTest() : InputRouterImplTest(true) {} | 375 InputRouterImplRafAlignedTouchDisabledTest() : InputRouterImplTest(false) {} |
| 376 }; | 376 }; |
| 377 | 377 |
| 378 TEST_F(InputRouterImplTest, CoalescesRangeSelection) { | 378 TEST_F(InputRouterImplTest, CoalescesRangeSelection) { |
| 379 input_router_->SendInput(std::unique_ptr<IPC::Message>( | 379 input_router_->SendInput(std::unique_ptr<IPC::Message>( |
| 380 new InputMsg_SelectRange(0, gfx::Point(1, 2), gfx::Point(3, 4)))); | 380 new InputMsg_SelectRange(0, gfx::Point(1, 2), gfx::Point(3, 4)))); |
| 381 ExpectIPCMessageWithArg2<InputMsg_SelectRange>( | 381 ExpectIPCMessageWithArg2<InputMsg_SelectRange>( |
| 382 process_->sink().GetMessageAt(0), | 382 process_->sink().GetMessageAt(0), |
| 383 gfx::Point(1, 2), | 383 gfx::Point(1, 2), |
| 384 gfx::Point(3, 4)); | 384 gfx::Point(3, 4)); |
| 385 EXPECT_EQ(1u, GetSentMessageCountAndResetSink()); | 385 EXPECT_EQ(1u, GetSentMessageCountAndResetSink()); |
| (...skipping 407 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 793 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); | 793 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); |
| 794 | 794 |
| 795 // After the final ack, the queue should be empty. | 795 // After the final ack, the queue should be empty. |
| 796 SendInputEventACK(WebInputEvent::MouseWheel, INPUT_EVENT_ACK_STATE_CONSUMED); | 796 SendInputEventACK(WebInputEvent::MouseWheel, INPUT_EVENT_ACK_STATE_CONSUMED); |
| 797 base::RunLoop().RunUntilIdle(); | 797 base::RunLoop().RunUntilIdle(); |
| 798 EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount()); | 798 EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount()); |
| 799 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); | 799 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); |
| 800 } | 800 } |
| 801 | 801 |
| 802 // Tests that touch-events are queued properly. | 802 // Tests that touch-events are queued properly. |
| 803 TEST_F(InputRouterImplTest, TouchEventQueue) { | 803 TEST_F(InputRouterImplRafAlignedTouchDisabledTest, TouchEventQueue) { |
| 804 OnHasTouchEventHandlers(true); | 804 OnHasTouchEventHandlers(true); |
| 805 | 805 |
| 806 PressTouchPoint(1, 1); | 806 PressTouchPoint(1, 1); |
| 807 uint32_t touch_press_event_id = SendTouchEvent(); | 807 uint32_t touch_press_event_id = SendTouchEvent(); |
| 808 EXPECT_TRUE(client_->GetAndResetFilterEventCalled()); | 808 EXPECT_TRUE(client_->GetAndResetFilterEventCalled()); |
| 809 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); | 809 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); |
| 810 EXPECT_FALSE(TouchEventQueueEmpty()); | 810 EXPECT_FALSE(TouchEventQueueEmpty()); |
| 811 | 811 |
| 812 // The second touch should not be sent since one is already in queue. | 812 // The second touch should not be sent since one is already in queue. |
| 813 MoveTouchPoint(0, 5, 5); | 813 MoveTouchPoint(0, 5, 5); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 827 | 827 |
| 828 SendTouchEventACK(WebInputEvent::TouchMove, INPUT_EVENT_ACK_STATE_CONSUMED, | 828 SendTouchEventACK(WebInputEvent::TouchMove, INPUT_EVENT_ACK_STATE_CONSUMED, |
| 829 touch_move_event_id); | 829 touch_move_event_id); |
| 830 EXPECT_TRUE(TouchEventQueueEmpty()); | 830 EXPECT_TRUE(TouchEventQueueEmpty()); |
| 831 EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount()); | 831 EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount()); |
| 832 EXPECT_EQ(WebInputEvent::TouchMove, | 832 EXPECT_EQ(WebInputEvent::TouchMove, |
| 833 ack_handler_->acked_touch_event().event.type()); | 833 ack_handler_->acked_touch_event().event.type()); |
| 834 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); | 834 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); |
| 835 } | 835 } |
| 836 | 836 |
| 837 // Tests that touch-events are sent properly. |
| 838 TEST_F(InputRouterImplTest, TouchEventQueue) { |
| 839 OnHasTouchEventHandlers(true); |
| 840 |
| 841 PressTouchPoint(1, 1); |
| 842 uint32_t touch_press_event_id = SendTouchEvent(); |
| 843 EXPECT_TRUE(client_->GetAndResetFilterEventCalled()); |
| 844 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); |
| 845 EXPECT_FALSE(TouchEventQueueEmpty()); |
| 846 |
| 847 // The second touch should be sent right away. |
| 848 MoveTouchPoint(0, 5, 5); |
| 849 uint32_t touch_move_event_id = SendTouchEvent(); |
| 850 EXPECT_TRUE(client_->GetAndResetFilterEventCalled()); |
| 851 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); |
| 852 EXPECT_FALSE(TouchEventQueueEmpty()); |
| 853 |
| 854 // Receive an ACK for the first touch-event. |
| 855 SendTouchEventACK(WebInputEvent::TouchStart, INPUT_EVENT_ACK_STATE_CONSUMED, |
| 856 touch_press_event_id); |
| 857 EXPECT_FALSE(TouchEventQueueEmpty()); |
| 858 EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount()); |
| 859 EXPECT_EQ(WebInputEvent::TouchStart, |
| 860 ack_handler_->acked_touch_event().event.type()); |
| 861 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); |
| 862 |
| 863 SendTouchEventACK(WebInputEvent::TouchMove, INPUT_EVENT_ACK_STATE_CONSUMED, |
| 864 touch_move_event_id); |
| 865 EXPECT_TRUE(TouchEventQueueEmpty()); |
| 866 EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount()); |
| 867 EXPECT_EQ(WebInputEvent::TouchMove, |
| 868 ack_handler_->acked_touch_event().event.type()); |
| 869 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); |
| 870 } |
| 871 |
| 837 // Tests that the touch-queue is emptied after a page stops listening for touch | 872 // Tests that the touch-queue is emptied after a page stops listening for touch |
| 838 // events and the outstanding ack is received. | 873 // events and the outstanding ack is received. |
| 839 TEST_F(InputRouterImplTest, TouchEventQueueFlush) { | 874 TEST_F(InputRouterImplTest, TouchEventQueueFlush) { |
| 840 OnHasTouchEventHandlers(true); | 875 OnHasTouchEventHandlers(true); |
| 841 EXPECT_TRUE(client_->has_touch_handler()); | 876 EXPECT_TRUE(client_->has_touch_handler()); |
| 842 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); | 877 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); |
| 843 EXPECT_TRUE(TouchEventQueueEmpty()); | 878 EXPECT_TRUE(TouchEventQueueEmpty()); |
| 844 | 879 |
| 845 // Send a touch-press event. | 880 // Send a touch-press event. |
| 846 PressTouchPoint(1, 1); | 881 PressTouchPoint(1, 1); |
| (...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1048 WebInputEvent::GestureScrollBegin, | 1083 WebInputEvent::GestureScrollBegin, |
| 1049 WebInputEvent::GestureScrollUpdate, | 1084 WebInputEvent::GestureScrollUpdate, |
| 1050 WebInputEvent::GesturePinchBegin, | 1085 WebInputEvent::GesturePinchBegin, |
| 1051 WebInputEvent::GesturePinchUpdate, | 1086 WebInputEvent::GesturePinchUpdate, |
| 1052 WebInputEvent::GesturePinchEnd, | 1087 WebInputEvent::GesturePinchEnd, |
| 1053 WebInputEvent::GestureScrollEnd}; | 1088 WebInputEvent::GestureScrollEnd}; |
| 1054 for (size_t i = 0; i < arraysize(eventTypes); ++i) { | 1089 for (size_t i = 0; i < arraysize(eventTypes); ++i) { |
| 1055 WebInputEvent::Type type = eventTypes[i]; | 1090 WebInputEvent::Type type = eventTypes[i]; |
| 1056 if (WebInputEventTraits::ShouldBlockEventStream(GetEventWithType(type))) { | 1091 if (WebInputEventTraits::ShouldBlockEventStream(GetEventWithType(type))) { |
| 1057 SimulateGestureEvent(type, blink::WebGestureDeviceTouchscreen); | 1092 SimulateGestureEvent(type, blink::WebGestureDeviceTouchscreen); |
| 1058 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); | 1093 if (type == WebInputEvent::GestureScrollUpdate) |
| 1094 EXPECT_EQ(2U, GetSentMessageCountAndResetSink()); |
| 1095 else |
| 1096 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); |
| 1059 EXPECT_EQ(0U, ack_handler_->GetAndResetAckCount()); | 1097 EXPECT_EQ(0U, ack_handler_->GetAndResetAckCount()); |
| 1060 EXPECT_EQ(1, client_->in_flight_event_count()); | 1098 EXPECT_EQ(1, client_->in_flight_event_count()); |
| 1061 EXPECT_TRUE(HasPendingEvents()); | 1099 EXPECT_TRUE(HasPendingEvents()); |
| 1062 | 1100 |
| 1063 SendInputEventACK(type, INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 1101 SendInputEventACK(type, INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
| 1064 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); | 1102 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); |
| 1065 EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount()); | 1103 EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount()); |
| 1066 EXPECT_EQ(0, client_->in_flight_event_count()); | 1104 EXPECT_EQ(0, client_->in_flight_event_count()); |
| 1067 EXPECT_FALSE(HasPendingEvents()); | 1105 EXPECT_FALSE(HasPendingEvents()); |
| 1068 continue; | 1106 continue; |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1134 // their ack disposition have been dispatched. | 1172 // their ack disposition have been dispatched. |
| 1135 | 1173 |
| 1136 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, | 1174 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, |
| 1137 blink::WebGestureDeviceTouchscreen); | 1175 blink::WebGestureDeviceTouchscreen); |
| 1138 ASSERT_EQ(1U, GetSentMessageCountAndResetSink()); | 1176 ASSERT_EQ(1U, GetSentMessageCountAndResetSink()); |
| 1139 EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount()); | 1177 EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount()); |
| 1140 EXPECT_EQ(0, client_->in_flight_event_count()); | 1178 EXPECT_EQ(0, client_->in_flight_event_count()); |
| 1141 | 1179 |
| 1142 SimulateGestureEvent(WebInputEvent::GestureScrollUpdate, | 1180 SimulateGestureEvent(WebInputEvent::GestureScrollUpdate, |
| 1143 blink::WebGestureDeviceTouchscreen); | 1181 blink::WebGestureDeviceTouchscreen); |
| 1144 ASSERT_EQ(1U, GetSentMessageCountAndResetSink()); | 1182 ASSERT_EQ(2U, GetSentMessageCountAndResetSink()); |
| 1145 EXPECT_EQ(0U, ack_handler_->GetAndResetAckCount()); | 1183 EXPECT_EQ(0U, ack_handler_->GetAndResetAckCount()); |
| 1146 EXPECT_EQ(1, client_->in_flight_event_count()); | 1184 EXPECT_EQ(1, client_->in_flight_event_count()); |
| 1147 | 1185 |
| 1148 SimulateGestureEvent(WebInputEvent::GestureTapDown, | 1186 SimulateGestureEvent(WebInputEvent::GestureTapDown, |
| 1149 blink::WebGestureDeviceTouchscreen); | 1187 blink::WebGestureDeviceTouchscreen); |
| 1150 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); | 1188 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); |
| 1151 EXPECT_EQ(0U, ack_handler_->GetAndResetAckCount()); | 1189 EXPECT_EQ(0U, ack_handler_->GetAndResetAckCount()); |
| 1152 EXPECT_EQ(1, client_->in_flight_event_count()); | 1190 EXPECT_EQ(1, client_->in_flight_event_count()); |
| 1153 | 1191 |
| 1154 SimulateGestureEvent(WebInputEvent::GestureScrollUpdate, | 1192 SimulateGestureEvent(WebInputEvent::GestureScrollUpdate, |
| (...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1386 ReleaseTouchPoint(0); | 1424 ReleaseTouchPoint(0); |
| 1387 uint32_t touch_release_event_id2 = SendTouchEvent(); | 1425 uint32_t touch_release_event_id2 = SendTouchEvent(); |
| 1388 | 1426 |
| 1389 SendTouchEventACK(WebInputEvent::TouchStart, INPUT_EVENT_ACK_STATE_CONSUMED, | 1427 SendTouchEventACK(WebInputEvent::TouchStart, INPUT_EVENT_ACK_STATE_CONSUMED, |
| 1390 touch_press_event_id1); | 1428 touch_press_event_id1); |
| 1391 SendTouchEventACK(WebInputEvent::TouchMove, INPUT_EVENT_ACK_STATE_CONSUMED, | 1429 SendTouchEventACK(WebInputEvent::TouchMove, INPUT_EVENT_ACK_STATE_CONSUMED, |
| 1392 touch_move_event_id1); | 1430 touch_move_event_id1); |
| 1393 | 1431 |
| 1394 // Ensure touch action is still none, as the next touch start hasn't been | 1432 // Ensure touch action is still none, as the next touch start hasn't been |
| 1395 // acked yet. ScrollBegin and ScrollEnd don't require acks. | 1433 // acked yet. ScrollBegin and ScrollEnd don't require acks. |
| 1396 EXPECT_EQ(3U, GetSentMessageCountAndResetSink()); | 1434 EXPECT_EQ(6U, GetSentMessageCountAndResetSink()); |
| 1397 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, | 1435 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, |
| 1398 blink::WebGestureDeviceTouchscreen); | 1436 blink::WebGestureDeviceTouchscreen); |
| 1399 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); | 1437 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); |
| 1400 SimulateGestureEvent(WebInputEvent::GestureScrollEnd, | 1438 SimulateGestureEvent(WebInputEvent::GestureScrollEnd, |
| 1401 blink::WebGestureDeviceTouchscreen); | 1439 blink::WebGestureDeviceTouchscreen); |
| 1402 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); | 1440 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); |
| 1403 | 1441 |
| 1404 // This allows the next touch sequence to start. | 1442 // This allows the next touch sequence to start. |
| 1405 SendTouchEventACK(WebInputEvent::TouchEnd, INPUT_EVENT_ACK_STATE_CONSUMED, | 1443 SendTouchEventACK(WebInputEvent::TouchEnd, INPUT_EVENT_ACK_STATE_CONSUMED, |
| 1406 touch_release_event_id1); | 1444 touch_release_event_id1); |
| 1407 | 1445 |
| 1408 // Ensure touch action has been set to auto, as a new touch sequence has | 1446 // Ensure touch action has been set to auto, as a new touch sequence has |
| 1409 // started. | 1447 // started. |
| 1410 SendTouchEventACK(WebInputEvent::TouchStart, INPUT_EVENT_ACK_STATE_CONSUMED, | 1448 SendTouchEventACK(WebInputEvent::TouchStart, INPUT_EVENT_ACK_STATE_CONSUMED, |
| 1411 touch_press_event_id2); | 1449 touch_press_event_id2); |
| 1412 SendTouchEventACK(WebInputEvent::TouchMove, INPUT_EVENT_ACK_STATE_CONSUMED, | 1450 SendTouchEventACK(WebInputEvent::TouchMove, INPUT_EVENT_ACK_STATE_CONSUMED, |
| 1413 touch_move_event_id2); | 1451 touch_move_event_id2); |
| 1414 EXPECT_EQ(3U, GetSentMessageCountAndResetSink()); | 1452 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); |
| 1415 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, | 1453 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, |
| 1416 blink::WebGestureDeviceTouchscreen); | 1454 blink::WebGestureDeviceTouchscreen); |
| 1417 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); | 1455 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); |
| 1418 SimulateGestureEvent(WebInputEvent::GestureScrollEnd, | 1456 SimulateGestureEvent(WebInputEvent::GestureScrollEnd, |
| 1419 blink::WebGestureDeviceTouchscreen); | 1457 blink::WebGestureDeviceTouchscreen); |
| 1420 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); | 1458 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); |
| 1421 SendTouchEventACK(WebInputEvent::TouchEnd, INPUT_EVENT_ACK_STATE_CONSUMED, | 1459 SendTouchEventACK(WebInputEvent::TouchEnd, INPUT_EVENT_ACK_STATE_CONSUMED, |
| 1422 touch_release_event_id2); | 1460 touch_release_event_id2); |
| 1423 } | 1461 } |
| 1424 | 1462 |
| (...skipping 19 matching lines...) Expand all Loading... |
| 1444 // Sequence 2 | 1482 // Sequence 2 |
| 1445 PressTouchPoint(1, 1); | 1483 PressTouchPoint(1, 1); |
| 1446 uint32_t touch_press_event_id2 = SendTouchEvent(); | 1484 uint32_t touch_press_event_id2 = SendTouchEvent(); |
| 1447 MoveTouchPoint(0, 50, 50); | 1485 MoveTouchPoint(0, 50, 50); |
| 1448 SendTouchEvent(); | 1486 SendTouchEvent(); |
| 1449 ReleaseTouchPoint(0); | 1487 ReleaseTouchPoint(0); |
| 1450 SendTouchEvent(); | 1488 SendTouchEvent(); |
| 1451 | 1489 |
| 1452 // Ensure we have touch-action:none. ScrollBegin and ScrollEnd don't require | 1490 // Ensure we have touch-action:none. ScrollBegin and ScrollEnd don't require |
| 1453 // acks. | 1491 // acks. |
| 1454 EXPECT_EQ(3U, GetSentMessageCountAndResetSink()); | 1492 EXPECT_EQ(6U, GetSentMessageCountAndResetSink()); |
| 1455 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, | 1493 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, |
| 1456 blink::WebGestureDeviceTouchscreen); | 1494 blink::WebGestureDeviceTouchscreen); |
| 1457 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); | 1495 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); |
| 1458 SimulateGestureEvent(WebInputEvent::GestureScrollEnd, | 1496 SimulateGestureEvent(WebInputEvent::GestureScrollEnd, |
| 1459 blink::WebGestureDeviceTouchscreen); | 1497 blink::WebGestureDeviceTouchscreen); |
| 1460 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); | 1498 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); |
| 1461 | 1499 |
| 1462 SendTouchEventACK(WebInputEvent::TouchEnd, INPUT_EVENT_ACK_STATE_CONSUMED, | 1500 SendTouchEventACK(WebInputEvent::TouchEnd, INPUT_EVENT_ACK_STATE_CONSUMED, |
| 1463 touch_release_event_id1); | 1501 touch_release_event_id1); |
| 1464 SendTouchEventACK(WebInputEvent::TouchStart, | 1502 SendTouchEventACK(WebInputEvent::TouchStart, |
| 1465 INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS, | 1503 INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS, |
| 1466 touch_press_event_id2); | 1504 touch_press_event_id2); |
| 1467 | 1505 |
| 1468 // Ensure touch action has been set to auto, as the touch had no consumer. | 1506 // Ensure touch action has been set to auto, as the touch had no consumer. |
| 1469 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); | 1507 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); |
| 1470 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, | 1508 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, |
| 1471 blink::WebGestureDeviceTouchscreen); | 1509 blink::WebGestureDeviceTouchscreen); |
| 1472 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); | 1510 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); |
| 1473 SimulateGestureEvent(WebInputEvent::GestureScrollEnd, | 1511 SimulateGestureEvent(WebInputEvent::GestureScrollEnd, |
| 1474 blink::WebGestureDeviceTouchscreen); | 1512 blink::WebGestureDeviceTouchscreen); |
| 1475 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); | 1513 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); |
| 1476 } | 1514 } |
| 1477 | 1515 |
| 1478 // Test that TouchActionFilter::ResetTouchAction is called when the touch | 1516 // Test that TouchActionFilter::ResetTouchAction is called when the touch |
| 1479 // handler is removed. | 1517 // handler is removed. |
| 1480 TEST_F(InputRouterImplTest, TouchActionResetWhenTouchHandlerRemoved) { | 1518 TEST_F(InputRouterImplTest, TouchActionResetWhenTouchHandlerRemoved) { |
| 1481 // Touch sequence with touch handler. | 1519 // Touch sequence with touch handler. |
| 1482 OnHasTouchEventHandlers(true); | 1520 OnHasTouchEventHandlers(true); |
| 1483 PressTouchPoint(1, 1); | 1521 PressTouchPoint(1, 1); |
| 1484 uint32_t touch_press_event_id = SendTouchEvent(); | 1522 uint32_t touch_press_event_id = SendTouchEvent(); |
| 1485 MoveTouchPoint(0, 50, 50); | 1523 MoveTouchPoint(0, 50, 50); |
| 1486 uint32_t touch_move_event_id = SendTouchEvent(); | 1524 uint32_t touch_move_event_id = SendTouchEvent(); |
| 1487 OnSetTouchAction(TOUCH_ACTION_NONE); | 1525 OnSetTouchAction(TOUCH_ACTION_NONE); |
| 1488 ReleaseTouchPoint(0); | 1526 ReleaseTouchPoint(0); |
| 1489 uint32_t touch_release_event_id = SendTouchEvent(); | 1527 uint32_t touch_release_event_id = SendTouchEvent(); |
| 1490 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); | 1528 EXPECT_EQ(3U, GetSentMessageCountAndResetSink()); |
| 1491 | 1529 |
| 1492 // Ensure we have touch-action:none, suppressing scroll events. | 1530 // Ensure we have touch-action:none, suppressing scroll events. |
| 1493 SendTouchEventACK(WebInputEvent::TouchStart, INPUT_EVENT_ACK_STATE_CONSUMED, | 1531 SendTouchEventACK(WebInputEvent::TouchStart, INPUT_EVENT_ACK_STATE_CONSUMED, |
| 1494 touch_press_event_id); | 1532 touch_press_event_id); |
| 1495 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); | 1533 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); |
| 1496 SendTouchEventACK(WebInputEvent::TouchMove, | 1534 SendTouchEventACK(WebInputEvent::TouchMove, |
| 1497 INPUT_EVENT_ACK_STATE_NOT_CONSUMED, touch_move_event_id); | 1535 INPUT_EVENT_ACK_STATE_NOT_CONSUMED, touch_move_event_id); |
| 1498 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); | 1536 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); |
| 1499 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, | 1537 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, |
| 1500 blink::WebGestureDeviceTouchscreen); | 1538 blink::WebGestureDeviceTouchscreen); |
| 1501 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); | 1539 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); |
| 1502 | 1540 |
| 1503 SendTouchEventACK(WebInputEvent::TouchEnd, INPUT_EVENT_ACK_STATE_NOT_CONSUMED, | 1541 SendTouchEventACK(WebInputEvent::TouchEnd, INPUT_EVENT_ACK_STATE_NOT_CONSUMED, |
| 1504 touch_release_event_id); | 1542 touch_release_event_id); |
| 1505 SimulateGestureEvent(WebInputEvent::GestureScrollEnd, | 1543 SimulateGestureEvent(WebInputEvent::GestureScrollEnd, |
| 1506 blink::WebGestureDeviceTouchscreen); | 1544 blink::WebGestureDeviceTouchscreen); |
| 1507 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); | 1545 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); |
| 1508 | 1546 |
| 1509 // Sequence without a touch handler. Note that in this case, the view may not | 1547 // Sequence without a touch handler. Note that in this case, the view may not |
| 1510 // necessarily forward touches to the router (as no touch handler exists). | 1548 // necessarily forward touches to the router (as no touch handler exists). |
| 1511 OnHasTouchEventHandlers(false); | 1549 OnHasTouchEventHandlers(false); |
| 1512 | 1550 |
| 1513 // Ensure touch action has been set to auto, as the touch handler has been | 1551 // Ensure touch action has been set to auto, as the touch handler has been |
| 1514 // removed. | 1552 // removed. |
| 1515 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, | 1553 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, |
| 1516 blink::WebGestureDeviceTouchscreen); | 1554 blink::WebGestureDeviceTouchscreen); |
| 1517 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); | 1555 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); |
| 1518 SimulateGestureEvent(WebInputEvent::GestureScrollEnd, | 1556 SimulateGestureEvent(WebInputEvent::GestureScrollEnd, |
| 1519 blink::WebGestureDeviceTouchscreen); | 1557 blink::WebGestureDeviceTouchscreen); |
| 1520 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); | 1558 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); |
| 1521 } | 1559 } |
| 1522 | 1560 |
| 1523 // Test that the double tap gesture depends on the touch action of the first | 1561 // Test that the double tap gesture depends on the touch action of the first |
| 1524 // tap. | 1562 // tap. |
| 1525 TEST_F(InputRouterImplRafAlignedTouchEnabledTest, | 1563 TEST_F(InputRouterImplTest, DoubleTapGestureDependsOnFirstTap) { |
| 1526 DoubleTapGestureDependsOnFirstTap) { | |
| 1527 OnHasTouchEventHandlers(true); | 1564 OnHasTouchEventHandlers(true); |
| 1528 | 1565 |
| 1529 // Sequence 1. | 1566 // Sequence 1. |
| 1530 PressTouchPoint(1, 1); | 1567 PressTouchPoint(1, 1); |
| 1531 uint32_t touch_press_event_id1 = SendTouchEvent(); | 1568 uint32_t touch_press_event_id1 = SendTouchEvent(); |
| 1532 OnSetTouchAction(TOUCH_ACTION_NONE); | 1569 OnSetTouchAction(TOUCH_ACTION_NONE); |
| 1533 SendTouchEventACK(WebInputEvent::TouchStart, INPUT_EVENT_ACK_STATE_CONSUMED, | 1570 SendTouchEventACK(WebInputEvent::TouchStart, INPUT_EVENT_ACK_STATE_CONSUMED, |
| 1534 touch_press_event_id1); | 1571 touch_press_event_id1); |
| 1535 | 1572 |
| 1536 ReleaseTouchPoint(0); | 1573 ReleaseTouchPoint(0); |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1583 // This test will become invalid if GestureDoubleTap stops requiring an ack. | 1620 // This test will become invalid if GestureDoubleTap stops requiring an ack. |
| 1584 ASSERT_TRUE(WebInputEventTraits::ShouldBlockEventStream( | 1621 ASSERT_TRUE(WebInputEventTraits::ShouldBlockEventStream( |
| 1585 GetEventWithType(WebInputEvent::GestureDoubleTap))); | 1622 GetEventWithType(WebInputEvent::GestureDoubleTap))); |
| 1586 EXPECT_EQ(1, client_->in_flight_event_count()); | 1623 EXPECT_EQ(1, client_->in_flight_event_count()); |
| 1587 SendInputEventACK(WebInputEvent::GestureTap, INPUT_EVENT_ACK_STATE_CONSUMED); | 1624 SendInputEventACK(WebInputEvent::GestureTap, INPUT_EVENT_ACK_STATE_CONSUMED); |
| 1588 EXPECT_EQ(0, client_->in_flight_event_count()); | 1625 EXPECT_EQ(0, client_->in_flight_event_count()); |
| 1589 } | 1626 } |
| 1590 | 1627 |
| 1591 // Test that the double tap gesture depends on the touch action of the first | 1628 // Test that the double tap gesture depends on the touch action of the first |
| 1592 // tap. | 1629 // tap. |
| 1593 TEST_F(InputRouterImplTest, DoubleTapGestureDependsOnFirstTap) { | 1630 TEST_F(InputRouterImplRafAlignedTouchDisabledTest, |
| 1631 DoubleTapGestureDependsOnFirstTap) { |
| 1594 OnHasTouchEventHandlers(true); | 1632 OnHasTouchEventHandlers(true); |
| 1595 | 1633 |
| 1596 // Sequence 1. | 1634 // Sequence 1. |
| 1597 PressTouchPoint(1, 1); | 1635 PressTouchPoint(1, 1); |
| 1598 uint32_t touch_press_event_id1 = SendTouchEvent(); | 1636 uint32_t touch_press_event_id1 = SendTouchEvent(); |
| 1599 OnSetTouchAction(TOUCH_ACTION_NONE); | 1637 OnSetTouchAction(TOUCH_ACTION_NONE); |
| 1600 SendTouchEventACK(WebInputEvent::TouchStart, INPUT_EVENT_ACK_STATE_CONSUMED, | 1638 SendTouchEventACK(WebInputEvent::TouchStart, INPUT_EVENT_ACK_STATE_CONSUMED, |
| 1601 touch_press_event_id1); | 1639 touch_press_event_id1); |
| 1602 | 1640 |
| 1603 ReleaseTouchPoint(0); | 1641 ReleaseTouchPoint(0); |
| (...skipping 762 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2366 EXPECT_EQ(80, sent_event->data.flingStart.velocityY); | 2404 EXPECT_EQ(80, sent_event->data.flingStart.velocityY); |
| 2367 | 2405 |
| 2368 const WebGestureEvent* filter_event = | 2406 const WebGestureEvent* filter_event = |
| 2369 GetFilterWebInputEvent<WebGestureEvent>(); | 2407 GetFilterWebInputEvent<WebGestureEvent>(); |
| 2370 TestLocationInFilterEvent(filter_event, orig); | 2408 TestLocationInFilterEvent(filter_event, orig); |
| 2371 EXPECT_EQ(30, filter_event->data.flingStart.velocityX); | 2409 EXPECT_EQ(30, filter_event->data.flingStart.velocityX); |
| 2372 EXPECT_EQ(40, filter_event->data.flingStart.velocityY); | 2410 EXPECT_EQ(40, filter_event->data.flingStart.velocityY); |
| 2373 } | 2411 } |
| 2374 | 2412 |
| 2375 } // namespace content | 2413 } // namespace content |
| OLD | NEW |