Chromium Code Reviews| 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, HasNoTouchHandlers) { |
|
tdresser
2014/01/09 21:14:32
Test name isn't very descriptive. Perhaps QueueFlu
jdduke (slow)
2014/01/09 22:05:04
Done.
| |
| 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 if a touch sequence is interrupted by a no-touch-handler event, | |
| 268 // the rest of the sequence will be ignored until a new touch sequence. | |
|
tdresser
2014/01/09 21:14:32
until a new touch sequence. -> until the next touc
jdduke (slow)
2014/01/09 22:05:04
Done.
| |
| 269 TEST_F(TouchEventQueueTest, HasNoTouchHandlersDuringTouchSequence) { | |
| 270 // Send a touch-press event. | |
| 271 PressTouchPoint(1, 1); | |
| 272 EXPECT_EQ(1U, GetAndResetSentEventCount()); | |
| 273 EXPECT_EQ(1U, queued_event_count()); | |
| 274 | |
| 275 // Queue a touch-move event. | |
| 276 MoveTouchPoint(0, 5, 5); | |
| 277 EXPECT_EQ(2U, queued_event_count()); | |
| 278 EXPECT_EQ(0U, GetAndResetAckedEventCount()); | |
| 279 EXPECT_EQ(0U, GetAndResetSentEventCount()); | |
| 280 | |
| 281 // Touch handle deregistration should flush the queue. | |
| 282 OnHasTouchEventHandlers(false); | |
| 283 EXPECT_EQ(2U, GetAndResetAckedEventCount()); | |
| 284 EXPECT_EQ(0U, queued_event_count()); | |
| 285 | |
| 286 // The ack should be ignored as the touch queue is now empty. | |
| 287 SendTouchEventACK(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS); | |
| 288 EXPECT_EQ(0U, GetAndResetAckedEventCount()); | |
| 289 EXPECT_EQ(0U, queued_event_count()); | |
| 290 | |
| 291 // Events should be dropped while there is no touch handler. | |
| 292 MoveTouchPoint(0, 10, 10); | |
| 293 EXPECT_EQ(0U, queued_event_count()); | |
| 294 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | |
| 295 EXPECT_EQ(0U, GetAndResetSentEventCount()); | |
| 296 | |
| 297 // Simulate touch handler registration in the middle of a touch sequence. | |
| 298 OnHasTouchEventHandlers(true); | |
| 299 | |
| 300 // The touch end for the interrupted sequence should be dropped. | |
| 301 ReleaseTouchPoint(0); | |
| 302 EXPECT_EQ(0U, queued_event_count()); | |
| 303 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | |
| 304 EXPECT_EQ(0U, GetAndResetSentEventCount()); | |
| 305 | |
| 306 // A new touch sequence should be forwarded properly. | |
| 307 PressTouchPoint(1, 1); | |
| 308 EXPECT_EQ(1U, queued_event_count()); | |
| 309 EXPECT_EQ(1U, GetAndResetSentEventCount()); | |
| 310 } | |
| 311 | |
| 276 // Tests that touch-events are coalesced properly in the queue. | 312 // Tests that touch-events are coalesced properly in the queue. |
| 277 TEST_F(TouchEventQueueTest, Coalesce) { | 313 TEST_F(TouchEventQueueTest, Coalesce) { |
| 278 // Send a touch-press event. | 314 // Send a touch-press event. |
| 279 PressTouchPoint(1, 1); | 315 PressTouchPoint(1, 1); |
| 280 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 316 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
| 281 | 317 |
| 282 // Send a few touch-move events, followed by a touch-release event. All the | 318 // 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. | 319 // touch-move events should be coalesced into a single event. |
| 284 for (int i = 5; i < 15; ++i) | 320 for (int i = 5; i < 15; ++i) |
| 285 MoveTouchPoint(0, i, i); | 321 MoveTouchPoint(0, i, i); |
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 386 MoveTouchPoint(0, 10, 10); | 422 MoveTouchPoint(0, 10, 10); |
| 387 EXPECT_EQ(0U, GetAndResetSentEventCount()); | 423 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
| 388 EXPECT_EQ(2U, queued_event_count()); | 424 EXPECT_EQ(2U, queued_event_count()); |
| 389 | 425 |
| 390 // Receive an ACK for the press. This should cause the queued touch-move to | 426 // Receive an ACK for the press. This should cause the queued touch-move to |
| 391 // be sent to the renderer. | 427 // be sent to the renderer. |
| 392 SendTouchEventACK(INPUT_EVENT_ACK_STATE_CONSUMED); | 428 SendTouchEventACK(INPUT_EVENT_ACK_STATE_CONSUMED); |
| 393 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 429 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
| 394 EXPECT_EQ(1U, queued_event_count()); | 430 EXPECT_EQ(1U, queued_event_count()); |
| 395 | 431 |
| 396 Flush(); | 432 OnHasTouchEventHandlers(false); |
| 397 EXPECT_EQ(0U, GetAndResetSentEventCount()); | 433 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
| 398 EXPECT_EQ(0U, queued_event_count()); | 434 EXPECT_EQ(0U, queued_event_count()); |
| 399 | 435 |
| 400 // Now receive an ACK for the move. | 436 // Now receive an ACK for the move. |
| 401 SendTouchEventACK(INPUT_EVENT_ACK_STATE_CONSUMED); | 437 SendTouchEventACK(INPUT_EVENT_ACK_STATE_CONSUMED); |
| 402 EXPECT_EQ(0U, GetAndResetSentEventCount()); | 438 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
| 403 EXPECT_EQ(0U, queued_event_count()); | 439 EXPECT_EQ(0U, queued_event_count()); |
| 404 } | 440 } |
| 405 | 441 |
| 406 // Tests that touch-move events are not sent to the renderer if the preceding | 442 // 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()); | 714 EXPECT_EQ(1U, queued_event_count()); |
| 679 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 715 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
| 680 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 716 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
| 681 EXPECT_EQ(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS, acked_event_state()); | 717 EXPECT_EQ(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS, acked_event_state()); |
| 682 EXPECT_EQ(WebInputEvent::TouchMove, acked_event().type); | 718 EXPECT_EQ(WebInputEvent::TouchMove, acked_event().type); |
| 683 } | 719 } |
| 684 | 720 |
| 685 // Tests basic TouchEvent forwarding suppression. | 721 // Tests basic TouchEvent forwarding suppression. |
| 686 TEST_F(TouchEventQueueTest, NoTouchBasic) { | 722 TEST_F(TouchEventQueueTest, NoTouchBasic) { |
| 687 // Disable TouchEvent forwarding. | 723 // Disable TouchEvent forwarding. |
| 688 SetEnableTouchForwarding(false); | 724 OnHasTouchEventHandlers(false); |
| 689 MoveTouchPoint(0, 30, 5); | 725 MoveTouchPoint(0, 30, 5); |
| 690 EXPECT_EQ(0U, GetAndResetSentEventCount()); | 726 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
| 691 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 727 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
| 692 | 728 |
| 693 // TouchMove should not be sent to renderer. | 729 // TouchMove should not be sent to renderer. |
| 694 MoveTouchPoint(0, 65, 10); | 730 MoveTouchPoint(0, 65, 10); |
| 695 EXPECT_EQ(0U, GetAndResetSentEventCount()); | 731 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
| 696 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 732 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
| 697 | 733 |
| 698 // TouchEnd should not be sent to renderer. | 734 // TouchEnd should not be sent to renderer. |
| 699 ReleaseTouchPoint(0); | 735 ReleaseTouchPoint(0); |
| 700 EXPECT_EQ(0U, GetAndResetSentEventCount()); | 736 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
| 701 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 737 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
| 702 | 738 |
| 703 // TouchStart should not be sent to renderer. | 739 // TouchStart should not be sent to renderer. |
| 704 PressTouchPoint(5, 5); | 740 PressTouchPoint(5, 5); |
| 705 EXPECT_EQ(0U, GetAndResetSentEventCount()); | 741 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
| 706 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 742 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
| 707 | 743 |
| 708 // Enable TouchEvent forwarding. | 744 // Enable TouchEvent forwarding. |
| 709 SetEnableTouchForwarding(true); | 745 OnHasTouchEventHandlers(true); |
| 710 | 746 |
| 711 PressTouchPoint(80, 10); | 747 PressTouchPoint(80, 10); |
| 712 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 748 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
| 713 SendTouchEventACK(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 749 SendTouchEventACK(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
| 714 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 750 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
| 715 | 751 |
| 716 MoveTouchPoint(0, 80, 20); | 752 MoveTouchPoint(0, 80, 20); |
| 717 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 753 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
| 718 SendTouchEventACK(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 754 SendTouchEventACK(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
| 719 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 755 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
| (...skipping 250 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 970 TEST_F(TouchEventQueueTest, NoTouchTimeoutIfAckIsSynchronous) { | 1006 TEST_F(TouchEventQueueTest, NoTouchTimeoutIfAckIsSynchronous) { |
| 971 SetUpForTimeoutTesting(kDefaultTouchTimeoutDelayMs); | 1007 SetUpForTimeoutTesting(kDefaultTouchTimeoutDelayMs); |
| 972 | 1008 |
| 973 // Queue a TouchStart. | 1009 // Queue a TouchStart. |
| 974 SetSyncAckResult(INPUT_EVENT_ACK_STATE_CONSUMED); | 1010 SetSyncAckResult(INPUT_EVENT_ACK_STATE_CONSUMED); |
| 975 ASSERT_FALSE(IsTimeoutRunning()); | 1011 ASSERT_FALSE(IsTimeoutRunning()); |
| 976 PressTouchPoint(0, 1); | 1012 PressTouchPoint(0, 1); |
| 977 EXPECT_FALSE(IsTimeoutRunning()); | 1013 EXPECT_FALSE(IsTimeoutRunning()); |
| 978 } | 1014 } |
| 979 | 1015 |
| 1016 // Tests that the timeout is disabled if the touch handler disappears. | |
| 1017 TEST_F(TouchEventQueueTest, NoTouchTimeoutIfNoTouchHandler) { | |
| 1018 SetUpForTimeoutTesting(kDefaultTouchTimeoutDelayMs); | |
| 1019 | |
| 1020 // Queue a TouchStart. | |
| 1021 PressTouchPoint(0, 1); | |
| 1022 ASSERT_TRUE(IsTimeoutRunning()); | |
| 1023 | |
| 1024 // Unload the touch handler. | |
| 1025 OnHasTouchEventHandlers(false); | |
| 1026 EXPECT_FALSE(IsTimeoutRunning()); | |
| 1027 } | |
| 1028 | |
| 980 // Tests that a TouchCancel timeout plays nice when the timed out touch stream | 1029 // Tests that a TouchCancel timeout plays nice when the timed out touch stream |
| 981 // turns into a scroll gesture sequence. | 1030 // turns into a scroll gesture sequence. |
| 982 TEST_F(TouchEventQueueTest, TouchTimeoutWithFollowupGesture) { | 1031 TEST_F(TouchEventQueueTest, TouchTimeoutWithFollowupGesture) { |
| 983 SetUpForTimeoutTesting(kDefaultTouchTimeoutDelayMs); | 1032 SetUpForTimeoutTesting(kDefaultTouchTimeoutDelayMs); |
| 984 | 1033 |
| 985 // Queue a TouchStart. | 1034 // Queue a TouchStart. |
| 986 PressTouchPoint(0, 1); | 1035 PressTouchPoint(0, 1); |
| 987 EXPECT_TRUE(IsTimeoutRunning()); | 1036 EXPECT_TRUE(IsTimeoutRunning()); |
| 988 EXPECT_TRUE(WillForwardTouchEvents()); | 1037 EXPECT_TRUE(WillForwardTouchEvents()); |
| 989 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 1038 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
| (...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1139 EXPECT_TRUE(WillForwardTouchEvents()); | 1188 EXPECT_TRUE(WillForwardTouchEvents()); |
| 1140 EXPECT_EQ(0U, GetAndResetAckedEventCount()); | 1189 EXPECT_EQ(0U, GetAndResetAckedEventCount()); |
| 1141 EXPECT_EQ(0U, GetAndResetSentEventCount()); | 1190 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
| 1142 | 1191 |
| 1143 // Subsequent events should be handled normally. | 1192 // Subsequent events should be handled normally. |
| 1144 PressTouchPoint(0, 1); | 1193 PressTouchPoint(0, 1); |
| 1145 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 1194 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
| 1146 EXPECT_EQ(0U, GetAndResetAckedEventCount()); | 1195 EXPECT_EQ(0U, GetAndResetAckedEventCount()); |
| 1147 } | 1196 } |
| 1148 } // namespace content | 1197 } // namespace content |
| OLD | NEW |