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 "base/basictypes.h" | 5 #include "base/basictypes.h" |
6 #include "base/logging.h" | 6 #include "base/logging.h" |
7 #include "base/memory/scoped_ptr.h" | 7 #include "base/memory/scoped_ptr.h" |
8 #include "base/message_loop/message_loop.h" | 8 #include "base/message_loop/message_loop.h" |
9 #include "content/browser/renderer_host/input/timeout_monitor.h" | 9 #include "content/browser/renderer_host/input/timeout_monitor.h" |
10 #include "content/browser/renderer_host/input/touch_event_queue.h" | 10 #include "content/browser/renderer_host/input/touch_event_queue.h" |
(...skipping 19 matching lines...) Expand all Loading... | |
30 } | 30 } |
31 } // namespace | 31 } // namespace |
32 | 32 |
33 class TouchEventQueueTest : public testing::Test, | 33 class TouchEventQueueTest : public testing::Test, |
34 public TouchEventQueueClient { | 34 public TouchEventQueueClient { |
35 public: | 35 public: |
36 TouchEventQueueTest() | 36 TouchEventQueueTest() |
37 : sent_event_count_(0), | 37 : sent_event_count_(0), |
38 acked_event_count_(0), | 38 acked_event_count_(0), |
39 last_acked_event_state_(INPUT_EVENT_ACK_STATE_UNKNOWN), | 39 last_acked_event_state_(INPUT_EVENT_ACK_STATE_UNKNOWN), |
40 slop_length_dips_(0), | 40 slop_length_dips_(0) {} |
41 touch_scrolling_mode_(TouchEventQueue::TOUCH_SCROLLING_MODE_DEFAULT) {} | |
42 | 41 |
43 ~TouchEventQueueTest() override {} | 42 ~TouchEventQueueTest() override {} |
44 | 43 |
45 // testing::Test | 44 // testing::Test |
46 void SetUp() override { ResetQueueWithConfig(CreateConfig()); } | 45 void SetUp() override { ResetQueueWithConfig(CreateConfig()); } |
47 | 46 |
48 void TearDown() override { queue_.reset(); } | 47 void TearDown() override { queue_.reset(); } |
49 | 48 |
50 // TouchEventQueueClient | 49 // TouchEventQueueClient |
51 void SendTouchEventImmediately( | 50 void SendTouchEventImmediately( |
(...skipping 20 matching lines...) Expand all Loading... | |
72 scoped_ptr<WebGestureEvent> followup_gesture_event = | 71 scoped_ptr<WebGestureEvent> followup_gesture_event = |
73 followup_gesture_event_.Pass(); | 72 followup_gesture_event_.Pass(); |
74 queue_->OnGestureScrollEvent( | 73 queue_->OnGestureScrollEvent( |
75 GestureEventWithLatencyInfo(*followup_gesture_event, | 74 GestureEventWithLatencyInfo(*followup_gesture_event, |
76 ui::LatencyInfo())); | 75 ui::LatencyInfo())); |
77 } | 76 } |
78 } | 77 } |
79 | 78 |
80 protected: | 79 protected: |
81 TouchEventQueue::Config CreateConfig() { | 80 TouchEventQueue::Config CreateConfig() { |
82 TouchEventQueue::Config config; | 81 TouchEventQueue::Config config; |
jdduke (slow)
2015/01/30 00:12:56
Let's just remove this function entirely.
lanwei
2015/02/03 20:44:32
Done.
| |
83 config.touch_scrolling_mode = touch_scrolling_mode_; | |
84 return config; | 82 return config; |
85 } | 83 } |
86 | 84 |
87 void SetTouchScrollingMode(TouchEventQueue::TouchScrollingMode mode) { | |
88 touch_scrolling_mode_ = mode; | |
89 ResetQueueWithConfig(CreateConfig()); | |
90 } | |
91 | |
92 void SetUpForTouchMoveSlopTesting(double slop_length_dips) { | 85 void SetUpForTouchMoveSlopTesting(double slop_length_dips) { |
93 slop_length_dips_ = slop_length_dips; | 86 slop_length_dips_ = slop_length_dips; |
94 } | 87 } |
95 | 88 |
96 void SetUpForTimeoutTesting(base::TimeDelta timeout_delay) { | 89 void SetUpForTimeoutTesting(base::TimeDelta timeout_delay) { |
97 TouchEventQueue::Config config = CreateConfig(); | 90 TouchEventQueue::Config config = CreateConfig(); |
98 config.touch_ack_timeout_delay = timeout_delay; | 91 config.touch_ack_timeout_delay = timeout_delay; |
99 config.touch_ack_timeout_supported = true; | 92 config.touch_ack_timeout_supported = true; |
100 ResetQueueWithConfig(config); | 93 ResetQueueWithConfig(config); |
101 } | 94 } |
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
257 size_t acked_event_count_; | 250 size_t acked_event_count_; |
258 WebTouchEvent last_sent_event_; | 251 WebTouchEvent last_sent_event_; |
259 WebTouchEvent last_acked_event_; | 252 WebTouchEvent last_acked_event_; |
260 InputEventAckState last_acked_event_state_; | 253 InputEventAckState last_acked_event_state_; |
261 SyntheticWebTouchEvent touch_event_; | 254 SyntheticWebTouchEvent touch_event_; |
262 scoped_ptr<WebTouchEvent> followup_touch_event_; | 255 scoped_ptr<WebTouchEvent> followup_touch_event_; |
263 scoped_ptr<WebGestureEvent> followup_gesture_event_; | 256 scoped_ptr<WebGestureEvent> followup_gesture_event_; |
264 scoped_ptr<InputEventAckState> sync_ack_result_; | 257 scoped_ptr<InputEventAckState> sync_ack_result_; |
265 double slop_length_dips_; | 258 double slop_length_dips_; |
266 gfx::PointF anchor_; | 259 gfx::PointF anchor_; |
267 TouchEventQueue::TouchScrollingMode touch_scrolling_mode_; | |
268 base::MessageLoopForUI message_loop_; | 260 base::MessageLoopForUI message_loop_; |
269 }; | 261 }; |
270 | 262 |
271 | 263 |
272 // Tests that touch-events are queued properly. | 264 // Tests that touch-events are queued properly. |
273 TEST_F(TouchEventQueueTest, Basic) { | 265 TEST_F(TouchEventQueueTest, Basic) { |
274 PressTouchPoint(1, 1); | 266 PressTouchPoint(1, 1); |
275 EXPECT_EQ(1U, queued_event_count()); | 267 EXPECT_EQ(1U, queued_event_count()); |
276 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 268 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
277 | 269 |
(...skipping 663 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
941 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 933 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
942 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 934 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
943 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 935 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
944 | 936 |
945 ReleaseTouchPoint(0); | 937 ReleaseTouchPoint(0); |
946 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 938 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
947 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 939 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
948 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 940 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
949 } | 941 } |
950 | 942 |
951 // Tests that no TouchEvents are sent to renderer during scrolling. | |
952 TEST_F(TouchEventQueueTest, TouchCancelOnScroll) { | |
953 SetTouchScrollingMode(TouchEventQueue::TOUCH_SCROLLING_MODE_TOUCHCANCEL); | |
954 // Queue a TouchStart. | |
955 PressTouchPoint(0, 1); | |
956 EXPECT_EQ(1U, GetAndResetSentEventCount()); | |
957 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | |
958 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | |
959 | |
960 MoveTouchPoint(0, 20, 5); | |
961 EXPECT_EQ(1U, queued_event_count()); | |
962 EXPECT_EQ(1U, GetAndResetSentEventCount()); | |
963 | |
964 MoveTouchPoint(0, 30, 15); | |
965 EXPECT_EQ(2U, queued_event_count()); | |
966 EXPECT_EQ(0U, GetAndResetSentEventCount()); | |
967 | |
968 // Queue another TouchStart. | |
969 PressTouchPoint(20, 20); | |
970 EXPECT_EQ(3U, queued_event_count()); | |
971 EXPECT_EQ(0U, GetAndResetSentEventCount()); | |
972 EXPECT_EQ(WebInputEvent::TouchStart, latest_event().type); | |
973 | |
974 WebGestureEvent followup_scroll; | |
975 followup_scroll.type = WebInputEvent::GestureScrollBegin; | |
976 SetFollowupEvent(followup_scroll); | |
977 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | |
978 EXPECT_EQ(1U, GetAndResetSentEventCount()); | |
979 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | |
980 EXPECT_EQ(2U, queued_event_count()); | |
981 EXPECT_TRUE(sent_event().cancelable); | |
982 EXPECT_EQ(WebInputEvent::TouchMove, sent_event().type); | |
983 | |
984 // GestureScrollUpdate inserts a synthetic TouchCancel before the TouchStart. | |
985 followup_scroll.type = WebInputEvent::GestureScrollUpdate; | |
986 SetFollowupEvent(followup_scroll); | |
987 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | |
988 EXPECT_EQ(1U, GetAndResetSentEventCount()); | |
989 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | |
990 EXPECT_EQ(2U, queued_event_count()); | |
991 EXPECT_EQ(WebInputEvent::TouchCancel, sent_event().type); | |
992 EXPECT_FALSE(sent_event().cancelable); | |
993 EXPECT_EQ(WebInputEvent::TouchStart, latest_event().type); | |
994 | |
995 // Acking the TouchCancel will result in dispatch of the next TouchStart. | |
996 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | |
997 // The synthetic TouchCancel should not reach client, only the TouchStart. | |
998 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | |
999 EXPECT_EQ(0U, GetAndResetSentEventCount()); | |
1000 EXPECT_EQ(WebInputEvent::TouchStart, acked_event().type); | |
1001 | |
1002 // TouchMove should not be sent to the renderer. | |
1003 MoveTouchPoint(0, 30, 5); | |
1004 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | |
1005 EXPECT_EQ(0U, GetAndResetSentEventCount()); | |
1006 EXPECT_EQ(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS, acked_event_state()); | |
1007 | |
1008 // GestureScrollUpdates should not change affect touch forwarding. | |
1009 SendGestureEvent(WebInputEvent::GestureScrollUpdate); | |
1010 | |
1011 // TouchEnd should not be sent to the renderer. | |
1012 ReleaseTouchPoint(0); | |
1013 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | |
1014 EXPECT_EQ(0U, GetAndResetSentEventCount()); | |
1015 EXPECT_EQ(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS, acked_event_state()); | |
1016 | |
1017 ReleaseTouchPoint(0); | |
1018 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | |
1019 EXPECT_EQ(0U, GetAndResetSentEventCount()); | |
1020 EXPECT_EQ(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS, acked_event_state()); | |
1021 | |
1022 // Touch events from a new gesture sequence should be forwarded normally. | |
1023 PressTouchPoint(80, 10); | |
1024 EXPECT_EQ(1U, GetAndResetSentEventCount()); | |
1025 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | |
1026 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | |
1027 | |
1028 MoveTouchPoint(0, 80, 20); | |
1029 EXPECT_EQ(1U, GetAndResetSentEventCount()); | |
1030 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | |
1031 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | |
1032 | |
1033 ReleaseTouchPoint(0); | |
1034 EXPECT_EQ(1U, GetAndResetSentEventCount()); | |
1035 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | |
1036 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | |
1037 } | |
1038 | |
1039 // Tests that a scroll event will not insert a synthetic TouchCancel if there | |
1040 // was no consumer for the current touch sequence. | |
1041 TEST_F(TouchEventQueueTest, NoTouchCancelOnScrollIfNoConsumer) { | |
1042 SetTouchScrollingMode(TouchEventQueue::TOUCH_SCROLLING_MODE_TOUCHCANCEL); | |
1043 | |
1044 // Queue a TouchStart. | |
1045 PressTouchPoint(0, 1); | |
1046 EXPECT_EQ(1U, GetAndResetSentEventCount()); | |
1047 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS); | |
1048 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | |
1049 EXPECT_EQ(WebInputEvent::TouchStart, sent_event().type); | |
1050 | |
1051 // Queue a TouchMove that turns into a GestureScrollBegin. | |
1052 WebGestureEvent followup_scroll; | |
1053 followup_scroll.type = WebInputEvent::GestureScrollBegin; | |
1054 SetFollowupEvent(followup_scroll); | |
1055 MoveTouchPoint(0, 20, 5); | |
1056 | |
1057 // The TouchMove has no consumer, and should be ack'ed immediately. However, | |
1058 // *no* synthetic TouchCancel should be inserted as the touch sequence | |
1059 // had no consumer. | |
1060 EXPECT_EQ(0U, queued_event_count()); | |
1061 EXPECT_EQ(0U, GetAndResetSentEventCount()); | |
1062 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | |
1063 EXPECT_EQ(0U, queued_event_count()); | |
1064 EXPECT_EQ(WebInputEvent::TouchStart, sent_event().type); | |
1065 | |
1066 // Subsequent TouchMove's should not be sent to the renderer. | |
1067 MoveTouchPoint(0, 30, 5); | |
1068 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | |
1069 EXPECT_EQ(0U, GetAndResetSentEventCount()); | |
1070 EXPECT_EQ(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS, acked_event_state()); | |
1071 | |
1072 // TouchEnd should not be sent to the renderer. | |
1073 ReleaseTouchPoint(0); | |
1074 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | |
1075 EXPECT_EQ(0U, GetAndResetSentEventCount()); | |
1076 EXPECT_EQ(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS, acked_event_state()); | |
1077 | |
1078 // Touch events from a new gesture sequence should be forwarded normally. | |
1079 PressTouchPoint(80, 10); | |
1080 EXPECT_EQ(1U, GetAndResetSentEventCount()); | |
1081 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | |
1082 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | |
1083 } | |
1084 | |
1085 // Tests that IsTouchStartPendingAck works correctly. | 943 // Tests that IsTouchStartPendingAck works correctly. |
1086 TEST_F(TouchEventQueueTest, PendingStart) { | 944 TEST_F(TouchEventQueueTest, PendingStart) { |
1087 | 945 |
1088 EXPECT_FALSE(IsPendingAckTouchStart()); | 946 EXPECT_FALSE(IsPendingAckTouchStart()); |
1089 | 947 |
1090 // Send the touchstart for one point (#1). | 948 // Send the touchstart for one point (#1). |
1091 PressTouchPoint(1, 1); | 949 PressTouchPoint(1, 1); |
1092 EXPECT_EQ(1U, queued_event_count()); | 950 EXPECT_EQ(1U, queued_event_count()); |
1093 EXPECT_TRUE(IsPendingAckTouchStart()); | 951 EXPECT_TRUE(IsPendingAckTouchStart()); |
1094 | 952 |
(...skipping 572 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1667 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 1525 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
1668 EXPECT_EQ(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS, acked_event_state()); | 1526 EXPECT_EQ(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS, acked_event_state()); |
1669 | 1527 |
1670 // Neither should any further touchmoves be forwarded. | 1528 // Neither should any further touchmoves be forwarded. |
1671 MoveTouchPoint(1, 25, 0); | 1529 MoveTouchPoint(1, 25, 0); |
1672 EXPECT_EQ(0U, GetAndResetSentEventCount()); | 1530 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
1673 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 1531 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
1674 EXPECT_EQ(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS, acked_event_state()); | 1532 EXPECT_EQ(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS, acked_event_state()); |
1675 } | 1533 } |
1676 | 1534 |
1677 TEST_F(TouchEventQueueTest, SyncTouchMoveDoesntCancelTouchOnScroll) { | |
1678 SetTouchScrollingMode(TouchEventQueue::TOUCH_SCROLLING_MODE_SYNC_TOUCHMOVE); | |
1679 // Queue a TouchStart. | |
1680 PressTouchPoint(0, 1); | |
1681 EXPECT_EQ(1U, GetAndResetSentEventCount()); | |
1682 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | |
1683 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | |
1684 | |
1685 MoveTouchPoint(0, 20, 5); | |
1686 EXPECT_EQ(1U, queued_event_count()); | |
1687 EXPECT_EQ(1U, GetAndResetSentEventCount()); | |
1688 | |
1689 // GestureScrollBegin doesn't insert a synthetic TouchCancel. | |
1690 WebGestureEvent followup_scroll; | |
1691 followup_scroll.type = WebInputEvent::GestureScrollBegin; | |
1692 SetFollowupEvent(followup_scroll); | |
1693 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | |
1694 EXPECT_EQ(0U, GetAndResetSentEventCount()); | |
1695 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | |
1696 EXPECT_EQ(0U, queued_event_count()); | |
1697 } | |
1698 | |
1699 TEST_F(TouchEventQueueTest, AsyncTouch) { | 1535 TEST_F(TouchEventQueueTest, AsyncTouch) { |
1700 SetTouchScrollingMode(TouchEventQueue::TOUCH_SCROLLING_MODE_ASYNC_TOUCHMOVE); | |
1701 | |
1702 // Queue a TouchStart. | 1536 // Queue a TouchStart. |
1703 PressTouchPoint(0, 1); | 1537 PressTouchPoint(0, 1); |
1704 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 1538 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
1705 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 1539 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
1706 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 1540 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
1707 | 1541 |
1708 for (int i = 0; i < 3; ++i) { | 1542 for (int i = 0; i < 3; ++i) { |
1709 SendGestureEventAck(WebInputEvent::GestureScrollUpdate, | 1543 SendGestureEventAck(WebInputEvent::GestureScrollUpdate, |
1710 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 1544 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
1711 | 1545 |
(...skipping 11 matching lines...) Expand all Loading... | |
1723 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 1557 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
1724 EXPECT_TRUE(HasPendingAsyncTouchMove()); | 1558 EXPECT_TRUE(HasPendingAsyncTouchMove()); |
1725 EXPECT_EQ(0U, queued_event_count()); | 1559 EXPECT_EQ(0U, queued_event_count()); |
1726 EXPECT_EQ(0U, GetAndResetSentEventCount()); | 1560 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
1727 } | 1561 } |
1728 } | 1562 } |
1729 | 1563 |
1730 // Ensure that touchmove's are appropriately throttled during a typical | 1564 // Ensure that touchmove's are appropriately throttled during a typical |
1731 // scroll sequences that transitions between scrolls consumed and unconsumed. | 1565 // scroll sequences that transitions between scrolls consumed and unconsumed. |
1732 TEST_F(TouchEventQueueTest, AsyncTouchThrottledAfterScroll) { | 1566 TEST_F(TouchEventQueueTest, AsyncTouchThrottledAfterScroll) { |
1733 SetTouchScrollingMode(TouchEventQueue::TOUCH_SCROLLING_MODE_ASYNC_TOUCHMOVE); | |
1734 | |
1735 // Process a TouchStart | 1567 // Process a TouchStart |
1736 PressTouchPoint(0, 1); | 1568 PressTouchPoint(0, 1); |
1737 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 1569 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
1738 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 1570 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
1739 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 1571 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
1740 | 1572 |
1741 // Now send the first touch move and associated GestureScrollBegin. | 1573 // Now send the first touch move and associated GestureScrollBegin. |
1742 MoveTouchPoint(0, 0, 5); | 1574 MoveTouchPoint(0, 0, 5); |
1743 WebGestureEvent followup_scroll; | 1575 WebGestureEvent followup_scroll; |
1744 followup_scroll.type = WebInputEvent::GestureScrollBegin; | 1576 followup_scroll.type = WebInputEvent::GestureScrollBegin; |
(...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1920 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 1752 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
1921 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 1753 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
1922 | 1754 |
1923 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 1755 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
1924 EXPECT_EQ(0U, queued_event_count()); | 1756 EXPECT_EQ(0U, queued_event_count()); |
1925 EXPECT_EQ(0U, GetAndResetSentEventCount()); | 1757 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
1926 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 1758 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
1927 } | 1759 } |
1928 | 1760 |
1929 TEST_F(TouchEventQueueTest, AsyncTouchFlushedByTouchEnd) { | 1761 TEST_F(TouchEventQueueTest, AsyncTouchFlushedByTouchEnd) { |
1930 SetTouchScrollingMode(TouchEventQueue::TOUCH_SCROLLING_MODE_ASYNC_TOUCHMOVE); | |
1931 | |
1932 PressTouchPoint(0, 0); | 1762 PressTouchPoint(0, 0); |
1933 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 1763 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
1934 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 1764 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
1935 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 1765 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
1936 | 1766 |
1937 // Initiate async touchmove dispatch after the start of a scroll sequence. | 1767 // Initiate async touchmove dispatch after the start of a scroll sequence. |
1938 MoveTouchPoint(0, 0, 5); | 1768 MoveTouchPoint(0, 0, 5); |
1939 WebGestureEvent followup_scroll; | 1769 WebGestureEvent followup_scroll; |
1940 followup_scroll.type = WebInputEvent::GestureScrollBegin; | 1770 followup_scroll.type = WebInputEvent::GestureScrollBegin; |
1941 SetFollowupEvent(followup_scroll); | 1771 SetFollowupEvent(followup_scroll); |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1977 // Touchend is not cancelable during async touch dispatch. | 1807 // Touchend is not cancelable during async touch dispatch. |
1978 SendTouchEventAck(INPUT_EVENT_ACK_STATE_IGNORED); | 1808 SendTouchEventAck(INPUT_EVENT_ACK_STATE_IGNORED); |
1979 EXPECT_EQ(WebInputEvent::TouchEnd, sent_event().type); | 1809 EXPECT_EQ(WebInputEvent::TouchEnd, sent_event().type); |
1980 EXPECT_FALSE(sent_event().cancelable); | 1810 EXPECT_FALSE(sent_event().cancelable); |
1981 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 1811 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
1982 } | 1812 } |
1983 | 1813 |
1984 // Ensure that async touch dispatch and touch ack timeout interactions work | 1814 // Ensure that async touch dispatch and touch ack timeout interactions work |
1985 // appropriately. | 1815 // appropriately. |
1986 TEST_F(TouchEventQueueTest, AsyncTouchWithAckTimeout) { | 1816 TEST_F(TouchEventQueueTest, AsyncTouchWithAckTimeout) { |
1987 SetTouchScrollingMode(TouchEventQueue::TOUCH_SCROLLING_MODE_ASYNC_TOUCHMOVE); | |
1988 SetUpForTimeoutTesting(DefaultTouchTimeoutDelay()); | 1817 SetUpForTimeoutTesting(DefaultTouchTimeoutDelay()); |
1989 | 1818 |
1990 // The touchstart should start the timeout. | 1819 // The touchstart should start the timeout. |
1991 PressTouchPoint(0, 0); | 1820 PressTouchPoint(0, 0); |
1992 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 1821 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
1993 EXPECT_TRUE(IsTimeoutRunning()); | 1822 EXPECT_TRUE(IsTimeoutRunning()); |
1994 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 1823 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
1995 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 1824 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
1996 EXPECT_FALSE(IsTimeoutRunning()); | 1825 EXPECT_FALSE(IsTimeoutRunning()); |
1997 | 1826 |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2060 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 1889 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
2061 MoveTouchPoint(0, 25, 5); | 1890 MoveTouchPoint(0, 25, 5); |
2062 EXPECT_FALSE(HasPendingAsyncTouchMove()); | 1891 EXPECT_FALSE(HasPendingAsyncTouchMove()); |
2063 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 1892 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
2064 EXPECT_EQ(0U, GetAndResetSentEventCount()); | 1893 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
2065 } | 1894 } |
2066 | 1895 |
2067 // Ensure that if the touch ack for an async touchmove triggers a follow-up | 1896 // Ensure that if the touch ack for an async touchmove triggers a follow-up |
2068 // touch event, that follow-up touch will be forwarded appropriately. | 1897 // touch event, that follow-up touch will be forwarded appropriately. |
2069 TEST_F(TouchEventQueueTest, AsyncTouchWithTouchCancelAfterAck) { | 1898 TEST_F(TouchEventQueueTest, AsyncTouchWithTouchCancelAfterAck) { |
2070 SetTouchScrollingMode(TouchEventQueue::TOUCH_SCROLLING_MODE_ASYNC_TOUCHMOVE); | |
2071 | |
2072 PressTouchPoint(0, 0); | 1899 PressTouchPoint(0, 0); |
2073 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 1900 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
2074 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 1901 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
2075 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 1902 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
2076 | 1903 |
2077 // The start of a scroll gesture should trigger async touch event dispatch. | 1904 // The start of a scroll gesture should trigger async touch event dispatch. |
2078 MoveTouchPoint(0, 1, 1); | 1905 MoveTouchPoint(0, 1, 1); |
2079 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 1906 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
2080 WebGestureEvent followup_scroll; | 1907 WebGestureEvent followup_scroll; |
2081 followup_scroll.type = WebInputEvent::GestureScrollBegin; | 1908 followup_scroll.type = WebInputEvent::GestureScrollBegin; |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2115 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 1942 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
2116 EXPECT_EQ(0U, queued_event_count()); | 1943 EXPECT_EQ(0U, queued_event_count()); |
2117 EXPECT_EQ(WebInputEvent::TouchCancel, acked_event().type); | 1944 EXPECT_EQ(WebInputEvent::TouchCancel, acked_event().type); |
2118 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 1945 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
2119 EXPECT_EQ(0U, GetAndResetSentEventCount()); | 1946 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
2120 } | 1947 } |
2121 | 1948 |
2122 // Ensure that the async touch is fully reset if the touch sequence restarts | 1949 // Ensure that the async touch is fully reset if the touch sequence restarts |
2123 // without properly terminating. | 1950 // without properly terminating. |
2124 TEST_F(TouchEventQueueTest, AsyncTouchWithHardTouchStartReset) { | 1951 TEST_F(TouchEventQueueTest, AsyncTouchWithHardTouchStartReset) { |
2125 SetTouchScrollingMode(TouchEventQueue::TOUCH_SCROLLING_MODE_ASYNC_TOUCHMOVE); | |
2126 | |
2127 PressTouchPoint(0, 0); | 1952 PressTouchPoint(0, 0); |
2128 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 1953 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
2129 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 1954 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
2130 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 1955 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
2131 | 1956 |
2132 // Trigger async touchmove dispatch. | 1957 // Trigger async touchmove dispatch. |
2133 MoveTouchPoint(0, 1, 1); | 1958 MoveTouchPoint(0, 1, 1); |
2134 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 1959 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
2135 WebGestureEvent followup_scroll; | 1960 WebGestureEvent followup_scroll; |
2136 followup_scroll.type = WebInputEvent::GestureScrollBegin; | 1961 followup_scroll.type = WebInputEvent::GestureScrollBegin; |
(...skipping 17 matching lines...) Expand all Loading... | |
2154 ResetTouchEvent(); | 1979 ResetTouchEvent(); |
2155 | 1980 |
2156 PressTouchPoint(0, 0); | 1981 PressTouchPoint(0, 0); |
2157 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 1982 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
2158 EXPECT_EQ(WebInputEvent::TouchStart, sent_event().type); | 1983 EXPECT_EQ(WebInputEvent::TouchStart, sent_event().type); |
2159 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 1984 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
2160 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 1985 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
2161 } | 1986 } |
2162 | 1987 |
2163 TEST_F(TouchEventQueueTest, TouchAbsorptionWithConsumedFirstMove) { | 1988 TEST_F(TouchEventQueueTest, TouchAbsorptionWithConsumedFirstMove) { |
2164 SetTouchScrollingMode(TouchEventQueue::TOUCH_SCROLLING_MODE_ASYNC_TOUCHMOVE); | |
2165 | |
2166 // Queue a TouchStart. | 1989 // Queue a TouchStart. |
2167 PressTouchPoint(0, 1); | 1990 PressTouchPoint(0, 1); |
2168 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 1991 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
2169 EXPECT_EQ(0U, queued_event_count()); | 1992 EXPECT_EQ(0U, queued_event_count()); |
2170 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 1993 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
2171 | 1994 |
2172 MoveTouchPoint(0, 20, 5); | 1995 MoveTouchPoint(0, 20, 5); |
2173 SendGestureEvent(blink::WebInputEvent::GestureScrollBegin); | 1996 SendGestureEvent(blink::WebInputEvent::GestureScrollBegin); |
2174 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); | 1997 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); |
2175 EXPECT_EQ(0U, queued_event_count()); | 1998 EXPECT_EQ(0U, queued_event_count()); |
(...skipping 19 matching lines...) Expand all Loading... | |
2195 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 2018 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
2196 | 2019 |
2197 // Touch move event is throttled. | 2020 // Touch move event is throttled. |
2198 MoveTouchPoint(0, 60, 5); | 2021 MoveTouchPoint(0, 60, 5); |
2199 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); | 2022 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); |
2200 EXPECT_EQ(0U, queued_event_count()); | 2023 EXPECT_EQ(0U, queued_event_count()); |
2201 EXPECT_EQ(0U, GetAndResetSentEventCount()); | 2024 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
2202 } | 2025 } |
2203 | 2026 |
2204 TEST_F(TouchEventQueueTest, TouchStartCancelableDuringScroll) { | 2027 TEST_F(TouchEventQueueTest, TouchStartCancelableDuringScroll) { |
2205 SetTouchScrollingMode(TouchEventQueue::TOUCH_SCROLLING_MODE_ASYNC_TOUCHMOVE); | |
2206 | |
2207 // Queue a touchstart and touchmove that go unconsumed, transitioning to an | 2028 // Queue a touchstart and touchmove that go unconsumed, transitioning to an |
2208 // active scroll sequence. | 2029 // active scroll sequence. |
2209 PressTouchPoint(0, 1); | 2030 PressTouchPoint(0, 1); |
2210 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 2031 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
2211 ASSERT_EQ(1U, GetAndResetSentEventCount()); | 2032 ASSERT_EQ(1U, GetAndResetSentEventCount()); |
2212 EXPECT_TRUE(sent_event().cancelable); | 2033 EXPECT_TRUE(sent_event().cancelable); |
2213 | 2034 |
2214 MoveTouchPoint(0, 20, 5); | 2035 MoveTouchPoint(0, 20, 5); |
2215 EXPECT_TRUE(sent_event().cancelable); | 2036 EXPECT_TRUE(sent_event().cancelable); |
2216 SendGestureEvent(blink::WebInputEvent::GestureScrollBegin); | 2037 SendGestureEvent(blink::WebInputEvent::GestureScrollBegin); |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2294 | 2115 |
2295 // Give the touchmove a valid id; it should be sent. | 2116 // Give the touchmove a valid id; it should be sent. |
2296 event.touches[0].id = press_id; | 2117 event.touches[0].id = press_id; |
2297 SendTouchEvent(event); | 2118 SendTouchEvent(event); |
2298 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 2119 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
2299 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); | 2120 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); |
2300 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 2121 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
2301 } | 2122 } |
2302 | 2123 |
2303 } // namespace content | 2124 } // namespace content |
OLD | NEW |