| 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 |