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 241 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
252 MoveTouchPoint(0, 5, 5); | 252 MoveTouchPoint(0, 5, 5); |
253 EXPECT_EQ(2U, queued_event_count()); | 253 EXPECT_EQ(2U, queued_event_count()); |
254 EXPECT_EQ(0U, GetAndResetSentEventCount()); | 254 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
255 | 255 |
256 // Receive an ACK for the first touch-event. | 256 // Receive an ACK for the first touch-event. |
257 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); | 257 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); |
258 EXPECT_EQ(1U, queued_event_count()); | 258 EXPECT_EQ(1U, queued_event_count()); |
259 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 259 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
260 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 260 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
261 EXPECT_EQ(WebInputEvent::TouchStart, acked_event().type); | 261 EXPECT_EQ(WebInputEvent::TouchStart, acked_event().type); |
| 262 EXPECT_TRUE(acked_event().cancelable); |
262 | 263 |
263 // Receive an ACK for the second touch-event. | 264 // Receive an ACK for the second touch-event. |
264 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); | 265 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); |
265 EXPECT_EQ(0U, queued_event_count()); | 266 EXPECT_EQ(0U, queued_event_count()); |
266 EXPECT_EQ(0U, GetAndResetSentEventCount()); | 267 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
267 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 268 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
268 EXPECT_EQ(WebInputEvent::TouchMove, acked_event().type); | 269 EXPECT_EQ(WebInputEvent::TouchMove, acked_event().type); |
| 270 EXPECT_TRUE(acked_event().cancelable); |
269 } | 271 } |
270 | 272 |
271 // Tests that the touch-queue is emptied if a page stops listening for touch | 273 // Tests that the touch-queue is emptied if a page stops listening for touch |
272 // events. | 274 // events. |
273 TEST_F(TouchEventQueueTest, QueueFlushedWhenHandlersRemoved) { | 275 TEST_F(TouchEventQueueTest, QueueFlushedWhenHandlersRemoved) { |
274 OnHasTouchEventHandlers(true); | 276 OnHasTouchEventHandlers(true); |
275 EXPECT_EQ(0U, queued_event_count()); | 277 EXPECT_EQ(0U, queued_event_count()); |
276 EXPECT_EQ(0U, GetAndResetSentEventCount()); | 278 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
277 | 279 |
278 // Send a touch-press event. | 280 // Send a touch-press event. |
(...skipping 568 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
847 | 849 |
848 // GestureScrollBegin inserts a synthetic TouchCancel before the TouchStart. | 850 // GestureScrollBegin inserts a synthetic TouchCancel before the TouchStart. |
849 WebGestureEvent followup_scroll; | 851 WebGestureEvent followup_scroll; |
850 followup_scroll.type = WebInputEvent::GestureScrollBegin; | 852 followup_scroll.type = WebInputEvent::GestureScrollBegin; |
851 SetFollowupEvent(followup_scroll); | 853 SetFollowupEvent(followup_scroll); |
852 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 854 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
853 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 855 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
854 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 856 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
855 EXPECT_EQ(2U, queued_event_count()); | 857 EXPECT_EQ(2U, queued_event_count()); |
856 EXPECT_EQ(WebInputEvent::TouchCancel, sent_event().type); | 858 EXPECT_EQ(WebInputEvent::TouchCancel, sent_event().type); |
| 859 EXPECT_FALSE(sent_event().cancelable); |
857 EXPECT_EQ(WebInputEvent::TouchStart, latest_event().type); | 860 EXPECT_EQ(WebInputEvent::TouchStart, latest_event().type); |
858 | 861 |
859 // Acking the TouchCancel will result in dispatch of the next TouchStart. | 862 // Acking the TouchCancel will result in dispatch of the next TouchStart. |
860 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 863 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
861 // The synthetic TouchCancel should not reach client, only the TouchStart. | 864 // The synthetic TouchCancel should not reach client, only the TouchStart. |
862 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 865 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
863 EXPECT_EQ(0U, GetAndResetSentEventCount()); | 866 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
864 EXPECT_EQ(WebInputEvent::TouchStart, acked_event().type); | 867 EXPECT_EQ(WebInputEvent::TouchStart, acked_event().type); |
865 | 868 |
866 // TouchMove should not be sent to the renderer. | 869 // TouchMove should not be sent to the renderer. |
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1046 // timed-out event and the future cancel event. | 1049 // timed-out event and the future cancel event. |
1047 EXPECT_FALSE(IsTimeoutRunning()); | 1050 EXPECT_FALSE(IsTimeoutRunning()); |
1048 EXPECT_EQ(0U, GetAndResetSentEventCount()); | 1051 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
1049 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 1052 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
1050 | 1053 |
1051 // Ack'ing the original event should trigger a cancel event. | 1054 // Ack'ing the original event should trigger a cancel event. |
1052 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 1055 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
1053 EXPECT_FALSE(IsTimeoutRunning()); | 1056 EXPECT_FALSE(IsTimeoutRunning()); |
1054 EXPECT_EQ(0U, GetAndResetAckedEventCount()); | 1057 EXPECT_EQ(0U, GetAndResetAckedEventCount()); |
1055 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 1058 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
| 1059 EXPECT_EQ(WebInputEvent::TouchCancel, sent_event().type); |
| 1060 EXPECT_FALSE(sent_event().cancelable); |
1056 | 1061 |
1057 // Touch events should not be forwarded until we receive the cancel acks. | 1062 // Touch events should not be forwarded until we receive the cancel acks. |
1058 MoveTouchPoint(0, 1, 1); | 1063 MoveTouchPoint(0, 1, 1); |
1059 ASSERT_EQ(0U, GetAndResetSentEventCount()); | 1064 ASSERT_EQ(0U, GetAndResetSentEventCount()); |
1060 ASSERT_EQ(1U, GetAndResetAckedEventCount()); | 1065 ASSERT_EQ(1U, GetAndResetAckedEventCount()); |
1061 | 1066 |
1062 ReleaseTouchPoint(0); | 1067 ReleaseTouchPoint(0); |
1063 ASSERT_EQ(0U, GetAndResetSentEventCount()); | 1068 ASSERT_EQ(0U, GetAndResetSentEventCount()); |
1064 ASSERT_EQ(1U, GetAndResetAckedEventCount()); | 1069 ASSERT_EQ(1U, GetAndResetAckedEventCount()); |
1065 | 1070 |
1066 // The synthetic TouchCancel ack should not reach the client, but should | 1071 // The synthetic TouchCancel ack should not reach the client, but should |
1067 // resume touch forwarding. | 1072 // resume touch forwarding. |
1068 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 1073 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
1069 EXPECT_EQ(0U, GetAndResetSentEventCount()); | 1074 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
1070 EXPECT_EQ(0U, GetAndResetAckedEventCount()); | 1075 EXPECT_EQ(0U, GetAndResetAckedEventCount()); |
1071 | 1076 |
1072 // Subsequent events should be handled normally. | 1077 // Subsequent events should be handled normally. |
1073 PressTouchPoint(0, 1); | 1078 PressTouchPoint(0, 1); |
1074 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 1079 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
1075 EXPECT_EQ(0U, GetAndResetAckedEventCount()); | 1080 EXPECT_EQ(0U, GetAndResetAckedEventCount()); |
| 1081 EXPECT_EQ(WebInputEvent::TouchStart, sent_event().type); |
| 1082 EXPECT_TRUE(sent_event().cancelable); |
1076 } | 1083 } |
1077 | 1084 |
1078 // Tests that the timeout is never started if the renderer consumes | 1085 // Tests that the timeout is never started if the renderer consumes |
1079 // a TouchEvent from the current touch sequence. | 1086 // a TouchEvent from the current touch sequence. |
1080 TEST_F(TouchEventQueueTest, NoTouchTimeoutIfRendererIsConsumingGesture) { | 1087 TEST_F(TouchEventQueueTest, NoTouchTimeoutIfRendererIsConsumingGesture) { |
1081 SetUpForTimeoutTesting(DefaultTouchTimeoutDelay()); | 1088 SetUpForTimeoutTesting(DefaultTouchTimeoutDelay()); |
1082 | 1089 |
1083 // Queue a TouchStart. | 1090 // Queue a TouchStart. |
1084 PressTouchPoint(0, 1); | 1091 PressTouchPoint(0, 1); |
1085 ASSERT_TRUE(IsTimeoutRunning()); | 1092 ASSERT_TRUE(IsTimeoutRunning()); |
(...skipping 524 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1610 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 1617 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
1611 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 1618 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
1612 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 1619 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
1613 MoveTouchPoint(0, 0, 10); | 1620 MoveTouchPoint(0, 0, 10); |
1614 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 1621 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
1615 EXPECT_EQ(0U, queued_event_count()); | 1622 EXPECT_EQ(0U, queued_event_count()); |
1616 EXPECT_EQ(0U, GetAndResetSentEventCount()); | 1623 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
1617 } | 1624 } |
1618 | 1625 |
1619 } // namespace content | 1626 } // namespace content |
OLD | NEW |