Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(66)

Side by Side Diff: content/browser/renderer_host/input/input_router_impl_unittest.cc

Issue 2727683002: Fix unit tests to enable them testing with the rAF aligned touch input. (Closed)
Patch Set: Rebase Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | content/browser/renderer_host/render_widget_host_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
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
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
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
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
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
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
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
OLDNEW
« no previous file with comments | « no previous file | content/browser/renderer_host/render_widget_host_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698