| 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 17 matching lines...) Expand all Loading... |
| 28 TouchEventQueueTest() | 28 TouchEventQueueTest() |
| 29 : sent_event_count_(0), | 29 : sent_event_count_(0), |
| 30 acked_event_count_(0), | 30 acked_event_count_(0), |
| 31 last_acked_event_state_(INPUT_EVENT_ACK_STATE_UNKNOWN) {} | 31 last_acked_event_state_(INPUT_EVENT_ACK_STATE_UNKNOWN) {} |
| 32 | 32 |
| 33 virtual ~TouchEventQueueTest() {} | 33 virtual ~TouchEventQueueTest() {} |
| 34 | 34 |
| 35 // testing::Test | 35 // testing::Test |
| 36 virtual void SetUp() OVERRIDE { | 36 virtual void SetUp() OVERRIDE { |
| 37 queue_.reset(new TouchEventQueue(this)); | 37 queue_.reset(new TouchEventQueue(this)); |
| 38 queue_->OnHasTouchEventHandlers(true); |
| 38 } | 39 } |
| 39 | 40 |
| 40 virtual void TearDown() OVERRIDE { | 41 virtual void TearDown() OVERRIDE { |
| 41 queue_.reset(); | 42 queue_.reset(); |
| 42 } | 43 } |
| 43 | 44 |
| 44 // TouchEventQueueClient | 45 // TouchEventQueueClient |
| 45 virtual void SendTouchEventImmediately( | 46 virtual void SendTouchEventImmediately( |
| 46 const TouchEventWithLatencyInfo& event) OVERRIDE { | 47 const TouchEventWithLatencyInfo& event) OVERRIDE { |
| 47 ++sent_event_count_; | 48 ++sent_event_count_; |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 138 size_t GetAndResetSentEventCount() { | 139 size_t GetAndResetSentEventCount() { |
| 139 size_t count = sent_event_count_; | 140 size_t count = sent_event_count_; |
| 140 sent_event_count_ = 0; | 141 sent_event_count_ = 0; |
| 141 return count; | 142 return count; |
| 142 } | 143 } |
| 143 | 144 |
| 144 bool IsPendingAckTouchStart() const { | 145 bool IsPendingAckTouchStart() const { |
| 145 return queue_->IsPendingAckTouchStart(); | 146 return queue_->IsPendingAckTouchStart(); |
| 146 } | 147 } |
| 147 | 148 |
| 148 void Flush() { | 149 void OnHasTouchEventHandlers(bool has_handlers) { |
| 149 queue_->FlushQueue(); | 150 queue_->OnHasTouchEventHandlers(has_handlers); |
| 150 } | |
| 151 | |
| 152 void SetEnableTouchForwarding(bool enabled) { | |
| 153 queue_->no_touch_to_renderer_ = !enabled; | |
| 154 } | 151 } |
| 155 | 152 |
| 156 bool WillForwardTouchEvents() { | 153 bool WillForwardTouchEvents() { |
| 157 return !queue_->no_touch_to_renderer_ && !queue_->HasTimeoutEvent(); | 154 return queue_->has_handlers_ && |
| 155 !queue_->scroll_in_progress_ && |
| 156 !queue_->HasTimeoutEvent(); |
| 158 } | 157 } |
| 159 | 158 |
| 160 bool IsTimeoutRunning() { | 159 bool IsTimeoutRunning() { |
| 161 return queue_->IsTimeoutRunningForTesting(); | 160 return queue_->IsTimeoutRunningForTesting(); |
| 162 } | 161 } |
| 163 | 162 |
| 164 size_t queued_event_count() const { | 163 size_t queued_event_count() const { |
| 165 return queue_->size(); | 164 return queue_->size(); |
| 166 } | 165 } |
| 167 | 166 |
| 168 const WebTouchEvent& latest_event() const { | 167 const WebTouchEvent& latest_event() const { |
| 169 return queue_->GetLatestEventForTesting().event; | 168 return queue_->GetLatestEventForTesting().event; |
| 170 } | 169 } |
| 171 | 170 |
| 172 const WebTouchEvent& acked_event() const { | 171 const WebTouchEvent& acked_event() const { |
| 173 return last_acked_event_; | 172 return last_acked_event_; |
| 174 } | 173 } |
| 175 | 174 |
| 176 const WebTouchEvent& sent_event() const { | 175 const WebTouchEvent& sent_event() const { |
| 177 return last_sent_event_; | 176 return last_sent_event_; |
| 178 } | 177 } |
| 179 | 178 |
| 180 InputEventAckState acked_event_state() const { | 179 InputEventAckState acked_event_state() const { |
| 181 return last_acked_event_state_; | 180 return last_acked_event_state_; |
| 182 } | 181 } |
| 183 | 182 |
| 184 void set_no_touch_to_renderer(bool no_touch) { | |
| 185 queue_->no_touch_to_renderer_ = no_touch; | |
| 186 } | |
| 187 | |
| 188 bool no_touch_to_renderer() const { | |
| 189 return queue_->no_touch_to_renderer_; | |
| 190 } | |
| 191 | |
| 192 private: | 183 private: |
| 193 void SendTouchEvent() { | 184 void SendTouchEvent() { |
| 194 SendTouchEvent(touch_event_); | 185 SendTouchEvent(touch_event_); |
| 195 touch_event_.ResetPoints(); | 186 touch_event_.ResetPoints(); |
| 196 } | 187 } |
| 197 | 188 |
| 198 scoped_ptr<TouchEventQueue> queue_; | 189 scoped_ptr<TouchEventQueue> queue_; |
| 199 size_t sent_event_count_; | 190 size_t sent_event_count_; |
| 200 size_t acked_event_count_; | 191 size_t acked_event_count_; |
| 201 WebTouchEvent last_sent_event_; | 192 WebTouchEvent last_sent_event_; |
| (...skipping 28 matching lines...) Expand all Loading... |
| 230 // Receive an ACK for the second touch-event. | 221 // Receive an ACK for the second touch-event. |
| 231 SendTouchEventACK(INPUT_EVENT_ACK_STATE_CONSUMED); | 222 SendTouchEventACK(INPUT_EVENT_ACK_STATE_CONSUMED); |
| 232 EXPECT_EQ(0U, queued_event_count()); | 223 EXPECT_EQ(0U, queued_event_count()); |
| 233 EXPECT_EQ(0U, GetAndResetSentEventCount()); | 224 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
| 234 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 225 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
| 235 EXPECT_EQ(WebInputEvent::TouchMove, acked_event().type); | 226 EXPECT_EQ(WebInputEvent::TouchMove, acked_event().type); |
| 236 } | 227 } |
| 237 | 228 |
| 238 // Tests that the touch-queue is emptied if a page stops listening for touch | 229 // Tests that the touch-queue is emptied if a page stops listening for touch |
| 239 // events. | 230 // events. |
| 240 TEST_F(TouchEventQueueTest, Flush) { | 231 TEST_F(TouchEventQueueTest, QueueFlushedWhenHandlersRemoved) { |
| 241 Flush(); | 232 OnHasTouchEventHandlers(true); |
| 242 EXPECT_EQ(0U, queued_event_count()); | 233 EXPECT_EQ(0U, queued_event_count()); |
| 243 EXPECT_EQ(0U, GetAndResetSentEventCount()); | 234 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
| 244 | 235 |
| 245 // Send a touch-press event. | 236 // Send a touch-press event. |
| 246 PressTouchPoint(1, 1); | 237 PressTouchPoint(1, 1); |
| 247 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 238 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
| 248 | 239 |
| 249 ReleaseTouchPoint(0); | 240 ReleaseTouchPoint(0); |
| 250 | 241 |
| 251 // Events will be queued until the first sent event is ack'ed. | 242 // Events will be queued until the first sent event is ack'ed. |
| 252 for (int i = 5; i < 15; ++i) { | 243 for (int i = 5; i < 15; ++i) { |
| 253 PressTouchPoint(1, 1); | 244 PressTouchPoint(1, 1); |
| 254 MoveTouchPoint(0, i, i); | 245 MoveTouchPoint(0, i, i); |
| 255 ReleaseTouchPoint(0); | 246 ReleaseTouchPoint(0); |
| 256 } | 247 } |
| 257 EXPECT_EQ(32U, queued_event_count()); | 248 EXPECT_EQ(32U, queued_event_count()); |
| 258 EXPECT_EQ(0U, GetAndResetSentEventCount()); | 249 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
| 259 | 250 |
| 260 // Receive an ACK for the first touch-event. One of the queued touch-event | 251 // Receive an ACK for the first touch-event. One of the queued touch-event |
| 261 // should be forwarded. | 252 // should be forwarded. |
| 262 SendTouchEventACK(INPUT_EVENT_ACK_STATE_CONSUMED); | 253 SendTouchEventACK(INPUT_EVENT_ACK_STATE_CONSUMED); |
| 263 EXPECT_EQ(31U, queued_event_count()); | 254 EXPECT_EQ(31U, queued_event_count()); |
| 264 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 255 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
| 265 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 256 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
| 266 EXPECT_EQ(WebInputEvent::TouchStart, acked_event().type); | 257 EXPECT_EQ(WebInputEvent::TouchStart, acked_event().type); |
| 267 | 258 |
| 268 // Flush the queue. The touch-event queue should now be emptied, but none of | 259 // Flush the queue. The touch-event queue should now be emptied, but none of |
| 269 // the queued touch-events should be sent to the renderer. | 260 // the queued touch-events should be sent to the renderer. |
| 270 Flush(); | 261 OnHasTouchEventHandlers(false); |
| 271 EXPECT_EQ(0U, queued_event_count()); | 262 EXPECT_EQ(0U, queued_event_count()); |
| 272 EXPECT_EQ(0U, GetAndResetSentEventCount()); | 263 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
| 273 EXPECT_EQ(31U, GetAndResetAckedEventCount()); | 264 EXPECT_EQ(31U, GetAndResetAckedEventCount()); |
| 274 } | 265 } |
| 275 | 266 |
| 267 // Tests that removal of a touch handler during a touch sequence will prevent |
| 268 // the remaining sequence from being forwarded, even if another touch handler is |
| 269 // registered during the same touch sequence. |
| 270 TEST_F(TouchEventQueueTest, ActiveSequenceDroppedWhenHandlersRemoved) { |
| 271 // Send a touch-press event. |
| 272 PressTouchPoint(1, 1); |
| 273 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
| 274 EXPECT_EQ(1U, queued_event_count()); |
| 275 |
| 276 // Queue a touch-move event. |
| 277 MoveTouchPoint(0, 5, 5); |
| 278 EXPECT_EQ(2U, queued_event_count()); |
| 279 EXPECT_EQ(0U, GetAndResetAckedEventCount()); |
| 280 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
| 281 |
| 282 // Touch handle deregistration should flush the queue. |
| 283 OnHasTouchEventHandlers(false); |
| 284 EXPECT_EQ(2U, GetAndResetAckedEventCount()); |
| 285 EXPECT_EQ(0U, queued_event_count()); |
| 286 |
| 287 // The ack should be ignored as the touch queue is now empty. |
| 288 SendTouchEventACK(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS); |
| 289 EXPECT_EQ(0U, GetAndResetAckedEventCount()); |
| 290 EXPECT_EQ(0U, queued_event_count()); |
| 291 |
| 292 // Events should be dropped while there is no touch handler. |
| 293 MoveTouchPoint(0, 10, 10); |
| 294 EXPECT_EQ(0U, queued_event_count()); |
| 295 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
| 296 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
| 297 |
| 298 // Simulate touch handler registration in the middle of a touch sequence. |
| 299 OnHasTouchEventHandlers(true); |
| 300 |
| 301 // The touch end for the interrupted sequence should be dropped. |
| 302 ReleaseTouchPoint(0); |
| 303 EXPECT_EQ(0U, queued_event_count()); |
| 304 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
| 305 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
| 306 |
| 307 // A new touch sequence should be forwarded properly. |
| 308 PressTouchPoint(1, 1); |
| 309 EXPECT_EQ(1U, queued_event_count()); |
| 310 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
| 311 } |
| 312 |
| 276 // Tests that touch-events are coalesced properly in the queue. | 313 // Tests that touch-events are coalesced properly in the queue. |
| 277 TEST_F(TouchEventQueueTest, Coalesce) { | 314 TEST_F(TouchEventQueueTest, Coalesce) { |
| 278 // Send a touch-press event. | 315 // Send a touch-press event. |
| 279 PressTouchPoint(1, 1); | 316 PressTouchPoint(1, 1); |
| 280 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 317 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
| 281 | 318 |
| 282 // Send a few touch-move events, followed by a touch-release event. All the | 319 // Send a few touch-move events, followed by a touch-release event. All the |
| 283 // touch-move events should be coalesced into a single event. | 320 // touch-move events should be coalesced into a single event. |
| 284 for (int i = 5; i < 15; ++i) | 321 for (int i = 5; i < 15; ++i) |
| 285 MoveTouchPoint(0, i, i); | 322 MoveTouchPoint(0, i, i); |
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 386 MoveTouchPoint(0, 10, 10); | 423 MoveTouchPoint(0, 10, 10); |
| 387 EXPECT_EQ(0U, GetAndResetSentEventCount()); | 424 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
| 388 EXPECT_EQ(2U, queued_event_count()); | 425 EXPECT_EQ(2U, queued_event_count()); |
| 389 | 426 |
| 390 // Receive an ACK for the press. This should cause the queued touch-move to | 427 // Receive an ACK for the press. This should cause the queued touch-move to |
| 391 // be sent to the renderer. | 428 // be sent to the renderer. |
| 392 SendTouchEventACK(INPUT_EVENT_ACK_STATE_CONSUMED); | 429 SendTouchEventACK(INPUT_EVENT_ACK_STATE_CONSUMED); |
| 393 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 430 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
| 394 EXPECT_EQ(1U, queued_event_count()); | 431 EXPECT_EQ(1U, queued_event_count()); |
| 395 | 432 |
| 396 Flush(); | 433 OnHasTouchEventHandlers(false); |
| 397 EXPECT_EQ(0U, GetAndResetSentEventCount()); | 434 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
| 398 EXPECT_EQ(0U, queued_event_count()); | 435 EXPECT_EQ(0U, queued_event_count()); |
| 399 | 436 |
| 400 // Now receive an ACK for the move. | 437 // Now receive an ACK for the move. |
| 401 SendTouchEventACK(INPUT_EVENT_ACK_STATE_CONSUMED); | 438 SendTouchEventACK(INPUT_EVENT_ACK_STATE_CONSUMED); |
| 402 EXPECT_EQ(0U, GetAndResetSentEventCount()); | 439 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
| 403 EXPECT_EQ(0U, queued_event_count()); | 440 EXPECT_EQ(0U, queued_event_count()); |
| 404 } | 441 } |
| 405 | 442 |
| 406 // Tests that touch-move events are not sent to the renderer if the preceding | 443 // Tests that touch-move events are not sent to the renderer if the preceding |
| (...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 678 EXPECT_EQ(1U, queued_event_count()); | 715 EXPECT_EQ(1U, queued_event_count()); |
| 679 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 716 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
| 680 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 717 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
| 681 EXPECT_EQ(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS, acked_event_state()); | 718 EXPECT_EQ(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS, acked_event_state()); |
| 682 EXPECT_EQ(WebInputEvent::TouchMove, acked_event().type); | 719 EXPECT_EQ(WebInputEvent::TouchMove, acked_event().type); |
| 683 } | 720 } |
| 684 | 721 |
| 685 // Tests basic TouchEvent forwarding suppression. | 722 // Tests basic TouchEvent forwarding suppression. |
| 686 TEST_F(TouchEventQueueTest, NoTouchBasic) { | 723 TEST_F(TouchEventQueueTest, NoTouchBasic) { |
| 687 // Disable TouchEvent forwarding. | 724 // Disable TouchEvent forwarding. |
| 688 SetEnableTouchForwarding(false); | 725 OnHasTouchEventHandlers(false); |
| 689 MoveTouchPoint(0, 30, 5); | 726 MoveTouchPoint(0, 30, 5); |
| 690 EXPECT_EQ(0U, GetAndResetSentEventCount()); | 727 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
| 691 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 728 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
| 692 | 729 |
| 693 // TouchMove should not be sent to renderer. | 730 // TouchMove should not be sent to renderer. |
| 694 MoveTouchPoint(0, 65, 10); | 731 MoveTouchPoint(0, 65, 10); |
| 695 EXPECT_EQ(0U, GetAndResetSentEventCount()); | 732 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
| 696 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 733 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
| 697 | 734 |
| 698 // TouchEnd should not be sent to renderer. | 735 // TouchEnd should not be sent to renderer. |
| 699 ReleaseTouchPoint(0); | 736 ReleaseTouchPoint(0); |
| 700 EXPECT_EQ(0U, GetAndResetSentEventCount()); | 737 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
| 701 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 738 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
| 702 | 739 |
| 703 // TouchStart should not be sent to renderer. | 740 // TouchStart should not be sent to renderer. |
| 704 PressTouchPoint(5, 5); | 741 PressTouchPoint(5, 5); |
| 705 EXPECT_EQ(0U, GetAndResetSentEventCount()); | 742 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
| 706 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 743 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
| 707 | 744 |
| 708 // Enable TouchEvent forwarding. | 745 // Enable TouchEvent forwarding. |
| 709 SetEnableTouchForwarding(true); | 746 OnHasTouchEventHandlers(true); |
| 710 | 747 |
| 711 PressTouchPoint(80, 10); | 748 PressTouchPoint(80, 10); |
| 712 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 749 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
| 713 SendTouchEventACK(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 750 SendTouchEventACK(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
| 714 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 751 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
| 715 | 752 |
| 716 MoveTouchPoint(0, 80, 20); | 753 MoveTouchPoint(0, 80, 20); |
| 717 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 754 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
| 718 SendTouchEventACK(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 755 SendTouchEventACK(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
| 719 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 756 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
| (...skipping 250 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 970 TEST_F(TouchEventQueueTest, NoTouchTimeoutIfAckIsSynchronous) { | 1007 TEST_F(TouchEventQueueTest, NoTouchTimeoutIfAckIsSynchronous) { |
| 971 SetUpForTimeoutTesting(kDefaultTouchTimeoutDelayMs); | 1008 SetUpForTimeoutTesting(kDefaultTouchTimeoutDelayMs); |
| 972 | 1009 |
| 973 // Queue a TouchStart. | 1010 // Queue a TouchStart. |
| 974 SetSyncAckResult(INPUT_EVENT_ACK_STATE_CONSUMED); | 1011 SetSyncAckResult(INPUT_EVENT_ACK_STATE_CONSUMED); |
| 975 ASSERT_FALSE(IsTimeoutRunning()); | 1012 ASSERT_FALSE(IsTimeoutRunning()); |
| 976 PressTouchPoint(0, 1); | 1013 PressTouchPoint(0, 1); |
| 977 EXPECT_FALSE(IsTimeoutRunning()); | 1014 EXPECT_FALSE(IsTimeoutRunning()); |
| 978 } | 1015 } |
| 979 | 1016 |
| 1017 // Tests that the timeout is disabled if the touch handler disappears. |
| 1018 TEST_F(TouchEventQueueTest, TouchTimeoutStoppedIfTouchHandlerRemoved) { |
| 1019 SetUpForTimeoutTesting(kDefaultTouchTimeoutDelayMs); |
| 1020 |
| 1021 // Queue a TouchStart. |
| 1022 PressTouchPoint(0, 1); |
| 1023 ASSERT_TRUE(IsTimeoutRunning()); |
| 1024 |
| 1025 // Unload the touch handler. |
| 1026 OnHasTouchEventHandlers(false); |
| 1027 EXPECT_FALSE(IsTimeoutRunning()); |
| 1028 } |
| 1029 |
| 980 // Tests that a TouchCancel timeout plays nice when the timed out touch stream | 1030 // Tests that a TouchCancel timeout plays nice when the timed out touch stream |
| 981 // turns into a scroll gesture sequence. | 1031 // turns into a scroll gesture sequence. |
| 982 TEST_F(TouchEventQueueTest, TouchTimeoutWithFollowupGesture) { | 1032 TEST_F(TouchEventQueueTest, TouchTimeoutWithFollowupGesture) { |
| 983 SetUpForTimeoutTesting(kDefaultTouchTimeoutDelayMs); | 1033 SetUpForTimeoutTesting(kDefaultTouchTimeoutDelayMs); |
| 984 | 1034 |
| 985 // Queue a TouchStart. | 1035 // Queue a TouchStart. |
| 986 PressTouchPoint(0, 1); | 1036 PressTouchPoint(0, 1); |
| 987 EXPECT_TRUE(IsTimeoutRunning()); | 1037 EXPECT_TRUE(IsTimeoutRunning()); |
| 988 EXPECT_TRUE(WillForwardTouchEvents()); | 1038 EXPECT_TRUE(WillForwardTouchEvents()); |
| 989 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 1039 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
| (...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1139 EXPECT_TRUE(WillForwardTouchEvents()); | 1189 EXPECT_TRUE(WillForwardTouchEvents()); |
| 1140 EXPECT_EQ(0U, GetAndResetAckedEventCount()); | 1190 EXPECT_EQ(0U, GetAndResetAckedEventCount()); |
| 1141 EXPECT_EQ(0U, GetAndResetSentEventCount()); | 1191 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
| 1142 | 1192 |
| 1143 // Subsequent events should be handled normally. | 1193 // Subsequent events should be handled normally. |
| 1144 PressTouchPoint(0, 1); | 1194 PressTouchPoint(0, 1); |
| 1145 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 1195 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
| 1146 EXPECT_EQ(0U, GetAndResetAckedEventCount()); | 1196 EXPECT_EQ(0U, GetAndResetAckedEventCount()); |
| 1147 } | 1197 } |
| 1148 } // namespace content | 1198 } // namespace content |
| OLD | NEW |