| 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 = true) { | 147 InputRouterImplTest(bool raf_aligned_touch = false) { |
| 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 InputRouterImplRafAlignedTouchDisabledTest : public InputRouterImplTest { | 373 class InputRouterImplRafAlignedTouchEnabledTest : public InputRouterImplTest { |
| 374 public: | 374 public: |
| 375 InputRouterImplRafAlignedTouchDisabledTest() : InputRouterImplTest(false) {} | 375 InputRouterImplRafAlignedTouchEnabledTest() : InputRouterImplTest(true) {} |
| 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(InputRouterImplRafAlignedTouchDisabledTest, TouchEventQueue) { | 803 TEST_F(InputRouterImplTest, 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); |
| 814 uint32_t touch_move_event_id = SendTouchEvent(); | 814 uint32_t touch_move_event_id = SendTouchEvent(); |
| 815 EXPECT_FALSE(client_->GetAndResetFilterEventCalled()); | 815 EXPECT_FALSE(client_->GetAndResetFilterEventCalled()); |
| 816 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); | 816 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); |
| 817 EXPECT_FALSE(TouchEventQueueEmpty()); | 817 EXPECT_FALSE(TouchEventQueueEmpty()); |
| 818 | 818 |
| 819 // Receive an ACK for the first touch-event. | 819 // Receive an ACK for the first touch-event. |
| 820 SendTouchEventACK(WebInputEvent::TouchStart, INPUT_EVENT_ACK_STATE_CONSUMED, | 820 SendTouchEventACK(WebInputEvent::TouchStart, INPUT_EVENT_ACK_STATE_CONSUMED, |
| 821 touch_press_event_id); | 821 touch_press_event_id); |
| 822 EXPECT_FALSE(TouchEventQueueEmpty()); | 822 EXPECT_FALSE(TouchEventQueueEmpty()); |
| 823 EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount()); | 823 EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount()); |
| 824 EXPECT_EQ(WebInputEvent::TouchStart, | 824 EXPECT_EQ(WebInputEvent::TouchStart, |
| 825 ack_handler_->acked_touch_event().event.type()); | 825 ack_handler_->acked_touch_event().event.type()); |
| 826 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); | 826 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); |
| 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()); | |
| 831 EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount()); | |
| 832 EXPECT_EQ(WebInputEvent::TouchMove, | |
| 833 ack_handler_->acked_touch_event().event.type()); | |
| 834 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); | |
| 835 } | |
| 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()); | 830 EXPECT_TRUE(TouchEventQueueEmpty()); |
| 866 EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount()); | 831 EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount()); |
| 867 EXPECT_EQ(WebInputEvent::TouchMove, | 832 EXPECT_EQ(WebInputEvent::TouchMove, |
| 868 ack_handler_->acked_touch_event().event.type()); | 833 ack_handler_->acked_touch_event().event.type()); |
| 869 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); | 834 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); |
| 870 } | 835 } |
| 871 | 836 |
| 872 // Tests that the touch-queue is emptied after a page stops listening for touch | 837 // Tests that the touch-queue is emptied after a page stops listening for touch |
| 873 // events and the outstanding ack is received. | 838 // events and the outstanding ack is received. |
| 874 TEST_F(InputRouterImplTest, TouchEventQueueFlush) { | 839 TEST_F(InputRouterImplTest, TouchEventQueueFlush) { |
| (...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1083 WebInputEvent::GestureScrollBegin, | 1048 WebInputEvent::GestureScrollBegin, |
| 1084 WebInputEvent::GestureScrollUpdate, | 1049 WebInputEvent::GestureScrollUpdate, |
| 1085 WebInputEvent::GesturePinchBegin, | 1050 WebInputEvent::GesturePinchBegin, |
| 1086 WebInputEvent::GesturePinchUpdate, | 1051 WebInputEvent::GesturePinchUpdate, |
| 1087 WebInputEvent::GesturePinchEnd, | 1052 WebInputEvent::GesturePinchEnd, |
| 1088 WebInputEvent::GestureScrollEnd}; | 1053 WebInputEvent::GestureScrollEnd}; |
| 1089 for (size_t i = 0; i < arraysize(eventTypes); ++i) { | 1054 for (size_t i = 0; i < arraysize(eventTypes); ++i) { |
| 1090 WebInputEvent::Type type = eventTypes[i]; | 1055 WebInputEvent::Type type = eventTypes[i]; |
| 1091 if (WebInputEventTraits::ShouldBlockEventStream(GetEventWithType(type))) { | 1056 if (WebInputEventTraits::ShouldBlockEventStream(GetEventWithType(type))) { |
| 1092 SimulateGestureEvent(type, blink::WebGestureDeviceTouchscreen); | 1057 SimulateGestureEvent(type, blink::WebGestureDeviceTouchscreen); |
| 1093 if (type == WebInputEvent::GestureScrollUpdate) | 1058 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); |
| 1094 EXPECT_EQ(2U, GetSentMessageCountAndResetSink()); | |
| 1095 else | |
| 1096 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); | |
| 1097 EXPECT_EQ(0U, ack_handler_->GetAndResetAckCount()); | 1059 EXPECT_EQ(0U, ack_handler_->GetAndResetAckCount()); |
| 1098 EXPECT_EQ(1, client_->in_flight_event_count()); | 1060 EXPECT_EQ(1, client_->in_flight_event_count()); |
| 1099 EXPECT_TRUE(HasPendingEvents()); | 1061 EXPECT_TRUE(HasPendingEvents()); |
| 1100 | 1062 |
| 1101 SendInputEventACK(type, INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 1063 SendInputEventACK(type, INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
| 1102 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); | 1064 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); |
| 1103 EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount()); | 1065 EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount()); |
| 1104 EXPECT_EQ(0, client_->in_flight_event_count()); | 1066 EXPECT_EQ(0, client_->in_flight_event_count()); |
| 1105 EXPECT_FALSE(HasPendingEvents()); | 1067 EXPECT_FALSE(HasPendingEvents()); |
| 1106 continue; | 1068 continue; |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1172 // their ack disposition have been dispatched. | 1134 // their ack disposition have been dispatched. |
| 1173 | 1135 |
| 1174 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, | 1136 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, |
| 1175 blink::WebGestureDeviceTouchscreen); | 1137 blink::WebGestureDeviceTouchscreen); |
| 1176 ASSERT_EQ(1U, GetSentMessageCountAndResetSink()); | 1138 ASSERT_EQ(1U, GetSentMessageCountAndResetSink()); |
| 1177 EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount()); | 1139 EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount()); |
| 1178 EXPECT_EQ(0, client_->in_flight_event_count()); | 1140 EXPECT_EQ(0, client_->in_flight_event_count()); |
| 1179 | 1141 |
| 1180 SimulateGestureEvent(WebInputEvent::GestureScrollUpdate, | 1142 SimulateGestureEvent(WebInputEvent::GestureScrollUpdate, |
| 1181 blink::WebGestureDeviceTouchscreen); | 1143 blink::WebGestureDeviceTouchscreen); |
| 1182 ASSERT_EQ(2U, GetSentMessageCountAndResetSink()); | 1144 ASSERT_EQ(1U, GetSentMessageCountAndResetSink()); |
| 1183 EXPECT_EQ(0U, ack_handler_->GetAndResetAckCount()); | 1145 EXPECT_EQ(0U, ack_handler_->GetAndResetAckCount()); |
| 1184 EXPECT_EQ(1, client_->in_flight_event_count()); | 1146 EXPECT_EQ(1, client_->in_flight_event_count()); |
| 1185 | 1147 |
| 1186 SimulateGestureEvent(WebInputEvent::GestureTapDown, | 1148 SimulateGestureEvent(WebInputEvent::GestureTapDown, |
| 1187 blink::WebGestureDeviceTouchscreen); | 1149 blink::WebGestureDeviceTouchscreen); |
| 1188 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); | 1150 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); |
| 1189 EXPECT_EQ(0U, ack_handler_->GetAndResetAckCount()); | 1151 EXPECT_EQ(0U, ack_handler_->GetAndResetAckCount()); |
| 1190 EXPECT_EQ(1, client_->in_flight_event_count()); | 1152 EXPECT_EQ(1, client_->in_flight_event_count()); |
| 1191 | 1153 |
| 1192 SimulateGestureEvent(WebInputEvent::GestureScrollUpdate, | 1154 SimulateGestureEvent(WebInputEvent::GestureScrollUpdate, |
| (...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1424 ReleaseTouchPoint(0); | 1386 ReleaseTouchPoint(0); |
| 1425 uint32_t touch_release_event_id2 = SendTouchEvent(); | 1387 uint32_t touch_release_event_id2 = SendTouchEvent(); |
| 1426 | 1388 |
| 1427 SendTouchEventACK(WebInputEvent::TouchStart, INPUT_EVENT_ACK_STATE_CONSUMED, | 1389 SendTouchEventACK(WebInputEvent::TouchStart, INPUT_EVENT_ACK_STATE_CONSUMED, |
| 1428 touch_press_event_id1); | 1390 touch_press_event_id1); |
| 1429 SendTouchEventACK(WebInputEvent::TouchMove, INPUT_EVENT_ACK_STATE_CONSUMED, | 1391 SendTouchEventACK(WebInputEvent::TouchMove, INPUT_EVENT_ACK_STATE_CONSUMED, |
| 1430 touch_move_event_id1); | 1392 touch_move_event_id1); |
| 1431 | 1393 |
| 1432 // Ensure touch action is still none, as the next touch start hasn't been | 1394 // Ensure touch action is still none, as the next touch start hasn't been |
| 1433 // acked yet. ScrollBegin and ScrollEnd don't require acks. | 1395 // acked yet. ScrollBegin and ScrollEnd don't require acks. |
| 1434 EXPECT_EQ(6U, GetSentMessageCountAndResetSink()); | 1396 EXPECT_EQ(3U, GetSentMessageCountAndResetSink()); |
| 1435 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, | 1397 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, |
| 1436 blink::WebGestureDeviceTouchscreen); | 1398 blink::WebGestureDeviceTouchscreen); |
| 1437 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); | 1399 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); |
| 1438 SimulateGestureEvent(WebInputEvent::GestureScrollEnd, | 1400 SimulateGestureEvent(WebInputEvent::GestureScrollEnd, |
| 1439 blink::WebGestureDeviceTouchscreen); | 1401 blink::WebGestureDeviceTouchscreen); |
| 1440 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); | 1402 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); |
| 1441 | 1403 |
| 1442 // This allows the next touch sequence to start. | 1404 // This allows the next touch sequence to start. |
| 1443 SendTouchEventACK(WebInputEvent::TouchEnd, INPUT_EVENT_ACK_STATE_CONSUMED, | 1405 SendTouchEventACK(WebInputEvent::TouchEnd, INPUT_EVENT_ACK_STATE_CONSUMED, |
| 1444 touch_release_event_id1); | 1406 touch_release_event_id1); |
| 1445 | 1407 |
| 1446 // Ensure touch action has been set to auto, as a new touch sequence has | 1408 // Ensure touch action has been set to auto, as a new touch sequence has |
| 1447 // started. | 1409 // started. |
| 1448 SendTouchEventACK(WebInputEvent::TouchStart, INPUT_EVENT_ACK_STATE_CONSUMED, | 1410 SendTouchEventACK(WebInputEvent::TouchStart, INPUT_EVENT_ACK_STATE_CONSUMED, |
| 1449 touch_press_event_id2); | 1411 touch_press_event_id2); |
| 1450 SendTouchEventACK(WebInputEvent::TouchMove, INPUT_EVENT_ACK_STATE_CONSUMED, | 1412 SendTouchEventACK(WebInputEvent::TouchMove, INPUT_EVENT_ACK_STATE_CONSUMED, |
| 1451 touch_move_event_id2); | 1413 touch_move_event_id2); |
| 1452 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); | 1414 EXPECT_EQ(3U, GetSentMessageCountAndResetSink()); |
| 1453 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, | 1415 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, |
| 1454 blink::WebGestureDeviceTouchscreen); | 1416 blink::WebGestureDeviceTouchscreen); |
| 1455 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); | 1417 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); |
| 1456 SimulateGestureEvent(WebInputEvent::GestureScrollEnd, | 1418 SimulateGestureEvent(WebInputEvent::GestureScrollEnd, |
| 1457 blink::WebGestureDeviceTouchscreen); | 1419 blink::WebGestureDeviceTouchscreen); |
| 1458 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); | 1420 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); |
| 1459 SendTouchEventACK(WebInputEvent::TouchEnd, INPUT_EVENT_ACK_STATE_CONSUMED, | 1421 SendTouchEventACK(WebInputEvent::TouchEnd, INPUT_EVENT_ACK_STATE_CONSUMED, |
| 1460 touch_release_event_id2); | 1422 touch_release_event_id2); |
| 1461 } | 1423 } |
| 1462 | 1424 |
| (...skipping 19 matching lines...) Expand all Loading... |
| 1482 // Sequence 2 | 1444 // Sequence 2 |
| 1483 PressTouchPoint(1, 1); | 1445 PressTouchPoint(1, 1); |
| 1484 uint32_t touch_press_event_id2 = SendTouchEvent(); | 1446 uint32_t touch_press_event_id2 = SendTouchEvent(); |
| 1485 MoveTouchPoint(0, 50, 50); | 1447 MoveTouchPoint(0, 50, 50); |
| 1486 SendTouchEvent(); | 1448 SendTouchEvent(); |
| 1487 ReleaseTouchPoint(0); | 1449 ReleaseTouchPoint(0); |
| 1488 SendTouchEvent(); | 1450 SendTouchEvent(); |
| 1489 | 1451 |
| 1490 // Ensure we have touch-action:none. ScrollBegin and ScrollEnd don't require | 1452 // Ensure we have touch-action:none. ScrollBegin and ScrollEnd don't require |
| 1491 // acks. | 1453 // acks. |
| 1492 EXPECT_EQ(6U, GetSentMessageCountAndResetSink()); | 1454 EXPECT_EQ(3U, GetSentMessageCountAndResetSink()); |
| 1493 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, | 1455 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, |
| 1494 blink::WebGestureDeviceTouchscreen); | 1456 blink::WebGestureDeviceTouchscreen); |
| 1495 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); | 1457 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); |
| 1496 SimulateGestureEvent(WebInputEvent::GestureScrollEnd, | 1458 SimulateGestureEvent(WebInputEvent::GestureScrollEnd, |
| 1497 blink::WebGestureDeviceTouchscreen); | 1459 blink::WebGestureDeviceTouchscreen); |
| 1498 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); | 1460 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); |
| 1499 | 1461 |
| 1500 SendTouchEventACK(WebInputEvent::TouchEnd, INPUT_EVENT_ACK_STATE_CONSUMED, | 1462 SendTouchEventACK(WebInputEvent::TouchEnd, INPUT_EVENT_ACK_STATE_CONSUMED, |
| 1501 touch_release_event_id1); | 1463 touch_release_event_id1); |
| 1502 SendTouchEventACK(WebInputEvent::TouchStart, | 1464 SendTouchEventACK(WebInputEvent::TouchStart, |
| 1503 INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS, | 1465 INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS, |
| 1504 touch_press_event_id2); | 1466 touch_press_event_id2); |
| 1505 | 1467 |
| 1506 // Ensure touch action has been set to auto, as the touch had no consumer. | 1468 // Ensure touch action has been set to auto, as the touch had no consumer. |
| 1507 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); | 1469 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); |
| 1508 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, | 1470 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, |
| 1509 blink::WebGestureDeviceTouchscreen); | 1471 blink::WebGestureDeviceTouchscreen); |
| 1510 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); | 1472 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); |
| 1511 SimulateGestureEvent(WebInputEvent::GestureScrollEnd, | 1473 SimulateGestureEvent(WebInputEvent::GestureScrollEnd, |
| 1512 blink::WebGestureDeviceTouchscreen); | 1474 blink::WebGestureDeviceTouchscreen); |
| 1513 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); | 1475 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); |
| 1514 } | 1476 } |
| 1515 | 1477 |
| 1516 // Test that TouchActionFilter::ResetTouchAction is called when the touch | 1478 // Test that TouchActionFilter::ResetTouchAction is called when the touch |
| 1517 // handler is removed. | 1479 // handler is removed. |
| 1518 TEST_F(InputRouterImplTest, TouchActionResetWhenTouchHandlerRemoved) { | 1480 TEST_F(InputRouterImplTest, TouchActionResetWhenTouchHandlerRemoved) { |
| 1519 // Touch sequence with touch handler. | 1481 // Touch sequence with touch handler. |
| 1520 OnHasTouchEventHandlers(true); | 1482 OnHasTouchEventHandlers(true); |
| 1521 PressTouchPoint(1, 1); | 1483 PressTouchPoint(1, 1); |
| 1522 uint32_t touch_press_event_id = SendTouchEvent(); | 1484 uint32_t touch_press_event_id = SendTouchEvent(); |
| 1523 MoveTouchPoint(0, 50, 50); | 1485 MoveTouchPoint(0, 50, 50); |
| 1524 uint32_t touch_move_event_id = SendTouchEvent(); | 1486 uint32_t touch_move_event_id = SendTouchEvent(); |
| 1525 OnSetTouchAction(TOUCH_ACTION_NONE); | 1487 OnSetTouchAction(TOUCH_ACTION_NONE); |
| 1526 ReleaseTouchPoint(0); | 1488 ReleaseTouchPoint(0); |
| 1527 uint32_t touch_release_event_id = SendTouchEvent(); | 1489 uint32_t touch_release_event_id = SendTouchEvent(); |
| 1528 EXPECT_EQ(3U, GetSentMessageCountAndResetSink()); | 1490 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); |
| 1529 | 1491 |
| 1530 // Ensure we have touch-action:none, suppressing scroll events. | 1492 // Ensure we have touch-action:none, suppressing scroll events. |
| 1531 SendTouchEventACK(WebInputEvent::TouchStart, INPUT_EVENT_ACK_STATE_CONSUMED, | 1493 SendTouchEventACK(WebInputEvent::TouchStart, INPUT_EVENT_ACK_STATE_CONSUMED, |
| 1532 touch_press_event_id); | 1494 touch_press_event_id); |
| 1533 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); | 1495 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); |
| 1534 SendTouchEventACK(WebInputEvent::TouchMove, | 1496 SendTouchEventACK(WebInputEvent::TouchMove, |
| 1535 INPUT_EVENT_ACK_STATE_NOT_CONSUMED, touch_move_event_id); | 1497 INPUT_EVENT_ACK_STATE_NOT_CONSUMED, touch_move_event_id); |
| 1536 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); | 1498 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); |
| 1537 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, | 1499 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, |
| 1538 blink::WebGestureDeviceTouchscreen); | 1500 blink::WebGestureDeviceTouchscreen); |
| 1539 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); | 1501 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); |
| 1540 | 1502 |
| 1541 SendTouchEventACK(WebInputEvent::TouchEnd, INPUT_EVENT_ACK_STATE_NOT_CONSUMED, | 1503 SendTouchEventACK(WebInputEvent::TouchEnd, INPUT_EVENT_ACK_STATE_NOT_CONSUMED, |
| 1542 touch_release_event_id); | 1504 touch_release_event_id); |
| 1543 SimulateGestureEvent(WebInputEvent::GestureScrollEnd, | 1505 SimulateGestureEvent(WebInputEvent::GestureScrollEnd, |
| 1544 blink::WebGestureDeviceTouchscreen); | 1506 blink::WebGestureDeviceTouchscreen); |
| 1545 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); | 1507 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); |
| 1546 | 1508 |
| 1547 // Sequence without a touch handler. Note that in this case, the view may not | 1509 // Sequence without a touch handler. Note that in this case, the view may not |
| 1548 // necessarily forward touches to the router (as no touch handler exists). | 1510 // necessarily forward touches to the router (as no touch handler exists). |
| 1549 OnHasTouchEventHandlers(false); | 1511 OnHasTouchEventHandlers(false); |
| 1550 | 1512 |
| 1551 // Ensure touch action has been set to auto, as the touch handler has been | 1513 // Ensure touch action has been set to auto, as the touch handler has been |
| 1552 // removed. | 1514 // removed. |
| 1553 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, | 1515 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, |
| 1554 blink::WebGestureDeviceTouchscreen); | 1516 blink::WebGestureDeviceTouchscreen); |
| 1555 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); | 1517 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); |
| 1556 SimulateGestureEvent(WebInputEvent::GestureScrollEnd, | 1518 SimulateGestureEvent(WebInputEvent::GestureScrollEnd, |
| 1557 blink::WebGestureDeviceTouchscreen); | 1519 blink::WebGestureDeviceTouchscreen); |
| 1558 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); | 1520 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); |
| 1559 } | 1521 } |
| 1560 | 1522 |
| 1561 // Test that the double tap gesture depends on the touch action of the first | 1523 // Test that the double tap gesture depends on the touch action of the first |
| 1562 // tap. | 1524 // tap. |
| 1563 TEST_F(InputRouterImplTest, DoubleTapGestureDependsOnFirstTap) { | 1525 TEST_F(InputRouterImplRafAlignedTouchEnabledTest, |
| 1526 DoubleTapGestureDependsOnFirstTap) { |
| 1564 OnHasTouchEventHandlers(true); | 1527 OnHasTouchEventHandlers(true); |
| 1565 | 1528 |
| 1566 // Sequence 1. | 1529 // Sequence 1. |
| 1567 PressTouchPoint(1, 1); | 1530 PressTouchPoint(1, 1); |
| 1568 uint32_t touch_press_event_id1 = SendTouchEvent(); | 1531 uint32_t touch_press_event_id1 = SendTouchEvent(); |
| 1569 OnSetTouchAction(TOUCH_ACTION_NONE); | 1532 OnSetTouchAction(TOUCH_ACTION_NONE); |
| 1570 SendTouchEventACK(WebInputEvent::TouchStart, INPUT_EVENT_ACK_STATE_CONSUMED, | 1533 SendTouchEventACK(WebInputEvent::TouchStart, INPUT_EVENT_ACK_STATE_CONSUMED, |
| 1571 touch_press_event_id1); | 1534 touch_press_event_id1); |
| 1572 | 1535 |
| 1573 ReleaseTouchPoint(0); | 1536 ReleaseTouchPoint(0); |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1620 // This test will become invalid if GestureDoubleTap stops requiring an ack. | 1583 // This test will become invalid if GestureDoubleTap stops requiring an ack. |
| 1621 ASSERT_TRUE(WebInputEventTraits::ShouldBlockEventStream( | 1584 ASSERT_TRUE(WebInputEventTraits::ShouldBlockEventStream( |
| 1622 GetEventWithType(WebInputEvent::GestureDoubleTap))); | 1585 GetEventWithType(WebInputEvent::GestureDoubleTap))); |
| 1623 EXPECT_EQ(1, client_->in_flight_event_count()); | 1586 EXPECT_EQ(1, client_->in_flight_event_count()); |
| 1624 SendInputEventACK(WebInputEvent::GestureTap, INPUT_EVENT_ACK_STATE_CONSUMED); | 1587 SendInputEventACK(WebInputEvent::GestureTap, INPUT_EVENT_ACK_STATE_CONSUMED); |
| 1625 EXPECT_EQ(0, client_->in_flight_event_count()); | 1588 EXPECT_EQ(0, client_->in_flight_event_count()); |
| 1626 } | 1589 } |
| 1627 | 1590 |
| 1628 // Test that the double tap gesture depends on the touch action of the first | 1591 // Test that the double tap gesture depends on the touch action of the first |
| 1629 // tap. | 1592 // tap. |
| 1630 TEST_F(InputRouterImplRafAlignedTouchDisabledTest, | 1593 TEST_F(InputRouterImplTest, DoubleTapGestureDependsOnFirstTap) { |
| 1631 DoubleTapGestureDependsOnFirstTap) { | |
| 1632 OnHasTouchEventHandlers(true); | 1594 OnHasTouchEventHandlers(true); |
| 1633 | 1595 |
| 1634 // Sequence 1. | 1596 // Sequence 1. |
| 1635 PressTouchPoint(1, 1); | 1597 PressTouchPoint(1, 1); |
| 1636 uint32_t touch_press_event_id1 = SendTouchEvent(); | 1598 uint32_t touch_press_event_id1 = SendTouchEvent(); |
| 1637 OnSetTouchAction(TOUCH_ACTION_NONE); | 1599 OnSetTouchAction(TOUCH_ACTION_NONE); |
| 1638 SendTouchEventACK(WebInputEvent::TouchStart, INPUT_EVENT_ACK_STATE_CONSUMED, | 1600 SendTouchEventACK(WebInputEvent::TouchStart, INPUT_EVENT_ACK_STATE_CONSUMED, |
| 1639 touch_press_event_id1); | 1601 touch_press_event_id1); |
| 1640 | 1602 |
| 1641 ReleaseTouchPoint(0); | 1603 ReleaseTouchPoint(0); |
| (...skipping 762 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2404 EXPECT_EQ(80, sent_event->data.flingStart.velocityY); | 2366 EXPECT_EQ(80, sent_event->data.flingStart.velocityY); |
| 2405 | 2367 |
| 2406 const WebGestureEvent* filter_event = | 2368 const WebGestureEvent* filter_event = |
| 2407 GetFilterWebInputEvent<WebGestureEvent>(); | 2369 GetFilterWebInputEvent<WebGestureEvent>(); |
| 2408 TestLocationInFilterEvent(filter_event, orig); | 2370 TestLocationInFilterEvent(filter_event, orig); |
| 2409 EXPECT_EQ(30, filter_event->data.flingStart.velocityX); | 2371 EXPECT_EQ(30, filter_event->data.flingStart.velocityX); |
| 2410 EXPECT_EQ(40, filter_event->data.flingStart.velocityY); | 2372 EXPECT_EQ(40, filter_event->data.flingStart.velocityY); |
| 2411 } | 2373 } |
| 2412 | 2374 |
| 2413 } // namespace content | 2375 } // namespace content |
| OLD | NEW |