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

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

Issue 886563005: Remove touch-scrolling-mode flag (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 10 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
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 "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
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
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
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
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
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
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
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
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
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698