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 "content/browser/renderer_host/input/touch_event_queue.h" | 5 #include "content/browser/renderer_host/input/legacy_touch_event_queue.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include <memory> | 9 #include <memory> |
10 #include <utility> | 10 #include <utility> |
11 | 11 |
12 #include "base/location.h" | 12 #include "base/location.h" |
13 #include "base/logging.h" | 13 #include "base/logging.h" |
14 #include "base/message_loop/message_loop.h" | 14 #include "base/message_loop/message_loop.h" |
15 #include "base/run_loop.h" | 15 #include "base/run_loop.h" |
16 #include "base/single_thread_task_runner.h" | 16 #include "base/single_thread_task_runner.h" |
17 #include "base/threading/thread_task_runner_handle.h" | 17 #include "base/threading/thread_task_runner_handle.h" |
18 #include "content/browser/renderer_host/input/legacy_touch_event_queue.h" | |
19 #include "content/browser/renderer_host/input/timeout_monitor.h" | 18 #include "content/browser/renderer_host/input/timeout_monitor.h" |
20 #include "content/common/input/synthetic_web_input_event_builders.h" | 19 #include "content/common/input/synthetic_web_input_event_builders.h" |
21 #include "content/common/input/web_touch_event_traits.h" | 20 #include "content/common/input/web_touch_event_traits.h" |
22 #include "testing/gtest/include/gtest/gtest.h" | 21 #include "testing/gtest/include/gtest/gtest.h" |
23 #include "third_party/WebKit/public/platform/WebInputEvent.h" | 22 #include "third_party/WebKit/public/platform/WebInputEvent.h" |
24 #include "ui/events/base_event_utils.h" | 23 #include "ui/events/base_event_utils.h" |
25 | 24 |
26 using blink::WebGestureEvent; | 25 using blink::WebGestureEvent; |
27 using blink::WebInputEvent; | 26 using blink::WebInputEvent; |
28 using blink::WebTouchEvent; | 27 using blink::WebTouchEvent; |
29 using blink::WebTouchPoint; | 28 using blink::WebTouchPoint; |
30 | 29 |
31 namespace content { | 30 namespace content { |
32 namespace { | 31 namespace { |
33 | 32 |
34 const double kMinSecondsBetweenThrottledTouchmoves = 0.2; | 33 const double kMinSecondsBetweenThrottledTouchmoves = 0.2; |
35 const float kSlopLengthDips = 10; | 34 const float kSlopLengthDips = 10; |
36 const float kHalfSlopLengthDips = kSlopLengthDips / 2; | 35 const float kHalfSlopLengthDips = kSlopLengthDips / 2; |
37 | 36 |
38 base::TimeDelta DefaultTouchTimeoutDelay() { | 37 base::TimeDelta DefaultTouchTimeoutDelay() { |
39 return base::TimeDelta::FromMilliseconds(1); | 38 return base::TimeDelta::FromMilliseconds(1); |
40 } | 39 } |
41 } // namespace | 40 } // namespace |
42 | 41 |
43 class TouchEventQueueTest : public testing::Test, | 42 class LegacyTouchEventQueueTest : public testing::Test, |
44 public TouchEventQueueClient { | 43 public TouchEventQueueClient { |
45 public: | 44 public: |
46 TouchEventQueueTest() | 45 LegacyTouchEventQueueTest() |
47 : acked_event_count_(0), | 46 : acked_event_count_(0), |
48 last_acked_event_state_(INPUT_EVENT_ACK_STATE_UNKNOWN), | 47 last_acked_event_state_(INPUT_EVENT_ACK_STATE_UNKNOWN), |
49 slop_length_dips_(0) {} | 48 slop_length_dips_(0) {} |
50 | 49 |
51 ~TouchEventQueueTest() override {} | 50 ~LegacyTouchEventQueueTest() override {} |
52 | 51 |
53 // testing::Test | 52 // testing::Test |
54 void SetUp() override { | 53 void SetUp() override { |
55 ResetQueueWithConfig(TouchEventQueue::Config()); | 54 ResetQueueWithConfig(TouchEventQueue::Config()); |
56 sent_events_ids_.clear(); | 55 sent_events_ids_.clear(); |
57 } | 56 } |
58 | 57 |
59 void TearDown() override { queue_.reset(); } | 58 void TearDown() override { queue_.reset(); } |
60 | 59 |
61 // TouchEventQueueClient | 60 // TouchEventQueueClient |
(...skipping 13 matching lines...) Expand all Loading... |
75 last_acked_event_ = event.event; | 74 last_acked_event_ = event.event; |
76 last_acked_event_state_ = ack_result; | 75 last_acked_event_state_ = ack_result; |
77 if (followup_touch_event_) { | 76 if (followup_touch_event_) { |
78 std::unique_ptr<WebTouchEvent> followup_touch_event = | 77 std::unique_ptr<WebTouchEvent> followup_touch_event = |
79 std::move(followup_touch_event_); | 78 std::move(followup_touch_event_); |
80 SendTouchEvent(*followup_touch_event); | 79 SendTouchEvent(*followup_touch_event); |
81 } | 80 } |
82 if (followup_gesture_event_) { | 81 if (followup_gesture_event_) { |
83 std::unique_ptr<WebGestureEvent> followup_gesture_event = | 82 std::unique_ptr<WebGestureEvent> followup_gesture_event = |
84 std::move(followup_gesture_event_); | 83 std::move(followup_gesture_event_); |
85 queue_->OnGestureScrollEvent( | 84 queue_->OnGestureScrollEvent(GestureEventWithLatencyInfo( |
86 GestureEventWithLatencyInfo(*followup_gesture_event, | 85 *followup_gesture_event, ui::LatencyInfo())); |
87 ui::LatencyInfo())); | |
88 } | 86 } |
89 } | 87 } |
90 | 88 |
91 void OnFilteringTouchEvent(const blink::WebTouchEvent& touch_event) override { | 89 void OnFilteringTouchEvent(const blink::WebTouchEvent& touch_event) override { |
92 } | 90 } |
93 | 91 |
94 protected: | 92 protected: |
95 void SetUpForTouchMoveSlopTesting(double slop_length_dips) { | 93 void SetUpForTouchMoveSlopTesting(double slop_length_dips) { |
96 slop_length_dips_ = slop_length_dips; | 94 slop_length_dips_ = slop_length_dips; |
97 } | 95 } |
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
240 } | 238 } |
241 | 239 |
242 void PrependTouchScrollNotification() { | 240 void PrependTouchScrollNotification() { |
243 queue_->PrependTouchScrollNotification(); | 241 queue_->PrependTouchScrollNotification(); |
244 } | 242 } |
245 | 243 |
246 void AdvanceTouchTime(double seconds) { | 244 void AdvanceTouchTime(double seconds) { |
247 touch_event_.setTimeStampSeconds(touch_event_.timeStampSeconds() + seconds); | 245 touch_event_.setTimeStampSeconds(touch_event_.timeStampSeconds() + seconds); |
248 } | 246 } |
249 | 247 |
250 void ResetTouchEvent() { | 248 void ResetTouchEvent() { touch_event_ = SyntheticWebTouchEvent(); } |
251 touch_event_ = SyntheticWebTouchEvent(); | |
252 } | |
253 | 249 |
254 size_t GetAndResetAckedEventCount() { | 250 size_t GetAndResetAckedEventCount() { |
255 size_t count = acked_event_count_; | 251 size_t count = acked_event_count_; |
256 acked_event_count_ = 0; | 252 acked_event_count_ = 0; |
257 return count; | 253 return count; |
258 } | 254 } |
259 | 255 |
260 size_t GetAndResetSentEventCount() { | 256 size_t GetAndResetSentEventCount() { |
261 size_t count = sent_events_.size(); | 257 size_t count = sent_events_.size(); |
262 sent_events_.clear(); | 258 sent_events_.clear(); |
(...skipping 13 matching lines...) Expand all Loading... |
276 void SetIsMobileOptimizedSite(bool is_mobile_optimized) { | 272 void SetIsMobileOptimizedSite(bool is_mobile_optimized) { |
277 queue_->SetIsMobileOptimizedSite(is_mobile_optimized); | 273 queue_->SetIsMobileOptimizedSite(is_mobile_optimized); |
278 } | 274 } |
279 | 275 |
280 bool IsTimeoutRunning() const { return queue_->IsTimeoutRunningForTesting(); } | 276 bool IsTimeoutRunning() const { return queue_->IsTimeoutRunningForTesting(); } |
281 | 277 |
282 bool HasPendingAsyncTouchMove() const { | 278 bool HasPendingAsyncTouchMove() const { |
283 return queue_->HasPendingAsyncTouchMoveForTesting(); | 279 return queue_->HasPendingAsyncTouchMoveForTesting(); |
284 } | 280 } |
285 | 281 |
286 size_t queued_event_count() const { | 282 size_t queued_event_count() const { return queue_->size(); } |
287 return queue_->size(); | |
288 } | |
289 | 283 |
290 const WebTouchEvent& latest_event() const { | 284 const WebTouchEvent& latest_event() const { |
291 return queue_->GetLatestEventForTesting().event; | 285 return queue_->GetLatestEventForTesting().event; |
292 } | 286 } |
293 | 287 |
294 const WebTouchEvent& acked_event() const { | 288 const WebTouchEvent& acked_event() const { return last_acked_event_; } |
295 return last_acked_event_; | |
296 } | |
297 | 289 |
298 const WebTouchEvent& sent_event() const { | 290 const WebTouchEvent& sent_event() const { |
299 DCHECK(!sent_events_.empty()); | 291 DCHECK(!sent_events_.empty()); |
300 return sent_events_.back(); | 292 return sent_events_.back(); |
301 } | 293 } |
302 | 294 |
303 const std::vector<WebTouchEvent>& all_sent_events() const { | 295 const std::vector<WebTouchEvent>& all_sent_events() const { |
304 return sent_events_; | 296 return sent_events_; |
305 } | 297 } |
306 | 298 |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
339 SyntheticWebTouchEvent touch_event_; | 331 SyntheticWebTouchEvent touch_event_; |
340 std::unique_ptr<WebTouchEvent> followup_touch_event_; | 332 std::unique_ptr<WebTouchEvent> followup_touch_event_; |
341 std::unique_ptr<WebGestureEvent> followup_gesture_event_; | 333 std::unique_ptr<WebGestureEvent> followup_gesture_event_; |
342 std::unique_ptr<InputEventAckState> sync_ack_result_; | 334 std::unique_ptr<InputEventAckState> sync_ack_result_; |
343 double slop_length_dips_; | 335 double slop_length_dips_; |
344 gfx::PointF anchor_; | 336 gfx::PointF anchor_; |
345 base::MessageLoopForUI message_loop_; | 337 base::MessageLoopForUI message_loop_; |
346 std::deque<int> sent_events_ids_; | 338 std::deque<int> sent_events_ids_; |
347 }; | 339 }; |
348 | 340 |
349 | |
350 // Tests that touch-events are queued properly. | 341 // Tests that touch-events are queued properly. |
351 TEST_F(TouchEventQueueTest, Basic) { | 342 TEST_F(LegacyTouchEventQueueTest, Basic) { |
352 PressTouchPoint(1, 1); | 343 PressTouchPoint(1, 1); |
353 EXPECT_EQ(1U, queued_event_count()); | 344 EXPECT_EQ(1U, queued_event_count()); |
354 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 345 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
355 | 346 |
356 // The second touch should not be sent since one is already in queue. | 347 // The second touch should not be sent since one is already in queue. |
357 MoveTouchPoint(0, 5, 5); | 348 MoveTouchPoint(0, 5, 5); |
358 EXPECT_EQ(2U, queued_event_count()); | 349 EXPECT_EQ(2U, queued_event_count()); |
359 EXPECT_EQ(0U, GetAndResetSentEventCount()); | 350 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
360 | 351 |
361 // Receive an ACK for the first touch-event. | 352 // Receive an ACK for the first touch-event. |
362 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); | 353 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); |
363 EXPECT_EQ(1U, queued_event_count()); | 354 EXPECT_EQ(1U, queued_event_count()); |
364 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 355 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
365 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 356 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
366 EXPECT_EQ(WebInputEvent::TouchStart, acked_event().type()); | 357 EXPECT_EQ(WebInputEvent::TouchStart, acked_event().type()); |
367 EXPECT_EQ(WebInputEvent::Blocking, acked_event().dispatchType); | 358 EXPECT_EQ(WebInputEvent::Blocking, acked_event().dispatchType); |
368 | 359 |
369 // Receive an ACK for the second touch-event. | 360 // Receive an ACK for the second touch-event. |
370 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); | 361 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); |
371 EXPECT_EQ(0U, queued_event_count()); | 362 EXPECT_EQ(0U, queued_event_count()); |
372 EXPECT_EQ(0U, GetAndResetSentEventCount()); | 363 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
373 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 364 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
374 EXPECT_EQ(WebInputEvent::TouchMove, acked_event().type()); | 365 EXPECT_EQ(WebInputEvent::TouchMove, acked_event().type()); |
375 EXPECT_EQ(WebInputEvent::Blocking, acked_event().dispatchType); | 366 EXPECT_EQ(WebInputEvent::Blocking, acked_event().dispatchType); |
376 } | 367 } |
377 | 368 |
378 // Tests that touch-events with multiple points are queued properly. | 369 // Tests that touch-events with multiple points are queued properly. |
379 TEST_F(TouchEventQueueTest, BasicMultiTouch) { | 370 TEST_F(LegacyTouchEventQueueTest, BasicMultiTouch) { |
380 const size_t kPointerCount = 10; | 371 const size_t kPointerCount = 10; |
381 for (float i = 0; i < kPointerCount; ++i) | 372 for (float i = 0; i < kPointerCount; ++i) |
382 PressTouchPoint(i, i); | 373 PressTouchPoint(i, i); |
383 | 374 |
384 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 375 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
385 EXPECT_EQ(0U, GetAndResetAckedEventCount()); | 376 EXPECT_EQ(0U, GetAndResetAckedEventCount()); |
386 EXPECT_EQ(kPointerCount, queued_event_count()); | 377 EXPECT_EQ(kPointerCount, queued_event_count()); |
387 | 378 |
388 for (int i = 0; i < static_cast<int>(kPointerCount); ++i) | 379 for (int i = 0; i < static_cast<int>(kPointerCount); ++i) |
389 MoveTouchPoint(i, 1.f + i, 2.f + i); | 380 MoveTouchPoint(i, 1.f + i, 2.f + i); |
(...skipping 25 matching lines...) Expand all Loading... |
415 // Ack all releases. | 406 // Ack all releases. |
416 for (size_t i = 0; i < kPointerCount; ++i) | 407 for (size_t i = 0; i < kPointerCount; ++i) |
417 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); | 408 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); |
418 | 409 |
419 EXPECT_EQ(kPointerCount, GetAndResetAckedEventCount()); | 410 EXPECT_EQ(kPointerCount, GetAndResetAckedEventCount()); |
420 EXPECT_EQ(kPointerCount - 1, GetAndResetSentEventCount()); | 411 EXPECT_EQ(kPointerCount - 1, GetAndResetSentEventCount()); |
421 } | 412 } |
422 | 413 |
423 // Tests that the touch-queue continues delivering events for an active touch | 414 // Tests that the touch-queue continues delivering events for an active touch |
424 // sequence after all handlers are removed. | 415 // sequence after all handlers are removed. |
425 TEST_F(TouchEventQueueTest, TouchesForwardedIfHandlerRemovedDuringSequence) { | 416 TEST_F(LegacyTouchEventQueueTest, |
| 417 TouchesForwardedIfHandlerRemovedDuringSequence) { |
426 OnHasTouchEventHandlers(true); | 418 OnHasTouchEventHandlers(true); |
427 EXPECT_EQ(0U, queued_event_count()); | 419 EXPECT_EQ(0U, queued_event_count()); |
428 EXPECT_EQ(0U, GetAndResetSentEventCount()); | 420 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
429 | 421 |
430 // Send a touch-press event. | 422 // Send a touch-press event. |
431 PressTouchPoint(1, 1); | 423 PressTouchPoint(1, 1); |
432 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 424 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
433 EXPECT_EQ(1U, queued_event_count()); | 425 EXPECT_EQ(1U, queued_event_count()); |
434 | 426 |
435 // Signal that all touch handlers have been removed. | 427 // Signal that all touch handlers have been removed. |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
478 | 470 |
479 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); | 471 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); |
480 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 472 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
481 EXPECT_EQ(0U, GetAndResetSentEventCount()); | 473 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
482 EXPECT_EQ(0U, queued_event_count()); | 474 EXPECT_EQ(0U, queued_event_count()); |
483 EXPECT_EQ(INPUT_EVENT_ACK_STATE_CONSUMED, acked_event_state()); | 475 EXPECT_EQ(INPUT_EVENT_ACK_STATE_CONSUMED, acked_event_state()); |
484 } | 476 } |
485 | 477 |
486 // Tests that addition of a touch handler during a touch sequence will not cause | 478 // Tests that addition of a touch handler during a touch sequence will not cause |
487 // the remaining sequence to be forwarded. | 479 // the remaining sequence to be forwarded. |
488 TEST_F(TouchEventQueueTest, ActiveSequenceNotForwardedWhenHandlersAdded) { | 480 TEST_F(LegacyTouchEventQueueTest, ActiveSequenceNotForwardedWhenHandlersAdded) { |
489 OnHasTouchEventHandlers(false); | 481 OnHasTouchEventHandlers(false); |
490 | 482 |
491 // Send a touch-press event while there is no handler. | 483 // Send a touch-press event while there is no handler. |
492 PressTouchPoint(1, 1); | 484 PressTouchPoint(1, 1); |
493 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 485 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
494 EXPECT_EQ(0U, GetAndResetSentEventCount()); | 486 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
495 EXPECT_EQ(0U, queued_event_count()); | 487 EXPECT_EQ(0U, queued_event_count()); |
496 | 488 |
497 OnHasTouchEventHandlers(true); | 489 OnHasTouchEventHandlers(true); |
498 | 490 |
499 // The remaining touch sequence should not be forwarded. | 491 // The remaining touch sequence should not be forwarded. |
500 MoveTouchPoint(0, 5, 5); | 492 MoveTouchPoint(0, 5, 5); |
501 ReleaseTouchPoint(0); | 493 ReleaseTouchPoint(0); |
502 EXPECT_EQ(2U, GetAndResetAckedEventCount()); | 494 EXPECT_EQ(2U, GetAndResetAckedEventCount()); |
503 EXPECT_EQ(0U, GetAndResetSentEventCount()); | 495 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
504 EXPECT_EQ(0U, queued_event_count()); | 496 EXPECT_EQ(0U, queued_event_count()); |
505 | 497 |
506 // A new touch sequence should resume forwarding. | 498 // A new touch sequence should resume forwarding. |
507 PressTouchPoint(1, 1); | 499 PressTouchPoint(1, 1); |
508 EXPECT_EQ(1U, queued_event_count()); | 500 EXPECT_EQ(1U, queued_event_count()); |
509 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 501 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
510 } | 502 } |
511 | 503 |
512 // Tests that removal of a touch handler during a touch sequence will prevent | 504 // Tests that removal of a touch handler during a touch sequence will prevent |
513 // the remaining sequence from being forwarded, even if another touch handler is | 505 // the remaining sequence from being forwarded, even if another touch handler is |
514 // registered during the same touch sequence. | 506 // registered during the same touch sequence. |
515 TEST_F(TouchEventQueueTest, ActiveSequenceDroppedWhenHandlersRemoved) { | 507 TEST_F(LegacyTouchEventQueueTest, ActiveSequenceDroppedWhenHandlersRemoved) { |
516 // Send a touch-press event. | 508 // Send a touch-press event. |
517 PressTouchPoint(1, 1); | 509 PressTouchPoint(1, 1); |
518 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 510 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
519 EXPECT_EQ(1U, queued_event_count()); | 511 EXPECT_EQ(1U, queued_event_count()); |
520 | 512 |
521 // Queue a touch-move event. | 513 // Queue a touch-move event. |
522 MoveTouchPoint(0, 5, 5); | 514 MoveTouchPoint(0, 5, 5); |
523 EXPECT_EQ(2U, queued_event_count()); | 515 EXPECT_EQ(2U, queued_event_count()); |
524 EXPECT_EQ(0U, GetAndResetAckedEventCount()); | 516 EXPECT_EQ(0U, GetAndResetAckedEventCount()); |
525 EXPECT_EQ(0U, GetAndResetSentEventCount()); | 517 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
559 EXPECT_EQ(0U, GetAndResetSentEventCount()); | 551 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
560 | 552 |
561 // A new touch sequence should be forwarded properly. | 553 // A new touch sequence should be forwarded properly. |
562 PressTouchPoint(1, 1); | 554 PressTouchPoint(1, 1); |
563 EXPECT_EQ(1U, queued_event_count()); | 555 EXPECT_EQ(1U, queued_event_count()); |
564 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 556 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
565 } | 557 } |
566 | 558 |
567 // Tests that removal/addition of a touch handler without any intervening | 559 // Tests that removal/addition of a touch handler without any intervening |
568 // touch activity has no affect on touch forwarding. | 560 // touch activity has no affect on touch forwarding. |
569 TEST_F(TouchEventQueueTest, | 561 TEST_F(LegacyTouchEventQueueTest, |
570 ActiveSequenceUnaffectedByRepeatedHandlerRemovalAndAddition) { | 562 ActiveSequenceUnaffectedByRepeatedHandlerRemovalAndAddition) { |
571 // Send a touch-press event. | 563 // Send a touch-press event. |
572 PressTouchPoint(1, 1); | 564 PressTouchPoint(1, 1); |
573 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 565 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
574 EXPECT_EQ(1U, queued_event_count()); | 566 EXPECT_EQ(1U, queued_event_count()); |
575 | 567 |
576 // Simulate the case where the touchstart handler removes itself, and adds a | 568 // Simulate the case where the touchstart handler removes itself, and adds a |
577 // touchmove handler. | 569 // touchmove handler. |
578 OnHasTouchEventHandlers(false); | 570 OnHasTouchEventHandlers(false); |
579 OnHasTouchEventHandlers(true); | 571 OnHasTouchEventHandlers(true); |
580 | 572 |
581 // Queue a touch-move event. | 573 // Queue a touch-move event. |
582 MoveTouchPoint(0, 5, 5); | 574 MoveTouchPoint(0, 5, 5); |
583 EXPECT_EQ(2U, queued_event_count()); | 575 EXPECT_EQ(2U, queued_event_count()); |
584 EXPECT_EQ(0U, GetAndResetAckedEventCount()); | 576 EXPECT_EQ(0U, GetAndResetAckedEventCount()); |
585 EXPECT_EQ(0U, GetAndResetSentEventCount()); | 577 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
586 | 578 |
587 // The ack should trigger forwarding of the touchmove, as if no touch | 579 // The ack should trigger forwarding of the touchmove, as if no touch |
588 // handler registration changes have occurred. | 580 // handler registration changes have occurred. |
589 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 581 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
590 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 582 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
591 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 583 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
592 EXPECT_EQ(1U, queued_event_count()); | 584 EXPECT_EQ(1U, queued_event_count()); |
593 } | 585 } |
594 | 586 |
595 // Tests that touch-events are coalesced properly in the queue. | 587 // Tests that touch-events are coalesced properly in the queue. |
596 TEST_F(TouchEventQueueTest, Coalesce) { | 588 TEST_F(LegacyTouchEventQueueTest, Coalesce) { |
597 // Send a touch-press event. | 589 // Send a touch-press event. |
598 PressTouchPoint(1, 1); | 590 PressTouchPoint(1, 1); |
599 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 591 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
600 | 592 |
601 // Send a few touch-move events, followed by a touch-release event. All the | 593 // Send a few touch-move events, followed by a touch-release event. All the |
602 // touch-move events should be coalesced into a single event. | 594 // touch-move events should be coalesced into a single event. |
603 for (float i = 5; i < 15; ++i) | 595 for (float i = 5; i < 15; ++i) |
604 MoveTouchPoint(0, i, i); | 596 MoveTouchPoint(0, i, i); |
605 | 597 |
606 EXPECT_EQ(0U, GetAndResetSentEventCount()); | 598 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
(...skipping 19 matching lines...) Expand all Loading... |
626 // ACK the release. | 618 // ACK the release. |
627 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); | 619 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); |
628 EXPECT_EQ(0U, queued_event_count()); | 620 EXPECT_EQ(0U, queued_event_count()); |
629 EXPECT_EQ(0U, GetAndResetSentEventCount()); | 621 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
630 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 622 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
631 EXPECT_EQ(WebInputEvent::TouchEnd, acked_event().type()); | 623 EXPECT_EQ(WebInputEvent::TouchEnd, acked_event().type()); |
632 } | 624 } |
633 | 625 |
634 // Tests that an event that has already been sent but hasn't been ack'ed yet | 626 // Tests that an event that has already been sent but hasn't been ack'ed yet |
635 // doesn't get coalesced with newer events. | 627 // doesn't get coalesced with newer events. |
636 TEST_F(TouchEventQueueTest, SentTouchEventDoesNotCoalesce) { | 628 TEST_F(LegacyTouchEventQueueTest, SentTouchEventDoesNotCoalesce) { |
637 // Send a touch-press event. | 629 // Send a touch-press event. |
638 PressTouchPoint(1, 1); | 630 PressTouchPoint(1, 1); |
639 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 631 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
640 | 632 |
641 // Send a few touch-move events, followed by a touch-release event. All the | 633 // Send a few touch-move events, followed by a touch-release event. All the |
642 // touch-move events should be coalesced into a single event. | 634 // touch-move events should be coalesced into a single event. |
643 for (float i = 5; i < 15; ++i) | 635 for (float i = 5; i < 15; ++i) |
644 MoveTouchPoint(0, i, i); | 636 MoveTouchPoint(0, i, i); |
645 | 637 |
646 EXPECT_EQ(0U, GetAndResetSentEventCount()); | 638 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
647 EXPECT_EQ(2U, queued_event_count()); | 639 EXPECT_EQ(2U, queued_event_count()); |
648 | 640 |
649 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 641 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
650 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 642 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
651 EXPECT_EQ(1U, queued_event_count()); | 643 EXPECT_EQ(1U, queued_event_count()); |
652 | 644 |
653 // The coalesced touch-move event has been sent to the renderer. Any new | 645 // The coalesced touch-move event has been sent to the renderer. Any new |
654 // touch-move event should not be coalesced with the sent event. | 646 // touch-move event should not be coalesced with the sent event. |
655 MoveTouchPoint(0, 5, 5); | 647 MoveTouchPoint(0, 5, 5); |
656 EXPECT_EQ(2U, queued_event_count()); | 648 EXPECT_EQ(2U, queued_event_count()); |
657 | 649 |
658 MoveTouchPoint(0, 7, 7); | 650 MoveTouchPoint(0, 7, 7); |
659 EXPECT_EQ(2U, queued_event_count()); | 651 EXPECT_EQ(2U, queued_event_count()); |
660 } | 652 } |
661 | 653 |
662 // Tests that coalescing works correctly for multi-touch events. | 654 // Tests that coalescing works correctly for multi-touch events. |
663 TEST_F(TouchEventQueueTest, MultiTouch) { | 655 TEST_F(LegacyTouchEventQueueTest, MultiTouch) { |
664 // Press the first finger. | 656 // Press the first finger. |
665 PressTouchPoint(1, 1); | 657 PressTouchPoint(1, 1); |
666 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 658 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
667 | 659 |
668 // Move the finger. | 660 // Move the finger. |
669 MoveTouchPoint(0, 5, 5); | 661 MoveTouchPoint(0, 5, 5); |
670 EXPECT_EQ(2U, queued_event_count()); | 662 EXPECT_EQ(2U, queued_event_count()); |
671 | 663 |
672 // Now press a second finger. | 664 // Now press a second finger. |
673 PressTouchPoint(2, 2); | 665 PressTouchPoint(2, 2); |
(...skipping 13 matching lines...) Expand all Loading... |
687 EXPECT_EQ(4U, queued_event_count()); | 679 EXPECT_EQ(4U, queued_event_count()); |
688 | 680 |
689 // Make sure both fingers are marked as having been moved in the coalesced | 681 // Make sure both fingers are marked as having been moved in the coalesced |
690 // event. | 682 // event. |
691 const WebTouchEvent& event = latest_event(); | 683 const WebTouchEvent& event = latest_event(); |
692 EXPECT_EQ(WebTouchPoint::StateMoved, event.touches[0].state); | 684 EXPECT_EQ(WebTouchPoint::StateMoved, event.touches[0].state); |
693 EXPECT_EQ(WebTouchPoint::StateMoved, event.touches[1].state); | 685 EXPECT_EQ(WebTouchPoint::StateMoved, event.touches[1].state); |
694 } | 686 } |
695 | 687 |
696 // Tests that the touch-event queue is robust to redundant acks. | 688 // Tests that the touch-event queue is robust to redundant acks. |
697 TEST_F(TouchEventQueueTest, SpuriousAcksIgnored) { | 689 TEST_F(LegacyTouchEventQueueTest, SpuriousAcksIgnored) { |
698 // Trigger a spurious ack. | 690 // Trigger a spurious ack. |
699 SendTouchEventAckWithID(INPUT_EVENT_ACK_STATE_CONSUMED, 0); | 691 SendTouchEventAckWithID(INPUT_EVENT_ACK_STATE_CONSUMED, 0); |
700 EXPECT_EQ(0U, GetAndResetAckedEventCount()); | 692 EXPECT_EQ(0U, GetAndResetAckedEventCount()); |
701 | 693 |
702 // Send and ack a touch press. | 694 // Send and ack a touch press. |
703 PressTouchPoint(1, 1); | 695 PressTouchPoint(1, 1); |
704 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 696 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
705 EXPECT_EQ(1U, queued_event_count()); | 697 EXPECT_EQ(1U, queued_event_count()); |
706 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); | 698 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); |
707 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 699 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
708 EXPECT_EQ(0U, queued_event_count()); | 700 EXPECT_EQ(0U, queued_event_count()); |
709 | 701 |
710 // Trigger a spurious ack. | 702 // Trigger a spurious ack. |
711 SendTouchEventAckWithID(INPUT_EVENT_ACK_STATE_CONSUMED, 3); | 703 SendTouchEventAckWithID(INPUT_EVENT_ACK_STATE_CONSUMED, 3); |
712 EXPECT_EQ(0U, GetAndResetAckedEventCount()); | 704 EXPECT_EQ(0U, GetAndResetAckedEventCount()); |
713 } | 705 } |
714 | 706 |
715 // Tests that touch-move events are not sent to the renderer if the preceding | 707 // Tests that touch-move events are not sent to the renderer if the preceding |
716 // touch-press event did not have a consumer (and consequently, did not hit the | 708 // touch-press event did not have a consumer (and consequently, did not hit the |
717 // main thread in the renderer). Also tests that all queued/coalesced touch | 709 // main thread in the renderer). Also tests that all queued/coalesced touch |
718 // events are flushed immediately when the ACK for the touch-press comes back | 710 // events are flushed immediately when the ACK for the touch-press comes back |
719 // with NO_CONSUMER status. | 711 // with NO_CONSUMER status. |
720 TEST_F(TouchEventQueueTest, NoConsumer) { | 712 TEST_F(LegacyTouchEventQueueTest, NoConsumer) { |
721 // The first touch-press should reach the renderer. | 713 // The first touch-press should reach the renderer. |
722 PressTouchPoint(1, 1); | 714 PressTouchPoint(1, 1); |
723 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 715 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
724 | 716 |
725 // The second touch should not be sent since one is already in queue. | 717 // The second touch should not be sent since one is already in queue. |
726 MoveTouchPoint(0, 5, 5); | 718 MoveTouchPoint(0, 5, 5); |
727 EXPECT_EQ(0U, GetAndResetSentEventCount()); | 719 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
728 EXPECT_EQ(2U, queued_event_count()); | 720 EXPECT_EQ(2U, queued_event_count()); |
729 | 721 |
730 // Receive an ACK for the first touch-event. This should release the queued | 722 // Receive an ACK for the first touch-event. This should release the queued |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
774 // Send a second press event. Even though the first touch press had | 766 // Send a second press event. Even though the first touch press had |
775 // NO_CONSUMER, this press event should reach the renderer. | 767 // NO_CONSUMER, this press event should reach the renderer. |
776 PressTouchPoint(1, 1); | 768 PressTouchPoint(1, 1); |
777 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 769 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
778 EXPECT_EQ(1U, queued_event_count()); | 770 EXPECT_EQ(1U, queued_event_count()); |
779 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); | 771 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); |
780 EXPECT_EQ(WebInputEvent::TouchStart, acked_event().type()); | 772 EXPECT_EQ(WebInputEvent::TouchStart, acked_event().type()); |
781 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 773 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
782 } | 774 } |
783 | 775 |
784 TEST_F(TouchEventQueueTest, ConsumerIgnoreMultiFinger) { | 776 TEST_F(LegacyTouchEventQueueTest, ConsumerIgnoreMultiFinger) { |
785 // Interleave three pointer press, move and release events. | 777 // Interleave three pointer press, move and release events. |
786 PressTouchPoint(1, 1); | 778 PressTouchPoint(1, 1); |
787 MoveTouchPoint(0, 5, 5); | 779 MoveTouchPoint(0, 5, 5); |
788 PressTouchPoint(10, 10); | 780 PressTouchPoint(10, 10); |
789 MoveTouchPoint(1, 15, 15); | 781 MoveTouchPoint(1, 15, 15); |
790 PressTouchPoint(20, 20); | 782 PressTouchPoint(20, 20); |
791 MoveTouchPoint(2, 25, 25); | 783 MoveTouchPoint(2, 25, 25); |
792 ReleaseTouchPoint(2); | 784 ReleaseTouchPoint(2); |
793 MoveTouchPoint(1, 20, 20); | 785 MoveTouchPoint(1, 20, 20); |
794 ReleaseTouchPoint(1); | 786 ReleaseTouchPoint(1); |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
828 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS); | 820 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS); |
829 EXPECT_EQ(6U, queued_event_count()); | 821 EXPECT_EQ(6U, queued_event_count()); |
830 | 822 |
831 while (queued_event_count()) | 823 while (queued_event_count()) |
832 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 824 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
833 | 825 |
834 EXPECT_EQ(6U, GetAndResetSentEventCount()); | 826 EXPECT_EQ(6U, GetAndResetSentEventCount()); |
835 } | 827 } |
836 | 828 |
837 // Tests that touch-event's enqueued via a touch ack are properly handled. | 829 // Tests that touch-event's enqueued via a touch ack are properly handled. |
838 TEST_F(TouchEventQueueTest, AckWithFollowupEvents) { | 830 TEST_F(LegacyTouchEventQueueTest, AckWithFollowupEvents) { |
839 // Queue a touch down. | 831 // Queue a touch down. |
840 PressTouchPoint(1, 1); | 832 PressTouchPoint(1, 1); |
841 EXPECT_EQ(1U, queued_event_count()); | 833 EXPECT_EQ(1U, queued_event_count()); |
842 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 834 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
843 EXPECT_EQ(0U, GetAndResetAckedEventCount()); | 835 EXPECT_EQ(0U, GetAndResetAckedEventCount()); |
844 | 836 |
845 // Create a touch event that will be queued synchronously by a touch ack. | 837 // Create a touch event that will be queued synchronously by a touch ack. |
846 // Note, this will be triggered by all subsequent touch acks. | 838 // Note, this will be triggered by all subsequent touch acks. |
847 WebTouchEvent followup_event( | 839 WebTouchEvent followup_event( |
848 WebInputEvent::TouchMove, WebInputEvent::NoModifiers, | 840 WebInputEvent::TouchMove, WebInputEvent::NoModifiers, |
(...skipping 18 matching lines...) Expand all Loading... |
867 | 859 |
868 // Receive an ACK for the touch-move followup event. This should cause the | 860 // Receive an ACK for the touch-move followup event. This should cause the |
869 // subsequent touch move event be sent to the renderer. | 861 // subsequent touch move event be sent to the renderer. |
870 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); | 862 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); |
871 EXPECT_EQ(1U, queued_event_count()); | 863 EXPECT_EQ(1U, queued_event_count()); |
872 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 864 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
873 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 865 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
874 } | 866 } |
875 | 867 |
876 // Tests that touch-events can be synchronously ack'ed. | 868 // Tests that touch-events can be synchronously ack'ed. |
877 TEST_F(TouchEventQueueTest, SynchronousAcks) { | 869 TEST_F(LegacyTouchEventQueueTest, SynchronousAcks) { |
878 // TouchStart | 870 // TouchStart |
879 SetSyncAckResult(INPUT_EVENT_ACK_STATE_CONSUMED); | 871 SetSyncAckResult(INPUT_EVENT_ACK_STATE_CONSUMED); |
880 PressTouchPoint(1, 1); | 872 PressTouchPoint(1, 1); |
881 EXPECT_EQ(0U, queued_event_count()); | 873 EXPECT_EQ(0U, queued_event_count()); |
882 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 874 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
883 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 875 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
884 | 876 |
885 // TouchMove | 877 // TouchMove |
886 SetSyncAckResult(INPUT_EVENT_ACK_STATE_CONSUMED); | 878 SetSyncAckResult(INPUT_EVENT_ACK_STATE_CONSUMED); |
887 MoveTouchPoint(0, 2, 2); | 879 MoveTouchPoint(0, 2, 2); |
(...skipping 17 matching lines...) Expand all Loading... |
905 | 897 |
906 SetSyncAckResult(INPUT_EVENT_ACK_STATE_CONSUMED); | 898 SetSyncAckResult(INPUT_EVENT_ACK_STATE_CONSUMED); |
907 CancelTouchPoint(0); | 899 CancelTouchPoint(0); |
908 EXPECT_EQ(0U, queued_event_count()); | 900 EXPECT_EQ(0U, queued_event_count()); |
909 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 901 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
910 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 902 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
911 } | 903 } |
912 | 904 |
913 // Tests that followup events triggered by an immediate ack from | 905 // Tests that followup events triggered by an immediate ack from |
914 // TouchEventQueue::QueueEvent() are properly handled. | 906 // TouchEventQueue::QueueEvent() are properly handled. |
915 TEST_F(TouchEventQueueTest, ImmediateAckWithFollowupEvents) { | 907 TEST_F(LegacyTouchEventQueueTest, ImmediateAckWithFollowupEvents) { |
916 // Create a touch event that will be queued synchronously by a touch ack. | 908 // Create a touch event that will be queued synchronously by a touch ack. |
917 WebTouchEvent followup_event( | 909 WebTouchEvent followup_event( |
918 WebInputEvent::TouchStart, WebInputEvent::NoModifiers, | 910 WebInputEvent::TouchStart, WebInputEvent::NoModifiers, |
919 ui::EventTimeStampToSeconds(ui::EventTimeForNow())); | 911 ui::EventTimeStampToSeconds(ui::EventTimeForNow())); |
920 followup_event.touchesLength = 1; | 912 followup_event.touchesLength = 1; |
921 followup_event.touches[0].id = 1; | 913 followup_event.touches[0].id = 1; |
922 followup_event.touches[0].state = WebTouchPoint::StatePressed; | 914 followup_event.touches[0].state = WebTouchPoint::StatePressed; |
923 SetFollowupEvent(followup_event); | 915 SetFollowupEvent(followup_event); |
924 | 916 |
925 // Now, enqueue a stationary touch that will not be forwarded. This should be | 917 // Now, enqueue a stationary touch that will not be forwarded. This should be |
926 // immediately ack'ed with "NO_CONSUMER_EXISTS". The followup event should | 918 // immediately ack'ed with "NO_CONSUMER_EXISTS". The followup event should |
927 // then be enqueued and immediately sent to the renderer. | 919 // then be enqueued and immediately sent to the renderer. |
928 WebTouchEvent stationary_event( | 920 WebTouchEvent stationary_event( |
929 WebInputEvent::TouchMove, WebInputEvent::NoModifiers, | 921 WebInputEvent::TouchMove, WebInputEvent::NoModifiers, |
930 ui::EventTimeStampToSeconds(ui::EventTimeForNow())); | 922 ui::EventTimeStampToSeconds(ui::EventTimeForNow())); |
931 ; | 923 ; |
932 stationary_event.touchesLength = 1; | 924 stationary_event.touchesLength = 1; |
933 stationary_event.touches[0].id = 1; | 925 stationary_event.touches[0].id = 1; |
934 stationary_event.touches[0].state = WebTouchPoint::StateStationary; | 926 stationary_event.touches[0].state = WebTouchPoint::StateStationary; |
935 SendTouchEvent(stationary_event); | 927 SendTouchEvent(stationary_event); |
936 | 928 |
937 EXPECT_EQ(1U, queued_event_count()); | 929 EXPECT_EQ(1U, queued_event_count()); |
938 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 930 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
939 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 931 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
940 EXPECT_EQ(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS, acked_event_state()); | 932 EXPECT_EQ(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS, acked_event_state()); |
941 EXPECT_EQ(WebInputEvent::TouchMove, acked_event().type()); | 933 EXPECT_EQ(WebInputEvent::TouchMove, acked_event().type()); |
942 } | 934 } |
943 | 935 |
944 // Tests basic TouchEvent forwarding suppression. | 936 // Tests basic TouchEvent forwarding suppression. |
945 TEST_F(TouchEventQueueTest, NoTouchBasic) { | 937 TEST_F(LegacyTouchEventQueueTest, NoTouchBasic) { |
946 // Disable TouchEvent forwarding. | 938 // Disable TouchEvent forwarding. |
947 OnHasTouchEventHandlers(false); | 939 OnHasTouchEventHandlers(false); |
948 PressTouchPoint(30, 5); | 940 PressTouchPoint(30, 5); |
949 EXPECT_EQ(0U, GetAndResetSentEventCount()); | 941 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
950 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 942 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
951 | 943 |
952 // TouchMove should not be sent to renderer. | 944 // TouchMove should not be sent to renderer. |
953 MoveTouchPoint(0, 65, 10); | 945 MoveTouchPoint(0, 65, 10); |
954 EXPECT_EQ(0U, GetAndResetSentEventCount()); | 946 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
955 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 947 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
(...skipping 16 matching lines...) Expand all Loading... |
972 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 964 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
973 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 965 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
974 | 966 |
975 ReleaseTouchPoint(0); | 967 ReleaseTouchPoint(0); |
976 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 968 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
977 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 969 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
978 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 970 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
979 } | 971 } |
980 | 972 |
981 // Tests that IsTouchStartPendingAck works correctly. | 973 // Tests that IsTouchStartPendingAck works correctly. |
982 TEST_F(TouchEventQueueTest, PendingStart) { | 974 TEST_F(LegacyTouchEventQueueTest, PendingStart) { |
983 | |
984 EXPECT_FALSE(IsPendingAckTouchStart()); | 975 EXPECT_FALSE(IsPendingAckTouchStart()); |
985 | 976 |
986 // Send the touchstart for one point (#1). | 977 // Send the touchstart for one point (#1). |
987 PressTouchPoint(1, 1); | 978 PressTouchPoint(1, 1); |
988 EXPECT_EQ(1U, queued_event_count()); | 979 EXPECT_EQ(1U, queued_event_count()); |
989 EXPECT_TRUE(IsPendingAckTouchStart()); | 980 EXPECT_TRUE(IsPendingAckTouchStart()); |
990 | 981 |
991 // Send a touchmove for that point (#2). | 982 // Send a touchmove for that point (#2). |
992 MoveTouchPoint(0, 5, 5); | 983 MoveTouchPoint(0, 5, 5); |
993 EXPECT_EQ(2U, queued_event_count()); | 984 EXPECT_EQ(2U, queued_event_count()); |
(...skipping 24 matching lines...) Expand all Loading... |
1018 EXPECT_EQ(1U, queued_event_count()); | 1009 EXPECT_EQ(1U, queued_event_count()); |
1019 EXPECT_TRUE(IsPendingAckTouchStart()); | 1010 EXPECT_TRUE(IsPendingAckTouchStart()); |
1020 | 1011 |
1021 // Ack the touchstart for the third point (#4). | 1012 // Ack the touchstart for the third point (#4). |
1022 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 1013 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
1023 EXPECT_EQ(0U, queued_event_count()); | 1014 EXPECT_EQ(0U, queued_event_count()); |
1024 EXPECT_FALSE(IsPendingAckTouchStart()); | 1015 EXPECT_FALSE(IsPendingAckTouchStart()); |
1025 } | 1016 } |
1026 | 1017 |
1027 // Tests that the touch timeout is started when sending certain touch types. | 1018 // Tests that the touch timeout is started when sending certain touch types. |
1028 TEST_F(TouchEventQueueTest, TouchTimeoutTypes) { | 1019 TEST_F(LegacyTouchEventQueueTest, TouchTimeoutTypes) { |
1029 SetUpForTimeoutTesting(); | 1020 SetUpForTimeoutTesting(); |
1030 | 1021 |
1031 // Sending a TouchStart will start the timeout. | 1022 // Sending a TouchStart will start the timeout. |
1032 PressTouchPoint(0, 1); | 1023 PressTouchPoint(0, 1); |
1033 EXPECT_TRUE(IsTimeoutRunning()); | 1024 EXPECT_TRUE(IsTimeoutRunning()); |
1034 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 1025 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
1035 EXPECT_FALSE(IsTimeoutRunning()); | 1026 EXPECT_FALSE(IsTimeoutRunning()); |
1036 | 1027 |
1037 // A TouchMove should start the timeout. | 1028 // A TouchMove should start the timeout. |
1038 MoveTouchPoint(0, 5, 5); | 1029 MoveTouchPoint(0, 5, 5); |
(...skipping 13 matching lines...) Expand all Loading... |
1052 ASSERT_FALSE(IsTimeoutRunning()); | 1043 ASSERT_FALSE(IsTimeoutRunning()); |
1053 CancelTouchPoint(0); | 1044 CancelTouchPoint(0); |
1054 EXPECT_FALSE(IsTimeoutRunning()); | 1045 EXPECT_FALSE(IsTimeoutRunning()); |
1055 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 1046 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
1056 EXPECT_FALSE(IsTimeoutRunning()); | 1047 EXPECT_FALSE(IsTimeoutRunning()); |
1057 } | 1048 } |
1058 | 1049 |
1059 // Tests that a delayed TouchEvent ack will trigger a TouchCancel timeout, | 1050 // Tests that a delayed TouchEvent ack will trigger a TouchCancel timeout, |
1060 // disabling touch forwarding until the next TouchStart is received after | 1051 // disabling touch forwarding until the next TouchStart is received after |
1061 // the timeout events are ack'ed. | 1052 // the timeout events are ack'ed. |
1062 TEST_F(TouchEventQueueTest, TouchTimeoutBasic) { | 1053 TEST_F(LegacyTouchEventQueueTest, TouchTimeoutBasic) { |
1063 SetUpForTimeoutTesting(); | 1054 SetUpForTimeoutTesting(); |
1064 | 1055 |
1065 // Queue a TouchStart. | 1056 // Queue a TouchStart. |
1066 GetAndResetSentEventCount(); | 1057 GetAndResetSentEventCount(); |
1067 GetAndResetAckedEventCount(); | 1058 GetAndResetAckedEventCount(); |
1068 PressTouchPoint(0, 1); | 1059 PressTouchPoint(0, 1); |
1069 ASSERT_EQ(1U, GetAndResetSentEventCount()); | 1060 ASSERT_EQ(1U, GetAndResetSentEventCount()); |
1070 ASSERT_EQ(0U, GetAndResetAckedEventCount()); | 1061 ASSERT_EQ(0U, GetAndResetAckedEventCount()); |
1071 EXPECT_TRUE(IsTimeoutRunning()); | 1062 EXPECT_TRUE(IsTimeoutRunning()); |
1072 | 1063 |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1106 // Subsequent events should be handled normally. | 1097 // Subsequent events should be handled normally. |
1107 PressTouchPoint(0, 1); | 1098 PressTouchPoint(0, 1); |
1108 EXPECT_EQ(WebInputEvent::TouchStart, sent_event().type()); | 1099 EXPECT_EQ(WebInputEvent::TouchStart, sent_event().type()); |
1109 EXPECT_EQ(WebInputEvent::Blocking, sent_event().dispatchType); | 1100 EXPECT_EQ(WebInputEvent::Blocking, sent_event().dispatchType); |
1110 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 1101 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
1111 EXPECT_EQ(0U, GetAndResetAckedEventCount()); | 1102 EXPECT_EQ(0U, GetAndResetAckedEventCount()); |
1112 } | 1103 } |
1113 | 1104 |
1114 // Tests that the timeout is never started if the renderer consumes | 1105 // Tests that the timeout is never started if the renderer consumes |
1115 // a TouchEvent from the current touch sequence. | 1106 // a TouchEvent from the current touch sequence. |
1116 TEST_F(TouchEventQueueTest, NoTouchTimeoutIfRendererIsConsumingGesture) { | 1107 TEST_F(LegacyTouchEventQueueTest, NoTouchTimeoutIfRendererIsConsumingGesture) { |
1117 SetUpForTimeoutTesting(); | 1108 SetUpForTimeoutTesting(); |
1118 | 1109 |
1119 // Queue a TouchStart. | 1110 // Queue a TouchStart. |
1120 PressTouchPoint(0, 1); | 1111 PressTouchPoint(0, 1); |
1121 ASSERT_TRUE(IsTimeoutRunning()); | 1112 ASSERT_TRUE(IsTimeoutRunning()); |
1122 | 1113 |
1123 // Mark the event as consumed. This should prevent the timeout from | 1114 // Mark the event as consumed. This should prevent the timeout from |
1124 // being activated on subsequent TouchEvents in this gesture. | 1115 // being activated on subsequent TouchEvents in this gesture. |
1125 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); | 1116 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); |
1126 EXPECT_FALSE(IsTimeoutRunning()); | 1117 EXPECT_FALSE(IsTimeoutRunning()); |
(...skipping 13 matching lines...) Expand all Loading... |
1140 EXPECT_FALSE(IsTimeoutRunning()); | 1131 EXPECT_FALSE(IsTimeoutRunning()); |
1141 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 1132 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
1142 | 1133 |
1143 // A TouchCancel should not start the timeout. | 1134 // A TouchCancel should not start the timeout. |
1144 CancelTouchPoint(0); | 1135 CancelTouchPoint(0); |
1145 EXPECT_FALSE(IsTimeoutRunning()); | 1136 EXPECT_FALSE(IsTimeoutRunning()); |
1146 } | 1137 } |
1147 | 1138 |
1148 // Tests that the timeout is never started if the renderer consumes | 1139 // Tests that the timeout is never started if the renderer consumes |
1149 // a TouchEvent from the current touch sequence. | 1140 // a TouchEvent from the current touch sequence. |
1150 TEST_F(TouchEventQueueTest, NoTouchTimeoutIfDisabledAfterTouchStart) { | 1141 TEST_F(LegacyTouchEventQueueTest, NoTouchTimeoutIfDisabledAfterTouchStart) { |
1151 SetUpForTimeoutTesting(); | 1142 SetUpForTimeoutTesting(); |
1152 | 1143 |
1153 // Queue a TouchStart. | 1144 // Queue a TouchStart. |
1154 PressTouchPoint(0, 1); | 1145 PressTouchPoint(0, 1); |
1155 ASSERT_TRUE(IsTimeoutRunning()); | 1146 ASSERT_TRUE(IsTimeoutRunning()); |
1156 | 1147 |
1157 // Send the ack immediately. The timeout should not have fired. | 1148 // Send the ack immediately. The timeout should not have fired. |
1158 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 1149 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
1159 EXPECT_FALSE(IsTimeoutRunning()); | 1150 EXPECT_FALSE(IsTimeoutRunning()); |
1160 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 1151 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
1161 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 1152 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
1162 | 1153 |
1163 // Now explicitly disable the timeout. | 1154 // Now explicitly disable the timeout. |
1164 SetAckTimeoutDisabled(); | 1155 SetAckTimeoutDisabled(); |
1165 EXPECT_FALSE(IsTimeoutRunning()); | 1156 EXPECT_FALSE(IsTimeoutRunning()); |
1166 | 1157 |
1167 // A TouchMove should not start or trigger the timeout. | 1158 // A TouchMove should not start or trigger the timeout. |
1168 MoveTouchPoint(0, 5, 5); | 1159 MoveTouchPoint(0, 5, 5); |
1169 EXPECT_FALSE(IsTimeoutRunning()); | 1160 EXPECT_FALSE(IsTimeoutRunning()); |
1170 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 1161 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
1171 RunTasksAndWait(DefaultTouchTimeoutDelay() * 2); | 1162 RunTasksAndWait(DefaultTouchTimeoutDelay() * 2); |
1172 EXPECT_EQ(0U, GetAndResetAckedEventCount()); | 1163 EXPECT_EQ(0U, GetAndResetAckedEventCount()); |
1173 } | 1164 } |
1174 | 1165 |
1175 // Tests that the timeout is never started if the ack is synchronous. | 1166 // Tests that the timeout is never started if the ack is synchronous. |
1176 TEST_F(TouchEventQueueTest, NoTouchTimeoutIfAckIsSynchronous) { | 1167 TEST_F(LegacyTouchEventQueueTest, NoTouchTimeoutIfAckIsSynchronous) { |
1177 SetUpForTimeoutTesting(); | 1168 SetUpForTimeoutTesting(); |
1178 | 1169 |
1179 // Queue a TouchStart. | 1170 // Queue a TouchStart. |
1180 SetSyncAckResult(INPUT_EVENT_ACK_STATE_CONSUMED); | 1171 SetSyncAckResult(INPUT_EVENT_ACK_STATE_CONSUMED); |
1181 ASSERT_FALSE(IsTimeoutRunning()); | 1172 ASSERT_FALSE(IsTimeoutRunning()); |
1182 PressTouchPoint(0, 1); | 1173 PressTouchPoint(0, 1); |
1183 EXPECT_FALSE(IsTimeoutRunning()); | 1174 EXPECT_FALSE(IsTimeoutRunning()); |
1184 } | 1175 } |
1185 | 1176 |
1186 // Tests that the timeout does not fire if explicitly disabled while an event | 1177 // Tests that the timeout does not fire if explicitly disabled while an event |
1187 // is in-flight. | 1178 // is in-flight. |
1188 TEST_F(TouchEventQueueTest, NoTouchTimeoutIfDisabledWhileTimerIsActive) { | 1179 TEST_F(LegacyTouchEventQueueTest, NoTouchTimeoutIfDisabledWhileTimerIsActive) { |
1189 SetUpForTimeoutTesting(); | 1180 SetUpForTimeoutTesting(); |
1190 | 1181 |
1191 // Queue a TouchStart. | 1182 // Queue a TouchStart. |
1192 PressTouchPoint(0, 1); | 1183 PressTouchPoint(0, 1); |
1193 ASSERT_TRUE(IsTimeoutRunning()); | 1184 ASSERT_TRUE(IsTimeoutRunning()); |
1194 | 1185 |
1195 // Verify that disabling the timeout also turns off the timer. | 1186 // Verify that disabling the timeout also turns off the timer. |
1196 SetAckTimeoutDisabled(); | 1187 SetAckTimeoutDisabled(); |
1197 EXPECT_FALSE(IsTimeoutRunning()); | 1188 EXPECT_FALSE(IsTimeoutRunning()); |
1198 RunTasksAndWait(DefaultTouchTimeoutDelay() * 2); | 1189 RunTasksAndWait(DefaultTouchTimeoutDelay() * 2); |
1199 EXPECT_EQ(0U, GetAndResetAckedEventCount()); | 1190 EXPECT_EQ(0U, GetAndResetAckedEventCount()); |
1200 } | 1191 } |
1201 | 1192 |
1202 // Tests that the timeout does not fire if the delay is zero. | 1193 // Tests that the timeout does not fire if the delay is zero. |
1203 TEST_F(TouchEventQueueTest, NoTouchTimeoutIfTimeoutDelayIsZero) { | 1194 TEST_F(LegacyTouchEventQueueTest, NoTouchTimeoutIfTimeoutDelayIsZero) { |
1204 SetUpForTimeoutTesting(base::TimeDelta(), base::TimeDelta()); | 1195 SetUpForTimeoutTesting(base::TimeDelta(), base::TimeDelta()); |
1205 | 1196 |
1206 // As the delay is zero, timeout behavior should be disabled. | 1197 // As the delay is zero, timeout behavior should be disabled. |
1207 PressTouchPoint(0, 1); | 1198 PressTouchPoint(0, 1); |
1208 EXPECT_FALSE(IsTimeoutRunning()); | 1199 EXPECT_FALSE(IsTimeoutRunning()); |
1209 RunTasksAndWait(DefaultTouchTimeoutDelay() * 2); | 1200 RunTasksAndWait(DefaultTouchTimeoutDelay() * 2); |
1210 EXPECT_EQ(0U, GetAndResetAckedEventCount()); | 1201 EXPECT_EQ(0U, GetAndResetAckedEventCount()); |
1211 } | 1202 } |
1212 | 1203 |
1213 // Tests that timeout delays for mobile sites take effect when appropriate. | 1204 // Tests that timeout delays for mobile sites take effect when appropriate. |
1214 TEST_F(TouchEventQueueTest, TouchTimeoutConfiguredForMobile) { | 1205 TEST_F(LegacyTouchEventQueueTest, TouchTimeoutConfiguredForMobile) { |
1215 base::TimeDelta desktop_delay = DefaultTouchTimeoutDelay(); | 1206 base::TimeDelta desktop_delay = DefaultTouchTimeoutDelay(); |
1216 base::TimeDelta mobile_delay = base::TimeDelta(); | 1207 base::TimeDelta mobile_delay = base::TimeDelta(); |
1217 SetUpForTimeoutTesting(desktop_delay, mobile_delay); | 1208 SetUpForTimeoutTesting(desktop_delay, mobile_delay); |
1218 | 1209 |
1219 // The desktop delay is non-zero, allowing timeout behavior. | 1210 // The desktop delay is non-zero, allowing timeout behavior. |
1220 SetIsMobileOptimizedSite(false); | 1211 SetIsMobileOptimizedSite(false); |
1221 | 1212 |
1222 PressTouchPoint(0, 1); | 1213 PressTouchPoint(0, 1); |
1223 ASSERT_TRUE(IsTimeoutRunning()); | 1214 ASSERT_TRUE(IsTimeoutRunning()); |
1224 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); | 1215 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); |
1225 ReleaseTouchPoint(0); | 1216 ReleaseTouchPoint(0); |
1226 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); | 1217 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); |
1227 EXPECT_EQ(2U, GetAndResetAckedEventCount()); | 1218 EXPECT_EQ(2U, GetAndResetAckedEventCount()); |
1228 ASSERT_FALSE(IsTimeoutRunning()); | 1219 ASSERT_FALSE(IsTimeoutRunning()); |
1229 | 1220 |
1230 // The mobile delay is zero, preventing timeout behavior. | 1221 // The mobile delay is zero, preventing timeout behavior. |
1231 SetIsMobileOptimizedSite(true); | 1222 SetIsMobileOptimizedSite(true); |
1232 | 1223 |
1233 PressTouchPoint(0, 1); | 1224 PressTouchPoint(0, 1); |
1234 EXPECT_FALSE(IsTimeoutRunning()); | 1225 EXPECT_FALSE(IsTimeoutRunning()); |
1235 RunTasksAndWait(DefaultTouchTimeoutDelay() * 2); | 1226 RunTasksAndWait(DefaultTouchTimeoutDelay() * 2); |
1236 EXPECT_EQ(0U, GetAndResetAckedEventCount()); | 1227 EXPECT_EQ(0U, GetAndResetAckedEventCount()); |
1237 } | 1228 } |
1238 | 1229 |
1239 // Tests that a TouchCancel timeout plays nice when the timed out touch stream | 1230 // Tests that a TouchCancel timeout plays nice when the timed out touch stream |
1240 // turns into a scroll gesture sequence. | 1231 // turns into a scroll gesture sequence. |
1241 TEST_F(TouchEventQueueTest, TouchTimeoutWithFollowupGesture) { | 1232 TEST_F(LegacyTouchEventQueueTest, TouchTimeoutWithFollowupGesture) { |
1242 SetUpForTimeoutTesting(); | 1233 SetUpForTimeoutTesting(); |
1243 | 1234 |
1244 // Queue a TouchStart. | 1235 // Queue a TouchStart. |
1245 PressTouchPoint(0, 1); | 1236 PressTouchPoint(0, 1); |
1246 EXPECT_TRUE(IsTimeoutRunning()); | 1237 EXPECT_TRUE(IsTimeoutRunning()); |
1247 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 1238 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
1248 | 1239 |
1249 // The cancelled sequence may turn into a scroll gesture. | 1240 // The cancelled sequence may turn into a scroll gesture. |
1250 WebGestureEvent followup_scroll( | 1241 WebGestureEvent followup_scroll( |
1251 WebInputEvent::GestureScrollBegin, WebInputEvent::NoModifiers, | 1242 WebInputEvent::GestureScrollBegin, WebInputEvent::NoModifiers, |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1287 SendGestureEvent(blink::WebInputEvent::GestureScrollEnd); | 1278 SendGestureEvent(blink::WebInputEvent::GestureScrollEnd); |
1288 PressTouchPoint(0, 1); | 1279 PressTouchPoint(0, 1); |
1289 EXPECT_TRUE(IsTimeoutRunning()); | 1280 EXPECT_TRUE(IsTimeoutRunning()); |
1290 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 1281 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
1291 EXPECT_EQ(0U, GetAndResetAckedEventCount()); | 1282 EXPECT_EQ(0U, GetAndResetAckedEventCount()); |
1292 } | 1283 } |
1293 | 1284 |
1294 // Tests that a TouchCancel timeout plays nice when the timed out touch stream | 1285 // Tests that a TouchCancel timeout plays nice when the timed out touch stream |
1295 // turns into a scroll gesture sequence, but the original event acks are | 1286 // turns into a scroll gesture sequence, but the original event acks are |
1296 // significantly delayed. | 1287 // significantly delayed. |
1297 TEST_F(TouchEventQueueTest, TouchTimeoutWithFollowupGestureAndDelayedAck) { | 1288 TEST_F(LegacyTouchEventQueueTest, |
| 1289 TouchTimeoutWithFollowupGestureAndDelayedAck) { |
1298 SetUpForTimeoutTesting(); | 1290 SetUpForTimeoutTesting(); |
1299 | 1291 |
1300 // Queue a TouchStart. | 1292 // Queue a TouchStart. |
1301 PressTouchPoint(0, 1); | 1293 PressTouchPoint(0, 1); |
1302 EXPECT_TRUE(IsTimeoutRunning()); | 1294 EXPECT_TRUE(IsTimeoutRunning()); |
1303 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 1295 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
1304 | 1296 |
1305 // The cancelled sequence may turn into a scroll gesture. | 1297 // The cancelled sequence may turn into a scroll gesture. |
1306 WebGestureEvent followup_scroll( | 1298 WebGestureEvent followup_scroll( |
1307 WebInputEvent::GestureScrollBegin, WebInputEvent::NoModifiers, | 1299 WebInputEvent::GestureScrollBegin, WebInputEvent::NoModifiers, |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1344 EXPECT_EQ(0U, GetAndResetSentEventCount()); | 1336 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
1345 EXPECT_EQ(0U, GetAndResetAckedEventCount()); | 1337 EXPECT_EQ(0U, GetAndResetAckedEventCount()); |
1346 | 1338 |
1347 PressTouchPoint(0, 1); | 1339 PressTouchPoint(0, 1); |
1348 EXPECT_TRUE(IsTimeoutRunning()); | 1340 EXPECT_TRUE(IsTimeoutRunning()); |
1349 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 1341 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
1350 } | 1342 } |
1351 | 1343 |
1352 // Tests that a delayed TouchEvent ack will not trigger a TouchCancel timeout if | 1344 // Tests that a delayed TouchEvent ack will not trigger a TouchCancel timeout if |
1353 // the timed-out event had no consumer. | 1345 // the timed-out event had no consumer. |
1354 TEST_F(TouchEventQueueTest, NoCancelOnTouchTimeoutWithoutConsumer) { | 1346 TEST_F(LegacyTouchEventQueueTest, NoCancelOnTouchTimeoutWithoutConsumer) { |
1355 SetUpForTimeoutTesting(); | 1347 SetUpForTimeoutTesting(); |
1356 | 1348 |
1357 // Queue a TouchStart. | 1349 // Queue a TouchStart. |
1358 PressTouchPoint(0, 1); | 1350 PressTouchPoint(0, 1); |
1359 ASSERT_EQ(1U, GetAndResetSentEventCount()); | 1351 ASSERT_EQ(1U, GetAndResetSentEventCount()); |
1360 ASSERT_EQ(0U, GetAndResetAckedEventCount()); | 1352 ASSERT_EQ(0U, GetAndResetAckedEventCount()); |
1361 EXPECT_TRUE(IsTimeoutRunning()); | 1353 EXPECT_TRUE(IsTimeoutRunning()); |
1362 | 1354 |
1363 // Delay the ack. | 1355 // Delay the ack. |
1364 RunTasksAndWait(DefaultTouchTimeoutDelay() * 2); | 1356 RunTasksAndWait(DefaultTouchTimeoutDelay() * 2); |
(...skipping 18 matching lines...) Expand all Loading... |
1383 EXPECT_EQ(0U, GetAndResetSentEventCount()); | 1375 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
1384 | 1376 |
1385 // Subsequent events should be handled normally. | 1377 // Subsequent events should be handled normally. |
1386 PressTouchPoint(0, 1); | 1378 PressTouchPoint(0, 1); |
1387 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 1379 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
1388 EXPECT_EQ(0U, GetAndResetAckedEventCount()); | 1380 EXPECT_EQ(0U, GetAndResetAckedEventCount()); |
1389 } | 1381 } |
1390 | 1382 |
1391 // Tests that TouchMove's movedBeyondSlopRegion is set to false if within the | 1383 // Tests that TouchMove's movedBeyondSlopRegion is set to false if within the |
1392 // boundary-inclusive slop region for an unconsumed TouchStart. | 1384 // boundary-inclusive slop region for an unconsumed TouchStart. |
1393 TEST_F(TouchEventQueueTest, TouchMovedBeyondSlopRegionCheck) { | 1385 TEST_F(LegacyTouchEventQueueTest, TouchMovedBeyondSlopRegionCheck) { |
1394 SetUpForTouchMoveSlopTesting(kSlopLengthDips); | 1386 SetUpForTouchMoveSlopTesting(kSlopLengthDips); |
1395 | 1387 |
1396 // Queue a TouchStart. | 1388 // Queue a TouchStart. |
1397 PressTouchPoint(0, 0); | 1389 PressTouchPoint(0, 0); |
1398 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 1390 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
1399 ASSERT_EQ(1U, GetAndResetSentEventCount()); | 1391 ASSERT_EQ(1U, GetAndResetSentEventCount()); |
1400 ASSERT_EQ(1U, GetAndResetAckedEventCount()); | 1392 ASSERT_EQ(1U, GetAndResetAckedEventCount()); |
1401 | 1393 |
1402 // TouchMove's movedBeyondSlopRegion within the slop region is set to false. | 1394 // TouchMove's movedBeyondSlopRegion within the slop region is set to false. |
1403 MoveTouchPoint(0, 0, kHalfSlopLengthDips); | 1395 MoveTouchPoint(0, 0, kHalfSlopLengthDips); |
(...skipping 29 matching lines...) Expand all Loading... |
1433 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 1425 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
1434 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 1426 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
1435 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 1427 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
1436 EXPECT_FALSE(acked_event().movedBeyondSlopRegion); | 1428 EXPECT_FALSE(acked_event().movedBeyondSlopRegion); |
1437 | 1429 |
1438 // When a TouchMove exceeds the (Euclidean) distance, the TouchMove's | 1430 // When a TouchMove exceeds the (Euclidean) distance, the TouchMove's |
1439 // movedBeyondSlopRegion is set to true. | 1431 // movedBeyondSlopRegion is set to true. |
1440 const float kFortyFiveDegreeSlopLengthXY = | 1432 const float kFortyFiveDegreeSlopLengthXY = |
1441 kSlopLengthDips * std::sqrt(2.f) / 2; | 1433 kSlopLengthDips * std::sqrt(2.f) / 2; |
1442 MoveTouchPoint(0, kFortyFiveDegreeSlopLengthXY + .2f, | 1434 MoveTouchPoint(0, kFortyFiveDegreeSlopLengthXY + .2f, |
1443 kFortyFiveDegreeSlopLengthXY + .2f); | 1435 kFortyFiveDegreeSlopLengthXY + .2f); |
1444 EXPECT_EQ(1U, queued_event_count()); | 1436 EXPECT_EQ(1U, queued_event_count()); |
1445 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 1437 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
1446 EXPECT_EQ(0U, GetAndResetAckedEventCount()); | 1438 EXPECT_EQ(0U, GetAndResetAckedEventCount()); |
1447 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 1439 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
1448 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 1440 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
1449 EXPECT_TRUE(acked_event().movedBeyondSlopRegion); | 1441 EXPECT_TRUE(acked_event().movedBeyondSlopRegion); |
1450 } | 1442 } |
1451 | 1443 |
1452 // Tests that even very small TouchMove's movedBeyondSlopRegion is set to true | 1444 // Tests that even very small TouchMove's movedBeyondSlopRegion is set to true |
1453 // when the slop region's dimension is 0. | 1445 // when the slop region's dimension is 0. |
1454 TEST_F(TouchEventQueueTest, MovedBeyondSlopRegionAlwaysTrueIfDimensionZero) { | 1446 TEST_F(LegacyTouchEventQueueTest, |
| 1447 MovedBeyondSlopRegionAlwaysTrueIfDimensionZero) { |
1455 // Queue a TouchStart. | 1448 // Queue a TouchStart. |
1456 PressTouchPoint(0, 0); | 1449 PressTouchPoint(0, 0); |
1457 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 1450 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
1458 ASSERT_EQ(1U, GetAndResetSentEventCount()); | 1451 ASSERT_EQ(1U, GetAndResetSentEventCount()); |
1459 ASSERT_EQ(1U, GetAndResetAckedEventCount()); | 1452 ASSERT_EQ(1U, GetAndResetAckedEventCount()); |
1460 | 1453 |
1461 // Small TouchMove's movedBeyondSlopRegion is set to true. | 1454 // Small TouchMove's movedBeyondSlopRegion is set to true. |
1462 MoveTouchPoint(0, 0.001f, 0.001f); | 1455 MoveTouchPoint(0, 0.001f, 0.001f); |
1463 EXPECT_EQ(1U, queued_event_count()); | 1456 EXPECT_EQ(1U, queued_event_count()); |
1464 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 1457 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
1465 EXPECT_EQ(0U, GetAndResetAckedEventCount()); | 1458 EXPECT_EQ(0U, GetAndResetAckedEventCount()); |
1466 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 1459 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
1467 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 1460 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
1468 EXPECT_TRUE(acked_event().movedBeyondSlopRegion); | 1461 EXPECT_TRUE(acked_event().movedBeyondSlopRegion); |
1469 } | 1462 } |
1470 | 1463 |
1471 // Tests that secondary touch points can be forwarded even if the primary touch | 1464 // Tests that secondary touch points can be forwarded even if the primary touch |
1472 // point had no consumer. | 1465 // point had no consumer. |
1473 TEST_F(TouchEventQueueTest, SecondaryTouchForwardedAfterPrimaryHadNoConsumer) { | 1466 TEST_F(LegacyTouchEventQueueTest, |
| 1467 SecondaryTouchForwardedAfterPrimaryHadNoConsumer) { |
1474 // Queue a TouchStart. | 1468 // Queue a TouchStart. |
1475 PressTouchPoint(0, 0); | 1469 PressTouchPoint(0, 0); |
1476 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS); | 1470 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS); |
1477 ASSERT_EQ(1U, GetAndResetSentEventCount()); | 1471 ASSERT_EQ(1U, GetAndResetSentEventCount()); |
1478 ASSERT_EQ(1U, GetAndResetAckedEventCount()); | 1472 ASSERT_EQ(1U, GetAndResetAckedEventCount()); |
1479 | 1473 |
1480 // Events should not be forwarded, as the point had no consumer. | 1474 // Events should not be forwarded, as the point had no consumer. |
1481 MoveTouchPoint(0, 0, 15); | 1475 MoveTouchPoint(0, 0, 15); |
1482 EXPECT_EQ(0U, queued_event_count()); | 1476 EXPECT_EQ(0U, queued_event_count()); |
1483 EXPECT_EQ(0U, GetAndResetSentEventCount()); | 1477 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
1484 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 1478 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
1485 | 1479 |
1486 // Simulate a secondary pointer press. | 1480 // Simulate a secondary pointer press. |
1487 PressTouchPoint(20, 0); | 1481 PressTouchPoint(20, 0); |
1488 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 1482 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
1489 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 1483 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
1490 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 1484 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
1491 | 1485 |
1492 // TouchMove with a secondary pointer should not be suppressed. | 1486 // TouchMove with a secondary pointer should not be suppressed. |
1493 MoveTouchPoint(1, 25, 0); | 1487 MoveTouchPoint(1, 25, 0); |
1494 EXPECT_EQ(1U, queued_event_count()); | 1488 EXPECT_EQ(1U, queued_event_count()); |
1495 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 1489 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
1496 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 1490 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
1497 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 1491 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
1498 } | 1492 } |
1499 | 1493 |
1500 // Tests that secondary touch points can be forwarded after scrolling begins | 1494 // Tests that secondary touch points can be forwarded after scrolling begins |
1501 // while first touch point has no consumer. | 1495 // while first touch point has no consumer. |
1502 TEST_F(TouchEventQueueTest, NoForwardingAfterScrollWithNoTouchConsumers) { | 1496 TEST_F(LegacyTouchEventQueueTest, NoForwardingAfterScrollWithNoTouchConsumers) { |
1503 // Queue a TouchStart. | 1497 // Queue a TouchStart. |
1504 PressTouchPoint(0, 0); | 1498 PressTouchPoint(0, 0); |
1505 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS); | 1499 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS); |
1506 ASSERT_EQ(1U, GetAndResetSentEventCount()); | 1500 ASSERT_EQ(1U, GetAndResetSentEventCount()); |
1507 ASSERT_EQ(1U, GetAndResetAckedEventCount()); | 1501 ASSERT_EQ(1U, GetAndResetAckedEventCount()); |
1508 | 1502 |
1509 WebGestureEvent followup_scroll(WebInputEvent::GestureScrollBegin, | 1503 WebGestureEvent followup_scroll(WebInputEvent::GestureScrollBegin, |
1510 WebInputEvent::NoModifiers, | 1504 WebInputEvent::NoModifiers, |
1511 WebInputEvent::TimeStampForTesting); | 1505 WebInputEvent::TimeStampForTesting); |
1512 SetFollowupEvent(followup_scroll); | 1506 SetFollowupEvent(followup_scroll); |
1513 MoveTouchPoint(0, 20, 5); | 1507 MoveTouchPoint(0, 20, 5); |
1514 EXPECT_EQ(0U, GetAndResetSentEventCount()); | 1508 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
1515 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 1509 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
1516 EXPECT_EQ(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS, acked_event_state()); | 1510 EXPECT_EQ(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS, acked_event_state()); |
1517 | 1511 |
1518 // The secondary pointer press should be forwarded. | 1512 // The secondary pointer press should be forwarded. |
1519 PressTouchPoint(20, 0); | 1513 PressTouchPoint(20, 0); |
1520 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); | 1514 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); |
1521 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 1515 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
1522 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 1516 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
1523 | 1517 |
1524 // TouchMove with a secondary pointer should also be forwarded. | 1518 // TouchMove with a secondary pointer should also be forwarded. |
1525 MoveTouchPoint(1, 25, 0); | 1519 MoveTouchPoint(1, 25, 0); |
1526 EXPECT_EQ(1U, queued_event_count()); | 1520 EXPECT_EQ(1U, queued_event_count()); |
1527 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 1521 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
1528 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); | 1522 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); |
1529 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 1523 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
1530 } | 1524 } |
1531 | 1525 |
1532 TEST_F(TouchEventQueueTest, AsyncTouch) { | 1526 TEST_F(LegacyTouchEventQueueTest, AsyncTouch) { |
1533 // Queue a TouchStart. | 1527 // Queue a TouchStart. |
1534 PressTouchPoint(0, 1); | 1528 PressTouchPoint(0, 1); |
1535 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 1529 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
1536 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 1530 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
1537 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 1531 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
1538 | 1532 |
1539 for (int i = 0; i < 3; ++i) { | 1533 for (int i = 0; i < 3; ++i) { |
1540 SendGestureEventAck(WebInputEvent::GestureScrollUpdate, | 1534 SendGestureEventAck(WebInputEvent::GestureScrollUpdate, |
1541 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 1535 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
1542 | 1536 |
1543 MoveTouchPoint(0, 10, 5+i); | 1537 MoveTouchPoint(0, 10, 5 + i); |
1544 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 1538 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
1545 EXPECT_FALSE(HasPendingAsyncTouchMove()); | 1539 EXPECT_FALSE(HasPendingAsyncTouchMove()); |
1546 EXPECT_EQ(WebInputEvent::Blocking, sent_event().dispatchType); | 1540 EXPECT_EQ(WebInputEvent::Blocking, sent_event().dispatchType); |
1547 EXPECT_EQ(0U, queued_event_count()); | 1541 EXPECT_EQ(0U, queued_event_count()); |
1548 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 1542 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
1549 | 1543 |
1550 // Consuming a scroll event will throttle subsequent touchmoves. | 1544 // Consuming a scroll event will throttle subsequent touchmoves. |
1551 SendGestureEventAck(WebInputEvent::GestureScrollUpdate, | 1545 SendGestureEventAck(WebInputEvent::GestureScrollUpdate, |
1552 INPUT_EVENT_ACK_STATE_CONSUMED); | 1546 INPUT_EVENT_ACK_STATE_CONSUMED); |
1553 MoveTouchPoint(0, 10, 7+i); | 1547 MoveTouchPoint(0, 10, 7 + i); |
1554 EXPECT_TRUE(HasPendingAsyncTouchMove()); | 1548 EXPECT_TRUE(HasPendingAsyncTouchMove()); |
1555 EXPECT_EQ(0U, queued_event_count()); | 1549 EXPECT_EQ(0U, queued_event_count()); |
1556 EXPECT_EQ(0U, GetAndResetSentEventCount()); | 1550 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
1557 } | 1551 } |
1558 } | 1552 } |
1559 | 1553 |
1560 // Ensure that touchmove's are appropriately throttled during a typical | 1554 // Ensure that touchmove's are appropriately throttled during a typical |
1561 // scroll sequences that transitions between scrolls consumed and unconsumed. | 1555 // scroll sequences that transitions between scrolls consumed and unconsumed. |
1562 TEST_F(TouchEventQueueTest, AsyncTouchThrottledAfterScroll) { | 1556 TEST_F(LegacyTouchEventQueueTest, AsyncTouchThrottledAfterScroll) { |
1563 // Process a TouchStart | 1557 // Process a TouchStart |
1564 PressTouchPoint(0, 1); | 1558 PressTouchPoint(0, 1); |
1565 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 1559 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
1566 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 1560 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
1567 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 1561 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
1568 | 1562 |
1569 // Now send the first touch move and associated GestureScrollBegin. | 1563 // Now send the first touch move and associated GestureScrollBegin. |
1570 MoveTouchPoint(0, 0, 5); | 1564 MoveTouchPoint(0, 0, 5); |
1571 WebGestureEvent followup_scroll(WebInputEvent::GestureScrollBegin, | 1565 WebGestureEvent followup_scroll(WebInputEvent::GestureScrollBegin, |
1572 WebInputEvent::NoModifiers, | 1566 WebInputEvent::NoModifiers, |
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1739 EXPECT_EQ(1U, queued_event_count()); | 1733 EXPECT_EQ(1U, queued_event_count()); |
1740 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 1734 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
1741 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 1735 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
1742 | 1736 |
1743 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 1737 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
1744 EXPECT_EQ(0U, queued_event_count()); | 1738 EXPECT_EQ(0U, queued_event_count()); |
1745 EXPECT_EQ(0U, GetAndResetSentEventCount()); | 1739 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
1746 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 1740 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
1747 } | 1741 } |
1748 | 1742 |
1749 TEST_F(TouchEventQueueTest, AsyncTouchFlushedByTouchEnd) { | 1743 TEST_F(LegacyTouchEventQueueTest, AsyncTouchFlushedByTouchEnd) { |
1750 PressTouchPoint(0, 0); | 1744 PressTouchPoint(0, 0); |
1751 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 1745 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
1752 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 1746 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
1753 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 1747 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
1754 | 1748 |
1755 // Initiate async touchmove dispatch after the start of a scroll sequence. | 1749 // Initiate async touchmove dispatch after the start of a scroll sequence. |
1756 MoveTouchPoint(0, 0, 5); | 1750 MoveTouchPoint(0, 0, 5); |
1757 WebGestureEvent followup_scroll(WebInputEvent::GestureScrollBegin, | 1751 WebGestureEvent followup_scroll(WebInputEvent::GestureScrollBegin, |
1758 WebInputEvent::NoModifiers, | 1752 WebInputEvent::NoModifiers, |
1759 WebInputEvent::TimeStampForTesting); | 1753 WebInputEvent::TimeStampForTesting); |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1795 EXPECT_EQ(0, all_sent_events()[0].touches[0].position.x); | 1789 EXPECT_EQ(0, all_sent_events()[0].touches[0].position.x); |
1796 EXPECT_EQ(0, all_sent_events()[0].touches[0].position.y); | 1790 EXPECT_EQ(0, all_sent_events()[0].touches[0].position.y); |
1797 EXPECT_EQ(WebInputEvent::TouchEnd, all_sent_events()[1].type()); | 1791 EXPECT_EQ(WebInputEvent::TouchEnd, all_sent_events()[1].type()); |
1798 EXPECT_NE(WebInputEvent::Blocking, all_sent_events()[1].dispatchType); | 1792 EXPECT_NE(WebInputEvent::Blocking, all_sent_events()[1].dispatchType); |
1799 EXPECT_EQ(2U, GetAndResetSentEventCount()); | 1793 EXPECT_EQ(2U, GetAndResetSentEventCount()); |
1800 EXPECT_EQ(0U, GetAndResetAckedEventCount()); | 1794 EXPECT_EQ(0U, GetAndResetAckedEventCount()); |
1801 } | 1795 } |
1802 | 1796 |
1803 // Ensure that async touch dispatch and touch ack timeout interactions work | 1797 // Ensure that async touch dispatch and touch ack timeout interactions work |
1804 // appropriately. | 1798 // appropriately. |
1805 TEST_F(TouchEventQueueTest, AsyncTouchWithAckTimeout) { | 1799 TEST_F(LegacyTouchEventQueueTest, AsyncTouchWithAckTimeout) { |
1806 SetUpForTimeoutTesting(); | 1800 SetUpForTimeoutTesting(); |
1807 | 1801 |
1808 // The touchstart should start the timeout. | 1802 // The touchstart should start the timeout. |
1809 PressTouchPoint(0, 0); | 1803 PressTouchPoint(0, 0); |
1810 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 1804 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
1811 EXPECT_TRUE(IsTimeoutRunning()); | 1805 EXPECT_TRUE(IsTimeoutRunning()); |
1812 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 1806 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
1813 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 1807 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
1814 EXPECT_FALSE(IsTimeoutRunning()); | 1808 EXPECT_FALSE(IsTimeoutRunning()); |
1815 | 1809 |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1877 SendGestureEventAck(WebInputEvent::GestureScrollUpdate, | 1871 SendGestureEventAck(WebInputEvent::GestureScrollUpdate, |
1878 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 1872 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
1879 MoveTouchPoint(0, 25, 5); | 1873 MoveTouchPoint(0, 25, 5); |
1880 EXPECT_FALSE(HasPendingAsyncTouchMove()); | 1874 EXPECT_FALSE(HasPendingAsyncTouchMove()); |
1881 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 1875 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
1882 EXPECT_EQ(0U, GetAndResetSentEventCount()); | 1876 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
1883 } | 1877 } |
1884 | 1878 |
1885 // Ensure that if the touch ack for an async touchmove triggers a follow-up | 1879 // Ensure that if the touch ack for an async touchmove triggers a follow-up |
1886 // touch event, that follow-up touch will be forwarded appropriately. | 1880 // touch event, that follow-up touch will be forwarded appropriately. |
1887 TEST_F(TouchEventQueueTest, AsyncTouchWithTouchCancelAfterAck) { | 1881 TEST_F(LegacyTouchEventQueueTest, AsyncTouchWithTouchCancelAfterAck) { |
1888 PressTouchPoint(0, 0); | 1882 PressTouchPoint(0, 0); |
1889 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 1883 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
1890 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 1884 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
1891 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 1885 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
1892 | 1886 |
1893 // The start of a scroll gesture should trigger async touch event dispatch. | 1887 // The start of a scroll gesture should trigger async touch event dispatch. |
1894 MoveTouchPoint(0, 1, 1); | 1888 MoveTouchPoint(0, 1, 1); |
1895 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 1889 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
1896 WebGestureEvent followup_scroll(WebInputEvent::GestureScrollBegin, | 1890 WebGestureEvent followup_scroll(WebInputEvent::GestureScrollBegin, |
1897 WebInputEvent::NoModifiers, | 1891 WebInputEvent::NoModifiers, |
(...skipping 30 matching lines...) Expand all Loading... |
1928 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 1922 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
1929 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 1923 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
1930 EXPECT_EQ(0U, queued_event_count()); | 1924 EXPECT_EQ(0U, queued_event_count()); |
1931 EXPECT_EQ(WebInputEvent::TouchCancel, acked_event().type()); | 1925 EXPECT_EQ(WebInputEvent::TouchCancel, acked_event().type()); |
1932 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 1926 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
1933 EXPECT_EQ(0U, GetAndResetSentEventCount()); | 1927 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
1934 } | 1928 } |
1935 | 1929 |
1936 // Ensure that the async touch is fully reset if the touch sequence restarts | 1930 // Ensure that the async touch is fully reset if the touch sequence restarts |
1937 // without properly terminating. | 1931 // without properly terminating. |
1938 TEST_F(TouchEventQueueTest, AsyncTouchWithHardTouchStartReset) { | 1932 TEST_F(LegacyTouchEventQueueTest, AsyncTouchWithHardTouchStartReset) { |
1939 PressTouchPoint(0, 0); | 1933 PressTouchPoint(0, 0); |
1940 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 1934 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
1941 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 1935 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
1942 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 1936 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
1943 | 1937 |
1944 // Trigger async touchmove dispatch. | 1938 // Trigger async touchmove dispatch. |
1945 MoveTouchPoint(0, 1, 1); | 1939 MoveTouchPoint(0, 1, 1); |
1946 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 1940 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
1947 WebGestureEvent followup_scroll(WebInputEvent::GestureScrollBegin, | 1941 WebGestureEvent followup_scroll(WebInputEvent::GestureScrollBegin, |
1948 WebInputEvent::NoModifiers, | 1942 WebInputEvent::NoModifiers, |
(...skipping 20 matching lines...) Expand all Loading... |
1969 PressTouchPoint(0, 0); | 1963 PressTouchPoint(0, 0); |
1970 EXPECT_EQ(WebInputEvent::TouchStart, sent_event().type()); | 1964 EXPECT_EQ(WebInputEvent::TouchStart, sent_event().type()); |
1971 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 1965 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
1972 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 1966 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
1973 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 1967 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
1974 } | 1968 } |
1975 | 1969 |
1976 // Ensure that even when the interval expires, we still need to wait for the | 1970 // Ensure that even when the interval expires, we still need to wait for the |
1977 // ack sent back from render to send the next async touchmove once the scroll | 1971 // ack sent back from render to send the next async touchmove once the scroll |
1978 // starts. | 1972 // starts. |
1979 TEST_F(TouchEventQueueTest, SendNextThrottledAsyncTouchMoveAfterAck) { | 1973 TEST_F(LegacyTouchEventQueueTest, SendNextThrottledAsyncTouchMoveAfterAck) { |
1980 // Process a TouchStart | 1974 // Process a TouchStart |
1981 PressTouchPoint(0, 1); | 1975 PressTouchPoint(0, 1); |
1982 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 1976 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
1983 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 1977 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
1984 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 1978 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
1985 | 1979 |
1986 // Initiate async touchmove dispatch after the start of a scroll sequence. | 1980 // Initiate async touchmove dispatch after the start of a scroll sequence. |
1987 MoveTouchPoint(0, 0, 5); | 1981 MoveTouchPoint(0, 0, 5); |
1988 WebGestureEvent followup_scroll(WebInputEvent::GestureScrollBegin, | 1982 WebGestureEvent followup_scroll(WebInputEvent::GestureScrollBegin, |
1989 WebInputEvent::NoModifiers, | 1983 WebInputEvent::NoModifiers, |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2031 EXPECT_FALSE(HasPendingAsyncTouchMove()); | 2025 EXPECT_FALSE(HasPendingAsyncTouchMove()); |
2032 EXPECT_EQ(0U, queued_event_count()); | 2026 EXPECT_EQ(0U, queued_event_count()); |
2033 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 2027 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
2034 EXPECT_EQ(0U, GetAndResetAckedEventCount()); | 2028 EXPECT_EQ(0U, GetAndResetAckedEventCount()); |
2035 EXPECT_EQ(1U, uncancelable_touch_moves_pending_ack_count()); | 2029 EXPECT_EQ(1U, uncancelable_touch_moves_pending_ack_count()); |
2036 } | 2030 } |
2037 | 2031 |
2038 // Ensure that even when we receive the ack from render, we still need to wait | 2032 // Ensure that even when we receive the ack from render, we still need to wait |
2039 // for the interval expires to send the next async touchmove once the scroll | 2033 // for the interval expires to send the next async touchmove once the scroll |
2040 // starts. | 2034 // starts. |
2041 TEST_F(TouchEventQueueTest, SendNextAsyncTouchMoveAfterAckAndTimeExpire) { | 2035 TEST_F(LegacyTouchEventQueueTest, SendNextAsyncTouchMoveAfterAckAndTimeExpire) { |
2042 // Process a TouchStart | 2036 // Process a TouchStart |
2043 PressTouchPoint(0, 1); | 2037 PressTouchPoint(0, 1); |
2044 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 2038 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
2045 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 2039 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
2046 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 2040 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
2047 | 2041 |
2048 // Initiate async touchmove dispatch after the start of a scroll sequence. | 2042 // Initiate async touchmove dispatch after the start of a scroll sequence. |
2049 MoveTouchPoint(0, 0, 5); | 2043 MoveTouchPoint(0, 0, 5); |
2050 WebGestureEvent followup_scroll(WebInputEvent::GestureScrollBegin, | 2044 WebGestureEvent followup_scroll(WebInputEvent::GestureScrollBegin, |
2051 WebInputEvent::NoModifiers, | 2045 WebInputEvent::NoModifiers, |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2090 MoveTouchPoint(0, 0, 50); | 2084 MoveTouchPoint(0, 0, 50); |
2091 EXPECT_FALSE(HasPendingAsyncTouchMove()); | 2085 EXPECT_FALSE(HasPendingAsyncTouchMove()); |
2092 EXPECT_EQ(WebInputEvent::TouchMove, sent_event().type()); | 2086 EXPECT_EQ(WebInputEvent::TouchMove, sent_event().type()); |
2093 EXPECT_NE(WebInputEvent::Blocking, sent_event().dispatchType); | 2087 EXPECT_NE(WebInputEvent::Blocking, sent_event().dispatchType); |
2094 EXPECT_EQ(0U, queued_event_count()); | 2088 EXPECT_EQ(0U, queued_event_count()); |
2095 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 2089 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
2096 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 2090 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
2097 EXPECT_EQ(1U, uncancelable_touch_moves_pending_ack_count()); | 2091 EXPECT_EQ(1U, uncancelable_touch_moves_pending_ack_count()); |
2098 } | 2092 } |
2099 | 2093 |
2100 TEST_F(TouchEventQueueTest, AsyncTouchFlushedByNonTouchMove) { | 2094 TEST_F(LegacyTouchEventQueueTest, AsyncTouchFlushedByNonTouchMove) { |
2101 // Process a TouchStart | 2095 // Process a TouchStart |
2102 PressTouchPoint(0, 1); | 2096 PressTouchPoint(0, 1); |
2103 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 2097 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
2104 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 2098 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
2105 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 2099 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
2106 | 2100 |
2107 // Initiate async touchmove dispatch after the start of a scroll sequence. | 2101 // Initiate async touchmove dispatch after the start of a scroll sequence. |
2108 MoveTouchPoint(0, 0, 5); | 2102 MoveTouchPoint(0, 0, 5); |
2109 WebGestureEvent followup_scroll(WebInputEvent::GestureScrollBegin, | 2103 WebGestureEvent followup_scroll(WebInputEvent::GestureScrollBegin, |
2110 WebInputEvent::NoModifiers, | 2104 WebInputEvent::NoModifiers, |
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2205 EXPECT_EQ(0U, queued_event_count()); | 2199 EXPECT_EQ(0U, queued_event_count()); |
2206 EXPECT_EQ(WebInputEvent::TouchMove, sent_event().type()); | 2200 EXPECT_EQ(WebInputEvent::TouchMove, sent_event().type()); |
2207 EXPECT_NE(WebInputEvent::Blocking, sent_event().dispatchType); | 2201 EXPECT_NE(WebInputEvent::Blocking, sent_event().dispatchType); |
2208 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 2202 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
2209 EXPECT_EQ(0U, GetAndResetAckedEventCount()); | 2203 EXPECT_EQ(0U, GetAndResetAckedEventCount()); |
2210 } | 2204 } |
2211 | 2205 |
2212 // Ensure that even when we receive the ack from render, we still need to wait | 2206 // Ensure that even when we receive the ack from render, we still need to wait |
2213 // for the interval expires to send the next async touchmove once the scroll | 2207 // for the interval expires to send the next async touchmove once the scroll |
2214 // starts. | 2208 // starts. |
2215 TEST_F(TouchEventQueueTest, DoNotIncreaseIfClientConsumeAsyncTouchMove) { | 2209 TEST_F(LegacyTouchEventQueueTest, DoNotIncreaseIfClientConsumeAsyncTouchMove) { |
2216 // Process a TouchStart | 2210 // Process a TouchStart |
2217 PressTouchPoint(0, 1); | 2211 PressTouchPoint(0, 1); |
2218 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 2212 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
2219 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 2213 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
2220 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 2214 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
2221 | 2215 |
2222 // Initiate async touchmove dispatch after the start of a scroll sequence. | 2216 // Initiate async touchmove dispatch after the start of a scroll sequence. |
2223 MoveTouchPoint(0, 0, 5); | 2217 MoveTouchPoint(0, 0, 5); |
2224 WebGestureEvent followup_scroll(WebInputEvent::GestureScrollBegin, | 2218 WebGestureEvent followup_scroll(WebInputEvent::GestureScrollBegin, |
2225 WebInputEvent::NoModifiers, | 2219 WebInputEvent::NoModifiers, |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2267 MoveTouchPoint(0, 0, 50); | 2261 MoveTouchPoint(0, 0, 50); |
2268 EXPECT_FALSE(HasPendingAsyncTouchMove()); | 2262 EXPECT_FALSE(HasPendingAsyncTouchMove()); |
2269 EXPECT_EQ(WebInputEvent::TouchMove, sent_event().type()); | 2263 EXPECT_EQ(WebInputEvent::TouchMove, sent_event().type()); |
2270 EXPECT_NE(WebInputEvent::Blocking, sent_event().dispatchType); | 2264 EXPECT_NE(WebInputEvent::Blocking, sent_event().dispatchType); |
2271 EXPECT_EQ(0U, queued_event_count()); | 2265 EXPECT_EQ(0U, queued_event_count()); |
2272 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 2266 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
2273 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 2267 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
2274 EXPECT_EQ(0U, uncancelable_touch_moves_pending_ack_count()); | 2268 EXPECT_EQ(0U, uncancelable_touch_moves_pending_ack_count()); |
2275 } | 2269 } |
2276 | 2270 |
2277 TEST_F(TouchEventQueueTest, TouchAbsorptionWithConsumedFirstMove) { | 2271 TEST_F(LegacyTouchEventQueueTest, TouchAbsorptionWithConsumedFirstMove) { |
2278 // Queue a TouchStart. | 2272 // Queue a TouchStart. |
2279 PressTouchPoint(0, 1); | 2273 PressTouchPoint(0, 1); |
2280 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 2274 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
2281 EXPECT_EQ(0U, queued_event_count()); | 2275 EXPECT_EQ(0U, queued_event_count()); |
2282 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 2276 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
2283 | 2277 |
2284 MoveTouchPoint(0, 20, 5); | 2278 MoveTouchPoint(0, 20, 5); |
2285 SendGestureEvent(blink::WebInputEvent::GestureScrollBegin); | 2279 SendGestureEvent(blink::WebInputEvent::GestureScrollBegin); |
2286 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); | 2280 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); |
2287 EXPECT_EQ(0U, queued_event_count()); | 2281 EXPECT_EQ(0U, queued_event_count()); |
(...skipping 18 matching lines...) Expand all Loading... |
2306 EXPECT_EQ(0U, queued_event_count()); | 2300 EXPECT_EQ(0U, queued_event_count()); |
2307 EXPECT_EQ(WebInputEvent::Blocking, sent_event().dispatchType); | 2301 EXPECT_EQ(WebInputEvent::Blocking, sent_event().dispatchType); |
2308 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 2302 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
2309 | 2303 |
2310 // Touch move event is throttled. | 2304 // Touch move event is throttled. |
2311 MoveTouchPoint(0, 60, 5); | 2305 MoveTouchPoint(0, 60, 5); |
2312 EXPECT_EQ(0U, queued_event_count()); | 2306 EXPECT_EQ(0U, queued_event_count()); |
2313 EXPECT_EQ(0U, GetAndResetSentEventCount()); | 2307 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
2314 } | 2308 } |
2315 | 2309 |
2316 TEST_F(TouchEventQueueTest, TouchStartCancelableDuringScroll) { | 2310 TEST_F(LegacyTouchEventQueueTest, TouchStartCancelableDuringScroll) { |
2317 // Queue a touchstart and touchmove that go unconsumed, transitioning to an | 2311 // Queue a touchstart and touchmove that go unconsumed, transitioning to an |
2318 // active scroll sequence. | 2312 // active scroll sequence. |
2319 PressTouchPoint(0, 1); | 2313 PressTouchPoint(0, 1); |
2320 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 2314 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
2321 EXPECT_EQ(WebInputEvent::Blocking, sent_event().dispatchType); | 2315 EXPECT_EQ(WebInputEvent::Blocking, sent_event().dispatchType); |
2322 ASSERT_EQ(1U, GetAndResetSentEventCount()); | 2316 ASSERT_EQ(1U, GetAndResetSentEventCount()); |
2323 | 2317 |
2324 MoveTouchPoint(0, 20, 5); | 2318 MoveTouchPoint(0, 20, 5); |
2325 EXPECT_EQ(WebInputEvent::Blocking, sent_event().dispatchType); | 2319 EXPECT_EQ(WebInputEvent::Blocking, sent_event().dispatchType); |
2326 SendGestureEvent(blink::WebInputEvent::GestureScrollBegin); | 2320 SendGestureEvent(blink::WebInputEvent::GestureScrollBegin); |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2365 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 2359 SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
2366 EXPECT_NE(WebInputEvent::Blocking, sent_event().dispatchType); | 2360 EXPECT_NE(WebInputEvent::Blocking, sent_event().dispatchType); |
2367 ASSERT_EQ(1U, GetAndResetSentEventCount()); | 2361 ASSERT_EQ(1U, GetAndResetSentEventCount()); |
2368 | 2362 |
2369 // The touchend will be uncancelable during an active scroll sequence. | 2363 // The touchend will be uncancelable during an active scroll sequence. |
2370 ReleaseTouchPoint(0); | 2364 ReleaseTouchPoint(0); |
2371 EXPECT_NE(WebInputEvent::Blocking, sent_event().dispatchType); | 2365 EXPECT_NE(WebInputEvent::Blocking, sent_event().dispatchType); |
2372 ASSERT_EQ(1U, GetAndResetSentEventCount()); | 2366 ASSERT_EQ(1U, GetAndResetSentEventCount()); |
2373 } | 2367 } |
2374 | 2368 |
2375 TEST_F(TouchEventQueueTest, UnseenTouchPointerIdsNotForwarded) { | 2369 TEST_F(LegacyTouchEventQueueTest, UnseenTouchPointerIdsNotForwarded) { |
2376 SyntheticWebTouchEvent event; | 2370 SyntheticWebTouchEvent event; |
2377 event.PressPoint(0, 0); | 2371 event.PressPoint(0, 0); |
2378 SendTouchEvent(event); | 2372 SendTouchEvent(event); |
2379 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 2373 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
2380 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); | 2374 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); |
2381 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 2375 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
2382 | 2376 |
2383 // Give the touchmove a previously unseen pointer id; it should not be sent. | 2377 // Give the touchmove a previously unseen pointer id; it should not be sent. |
2384 int press_id = event.touches[0].id; | 2378 int press_id = event.touches[0].id; |
2385 event.MovePoint(0, 1, 1); | 2379 event.MovePoint(0, 1, 1); |
(...skipping 18 matching lines...) Expand all Loading... |
2404 | 2398 |
2405 // Give the touchmove a valid id; it should be sent. | 2399 // Give the touchmove a valid id; it should be sent. |
2406 event.touches[0].id = press_id; | 2400 event.touches[0].id = press_id; |
2407 SendTouchEvent(event); | 2401 SendTouchEvent(event); |
2408 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 2402 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
2409 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); | 2403 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); |
2410 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 2404 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
2411 } | 2405 } |
2412 | 2406 |
2413 // Tests that touch points states are correct in TouchMove events. | 2407 // Tests that touch points states are correct in TouchMove events. |
2414 TEST_F(TouchEventQueueTest, PointerStatesInTouchMove) { | 2408 TEST_F(LegacyTouchEventQueueTest, PointerStatesInTouchMove) { |
2415 PressTouchPoint(1, 1); | 2409 PressTouchPoint(1, 1); |
2416 PressTouchPoint(2, 2); | 2410 PressTouchPoint(2, 2); |
2417 PressTouchPoint(3, 3); | 2411 PressTouchPoint(3, 3); |
2418 PressTouchPoint(4, 4); | 2412 PressTouchPoint(4, 4); |
2419 EXPECT_EQ(4U, queued_event_count()); | 2413 EXPECT_EQ(4U, queued_event_count()); |
2420 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 2414 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
2421 | 2415 |
2422 // Receive ACK for the first three touch-events. | 2416 // Receive ACK for the first three touch-events. |
2423 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); | 2417 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); |
2424 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); | 2418 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2461 const WebTouchEvent& event3 = sent_event(); | 2455 const WebTouchEvent& event3 = sent_event(); |
2462 EXPECT_EQ(WebInputEvent::TouchMove, event3.type()); | 2456 EXPECT_EQ(WebInputEvent::TouchMove, event3.type()); |
2463 EXPECT_EQ(WebTouchPoint::StateStationary, event3.touches[0].state); | 2457 EXPECT_EQ(WebTouchPoint::StateStationary, event3.touches[0].state); |
2464 EXPECT_EQ(WebTouchPoint::StateStationary, event3.touches[1].state); | 2458 EXPECT_EQ(WebTouchPoint::StateStationary, event3.touches[1].state); |
2465 EXPECT_EQ(WebTouchPoint::StateStationary, event3.touches[2].state); | 2459 EXPECT_EQ(WebTouchPoint::StateStationary, event3.touches[2].state); |
2466 EXPECT_EQ(WebTouchPoint::StateMoved, event3.touches[3].state); | 2460 EXPECT_EQ(WebTouchPoint::StateMoved, event3.touches[3].state); |
2467 } | 2461 } |
2468 | 2462 |
2469 // Tests that touch point state is correct in TouchMove events | 2463 // Tests that touch point state is correct in TouchMove events |
2470 // when point properties other than position changed. | 2464 // when point properties other than position changed. |
2471 TEST_F(TouchEventQueueTest, PointerStatesWhenOtherThanPositionChanged) { | 2465 TEST_F(LegacyTouchEventQueueTest, PointerStatesWhenOtherThanPositionChanged) { |
2472 PressTouchPoint(1, 1); | 2466 PressTouchPoint(1, 1); |
2473 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); | 2467 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); |
2474 | 2468 |
2475 // Default initial radiusX/Y is (1.f, 1.f). | 2469 // Default initial radiusX/Y is (1.f, 1.f). |
2476 // Default initial rotationAngle is 1.f. | 2470 // Default initial rotationAngle is 1.f. |
2477 // Default initial force is 1.f. | 2471 // Default initial force is 1.f. |
2478 | 2472 |
2479 // Change touch point radius only. | 2473 // Change touch point radius only. |
2480 ChangeTouchPointRadius(0, 1.5f, 1.f); | 2474 ChangeTouchPointRadius(0, 1.5f, 1.f); |
2481 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); | 2475 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); |
(...skipping 20 matching lines...) Expand all Loading... |
2502 const WebTouchEvent& event3 = sent_event(); | 2496 const WebTouchEvent& event3 = sent_event(); |
2503 EXPECT_EQ(WebInputEvent::TouchMove, event3.type()); | 2497 EXPECT_EQ(WebInputEvent::TouchMove, event3.type()); |
2504 EXPECT_EQ(WebTouchPoint::StateMoved, event3.touches[0].state); | 2498 EXPECT_EQ(WebTouchPoint::StateMoved, event3.touches[0].state); |
2505 | 2499 |
2506 EXPECT_EQ(0U, queued_event_count()); | 2500 EXPECT_EQ(0U, queued_event_count()); |
2507 EXPECT_EQ(4U, GetAndResetSentEventCount()); | 2501 EXPECT_EQ(4U, GetAndResetSentEventCount()); |
2508 EXPECT_EQ(4U, GetAndResetAckedEventCount()); | 2502 EXPECT_EQ(4U, GetAndResetAckedEventCount()); |
2509 } | 2503 } |
2510 | 2504 |
2511 // Tests that TouchMoves are filtered when none of the points are changed. | 2505 // Tests that TouchMoves are filtered when none of the points are changed. |
2512 TEST_F(TouchEventQueueTest, FilterTouchMovesWhenNoPointerChanged) { | 2506 TEST_F(LegacyTouchEventQueueTest, FilterTouchMovesWhenNoPointerChanged) { |
2513 PressTouchPoint(1, 1); | 2507 PressTouchPoint(1, 1); |
2514 PressTouchPoint(2, 2); | 2508 PressTouchPoint(2, 2); |
2515 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); | 2509 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); |
2516 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); | 2510 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); |
2517 EXPECT_EQ(0U, queued_event_count()); | 2511 EXPECT_EQ(0U, queued_event_count()); |
2518 EXPECT_EQ(2U, GetAndResetSentEventCount()); | 2512 EXPECT_EQ(2U, GetAndResetSentEventCount()); |
2519 EXPECT_EQ(2U, GetAndResetAckedEventCount()); | 2513 EXPECT_EQ(2U, GetAndResetAckedEventCount()); |
2520 | 2514 |
2521 // Move 1st touch point. | 2515 // Move 1st touch point. |
2522 MoveTouchPoint(0, 10, 10); | 2516 MoveTouchPoint(0, 10, 10); |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2555 // TouchMove should be allowed and test for touches state. | 2549 // TouchMove should be allowed and test for touches state. |
2556 const WebTouchEvent& event2 = sent_event(); | 2550 const WebTouchEvent& event2 = sent_event(); |
2557 EXPECT_EQ(WebInputEvent::TouchMove, event2.type()); | 2551 EXPECT_EQ(WebInputEvent::TouchMove, event2.type()); |
2558 EXPECT_EQ(WebTouchPoint::StateStationary, event2.touches[0].state); | 2552 EXPECT_EQ(WebTouchPoint::StateStationary, event2.touches[0].state); |
2559 EXPECT_EQ(WebTouchPoint::StateMoved, event2.touches[1].state); | 2553 EXPECT_EQ(WebTouchPoint::StateMoved, event2.touches[1].state); |
2560 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 2554 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
2561 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 2555 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
2562 } | 2556 } |
2563 | 2557 |
2564 // Tests that touch-scroll-notification is not pushed into an empty queue. | 2558 // Tests that touch-scroll-notification is not pushed into an empty queue. |
2565 TEST_F(TouchEventQueueTest, TouchScrollNotificationOrder_EmptyQueue) { | 2559 TEST_F(LegacyTouchEventQueueTest, TouchScrollNotificationOrder_EmptyQueue) { |
2566 PrependTouchScrollNotification(); | 2560 PrependTouchScrollNotification(); |
2567 | 2561 |
2568 EXPECT_EQ(0U, GetAndResetAckedEventCount()); | 2562 EXPECT_EQ(0U, GetAndResetAckedEventCount()); |
2569 EXPECT_EQ(0U, queued_event_count()); | 2563 EXPECT_EQ(0U, queued_event_count()); |
2570 EXPECT_EQ(0U, GetAndResetSentEventCount()); | 2564 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
2571 } | 2565 } |
2572 | 2566 |
2573 // Tests touch-scroll-notification firing order when the event is placed at the | 2567 // Tests touch-scroll-notification firing order when the event is placed at the |
2574 // end of touch queue because of a pending ack for the head of the queue. | 2568 // end of touch queue because of a pending ack for the head of the queue. |
2575 TEST_F(TouchEventQueueTest, TouchScrollNotificationOrder_EndOfQueue) { | 2569 TEST_F(LegacyTouchEventQueueTest, TouchScrollNotificationOrder_EndOfQueue) { |
2576 PressTouchPoint(1, 1); | 2570 PressTouchPoint(1, 1); |
2577 | 2571 |
2578 EXPECT_EQ(0U, GetAndResetAckedEventCount()); | 2572 EXPECT_EQ(0U, GetAndResetAckedEventCount()); |
2579 EXPECT_EQ(1U, queued_event_count()); | 2573 EXPECT_EQ(1U, queued_event_count()); |
2580 | 2574 |
2581 // Send the touch-scroll-notification when 3 events are in the queue. | 2575 // Send the touch-scroll-notification when 3 events are in the queue. |
2582 PrependTouchScrollNotification(); | 2576 PrependTouchScrollNotification(); |
2583 | 2577 |
2584 EXPECT_EQ(0U, GetAndResetAckedEventCount()); | 2578 EXPECT_EQ(0U, GetAndResetAckedEventCount()); |
2585 EXPECT_EQ(2U, queued_event_count()); | 2579 EXPECT_EQ(2U, queued_event_count()); |
(...skipping 11 matching lines...) Expand all Loading... |
2597 EXPECT_EQ(0U, GetAndResetAckedEventCount()); | 2591 EXPECT_EQ(0U, GetAndResetAckedEventCount()); |
2598 EXPECT_EQ(0U, queued_event_count()); | 2592 EXPECT_EQ(0U, queued_event_count()); |
2599 | 2593 |
2600 EXPECT_EQ(WebInputEvent::TouchStart, all_sent_events()[0].type()); | 2594 EXPECT_EQ(WebInputEvent::TouchStart, all_sent_events()[0].type()); |
2601 EXPECT_EQ(WebInputEvent::TouchScrollStarted, all_sent_events()[1].type()); | 2595 EXPECT_EQ(WebInputEvent::TouchScrollStarted, all_sent_events()[1].type()); |
2602 EXPECT_EQ(2U, GetAndResetSentEventCount()); | 2596 EXPECT_EQ(2U, GetAndResetSentEventCount()); |
2603 } | 2597 } |
2604 | 2598 |
2605 // Tests touch-scroll-notification firing order when the event is placed in the | 2599 // Tests touch-scroll-notification firing order when the event is placed in the |
2606 // 2nd position in the touch queue between two events. | 2600 // 2nd position in the touch queue between two events. |
2607 TEST_F(TouchEventQueueTest, TouchScrollNotificationOrder_SecondPosition) { | 2601 TEST_F(LegacyTouchEventQueueTest, TouchScrollNotificationOrder_SecondPosition) { |
2608 PressTouchPoint(1, 1); | 2602 PressTouchPoint(1, 1); |
2609 MoveTouchPoint(0, 5, 5); | 2603 MoveTouchPoint(0, 5, 5); |
2610 ReleaseTouchPoint(0); | 2604 ReleaseTouchPoint(0); |
2611 | 2605 |
2612 EXPECT_EQ(0U, GetAndResetAckedEventCount()); | 2606 EXPECT_EQ(0U, GetAndResetAckedEventCount()); |
2613 EXPECT_EQ(3U, queued_event_count()); | 2607 EXPECT_EQ(3U, queued_event_count()); |
2614 | 2608 |
2615 // Send the touch-scroll-notification when 3 events are in the queue. | 2609 // Send the touch-scroll-notification when 3 events are in the queue. |
2616 PrependTouchScrollNotification(); | 2610 PrependTouchScrollNotification(); |
2617 | 2611 |
(...skipping 29 matching lines...) Expand all Loading... |
2647 | 2641 |
2648 EXPECT_EQ(WebInputEvent::TouchStart, all_sent_events()[0].type()); | 2642 EXPECT_EQ(WebInputEvent::TouchStart, all_sent_events()[0].type()); |
2649 EXPECT_EQ(WebInputEvent::TouchScrollStarted, all_sent_events()[1].type()); | 2643 EXPECT_EQ(WebInputEvent::TouchScrollStarted, all_sent_events()[1].type()); |
2650 EXPECT_EQ(WebInputEvent::TouchMove, all_sent_events()[2].type()); | 2644 EXPECT_EQ(WebInputEvent::TouchMove, all_sent_events()[2].type()); |
2651 EXPECT_EQ(WebInputEvent::TouchEnd, all_sent_events()[3].type()); | 2645 EXPECT_EQ(WebInputEvent::TouchEnd, all_sent_events()[3].type()); |
2652 EXPECT_EQ(4U, GetAndResetSentEventCount()); | 2646 EXPECT_EQ(4U, GetAndResetSentEventCount()); |
2653 } | 2647 } |
2654 | 2648 |
2655 // Tests that if touchStartOrFirstTouchMove is correctly set up for touch | 2649 // Tests that if touchStartOrFirstTouchMove is correctly set up for touch |
2656 // events. | 2650 // events. |
2657 TEST_F(TouchEventQueueTest, TouchStartOrFirstTouchMove) { | 2651 TEST_F(LegacyTouchEventQueueTest, TouchStartOrFirstTouchMove) { |
2658 PressTouchPoint(1, 1); | 2652 PressTouchPoint(1, 1); |
2659 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); | 2653 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); |
2660 EXPECT_EQ(WebInputEvent::TouchStart, sent_event().type()); | 2654 EXPECT_EQ(WebInputEvent::TouchStart, sent_event().type()); |
2661 EXPECT_TRUE(sent_event().touchStartOrFirstTouchMove); | 2655 EXPECT_TRUE(sent_event().touchStartOrFirstTouchMove); |
2662 | 2656 |
2663 MoveTouchPoint(0, 5, 5); | 2657 MoveTouchPoint(0, 5, 5); |
2664 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); | 2658 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); |
2665 EXPECT_EQ(WebInputEvent::TouchMove, sent_event().type()); | 2659 EXPECT_EQ(WebInputEvent::TouchMove, sent_event().type()); |
2666 EXPECT_TRUE(sent_event().touchStartOrFirstTouchMove); | 2660 EXPECT_TRUE(sent_event().touchStartOrFirstTouchMove); |
2667 | 2661 |
2668 MoveTouchPoint(0, 15, 15); | 2662 MoveTouchPoint(0, 15, 15); |
2669 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); | 2663 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); |
2670 EXPECT_EQ(WebInputEvent::TouchMove, sent_event().type()); | 2664 EXPECT_EQ(WebInputEvent::TouchMove, sent_event().type()); |
2671 EXPECT_FALSE(sent_event().touchStartOrFirstTouchMove); | 2665 EXPECT_FALSE(sent_event().touchStartOrFirstTouchMove); |
2672 | 2666 |
2673 ReleaseTouchPoint(0); | 2667 ReleaseTouchPoint(0); |
2674 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); | 2668 SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); |
2675 EXPECT_EQ(WebInputEvent::TouchEnd, sent_event().type()); | 2669 EXPECT_EQ(WebInputEvent::TouchEnd, sent_event().type()); |
2676 EXPECT_FALSE(sent_event().touchStartOrFirstTouchMove); | 2670 EXPECT_FALSE(sent_event().touchStartOrFirstTouchMove); |
2677 } | 2671 } |
2678 | 2672 |
2679 } // namespace content | 2673 } // namespace content |
OLD | NEW |