OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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/mouse_wheel_event_queue.h" | 5 #include "content/browser/renderer_host/input/mouse_wheel_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> |
(...skipping 279 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
290 EXPECT_TRUE(event_in_flight()); | 290 EXPECT_TRUE(event_in_flight()); |
291 EXPECT_EQ(0U, GetAndResetSentEventCount()); | 291 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
292 | 292 |
293 // Receive an ACK for the mouse wheel event and release the next | 293 // Receive an ACK for the mouse wheel event and release the next |
294 // mouse wheel event. | 294 // mouse wheel event. |
295 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 295 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
296 EXPECT_EQ(0U, queued_event_count()); | 296 EXPECT_EQ(0U, queued_event_count()); |
297 EXPECT_TRUE(event_in_flight()); | 297 EXPECT_TRUE(event_in_flight()); |
298 EXPECT_EQ(WebInputEvent::MouseWheel, acked_event().type()); | 298 EXPECT_EQ(WebInputEvent::MouseWheel, acked_event().type()); |
299 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 299 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
300 EXPECT_EQ(3U, all_sent_events().size()); | 300 if (scroll_latching_enabled_) { |
301 EXPECT_GESTURE_SCROLL_BEGIN(sent_gesture_event(0)); | 301 EXPECT_EQ(3U, all_sent_events().size()); |
302 EXPECT_GESTURE_SCROLL_UPDATE(sent_gesture_event(1)); | 302 EXPECT_GESTURE_SCROLL_BEGIN(sent_gesture_event(0)); |
303 EXPECT_MOUSE_WHEEL(sent_input_event(2)); | 303 EXPECT_GESTURE_SCROLL_UPDATE(sent_gesture_event(1)); |
304 EXPECT_EQ(3U, GetAndResetSentEventCount()); | 304 EXPECT_MOUSE_WHEEL(sent_input_event(2)); |
| 305 EXPECT_EQ(3U, GetAndResetSentEventCount()); |
305 | 306 |
306 RunTasksAndWait(DefaultScrollEndTimeoutDelay() * 2); | 307 RunTasksAndWait(DefaultScrollEndTimeoutDelay() * 2); |
307 EXPECT_EQ(1U, all_sent_events().size()); | 308 EXPECT_EQ(1U, all_sent_events().size()); |
308 EXPECT_GESTURE_SCROLL_END(sent_gesture_event(0)); | 309 EXPECT_GESTURE_SCROLL_END(sent_gesture_event(0)); |
| 310 } else { |
| 311 EXPECT_EQ(4U, all_sent_events().size()); |
| 312 EXPECT_GESTURE_SCROLL_BEGIN(sent_gesture_event(0)); |
| 313 EXPECT_GESTURE_SCROLL_UPDATE(sent_gesture_event(1)); |
| 314 EXPECT_GESTURE_SCROLL_END(sent_gesture_event(2)); |
| 315 EXPECT_MOUSE_WHEEL(sent_input_event(3)); |
| 316 EXPECT_EQ(4U, GetAndResetSentEventCount()); |
| 317 } |
309 } | 318 } |
310 | 319 |
311 void PhaseGestureSendingTest(bool high_precision) { | 320 void PhaseGestureSendingTest(bool high_precision) { |
312 const WebGestureEvent::ScrollUnits scroll_units = | 321 const WebGestureEvent::ScrollUnits scroll_units = |
313 high_precision ? WebGestureEvent::PrecisePixels | 322 high_precision ? WebGestureEvent::PrecisePixels |
314 : WebGestureEvent::Pixels; | 323 : WebGestureEvent::Pixels; |
315 | 324 |
316 SendMouseWheelWithPhase(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX, | 325 SendMouseWheelWithPhase(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX, |
317 kWheelScrollGlobalY, 1, 1, 0, high_precision, | 326 kWheelScrollGlobalY, 1, 1, 0, high_precision, |
318 WebMouseWheelEvent::PhaseBegan, | 327 WebMouseWheelEvent::PhaseBegan, |
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
502 EXPECT_EQ(0U, queued_event_count()); | 511 EXPECT_EQ(0U, queued_event_count()); |
503 EXPECT_TRUE(event_in_flight()); | 512 EXPECT_TRUE(event_in_flight()); |
504 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 513 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
505 | 514 |
506 // Receive an ACK for the mouse wheel event. | 515 // Receive an ACK for the mouse wheel event. |
507 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 516 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
508 EXPECT_EQ(0U, queued_event_count()); | 517 EXPECT_EQ(0U, queued_event_count()); |
509 EXPECT_FALSE(event_in_flight()); | 518 EXPECT_FALSE(event_in_flight()); |
510 EXPECT_EQ(WebInputEvent::MouseWheel, acked_event().type()); | 519 EXPECT_EQ(WebInputEvent::MouseWheel, acked_event().type()); |
511 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 520 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
512 EXPECT_EQ(2U, all_sent_events().size()); | 521 if (scroll_latching_enabled_) { |
513 EXPECT_GESTURE_SCROLL_BEGIN(sent_gesture_event(0)); | 522 EXPECT_EQ(2U, all_sent_events().size()); |
514 EXPECT_GESTURE_SCROLL_UPDATE(sent_gesture_event(1)); | 523 EXPECT_GESTURE_SCROLL_BEGIN(sent_gesture_event(0)); |
515 EXPECT_EQ(2U, GetAndResetSentEventCount()); | 524 EXPECT_GESTURE_SCROLL_UPDATE(sent_gesture_event(1)); |
| 525 EXPECT_EQ(2U, GetAndResetSentEventCount()); |
| 526 } else { |
| 527 EXPECT_EQ(3U, all_sent_events().size()); |
| 528 EXPECT_GESTURE_SCROLL_BEGIN(sent_gesture_event(0)); |
| 529 EXPECT_GESTURE_SCROLL_UPDATE(sent_gesture_event(1)); |
| 530 EXPECT_GESTURE_SCROLL_END(sent_gesture_event(2)); |
| 531 EXPECT_EQ(3U, GetAndResetSentEventCount()); |
| 532 } |
516 | 533 |
517 // Ensure that a gesture scroll begin terminates the current scroll event. | 534 // Ensure that a gesture scroll begin terminates the current scroll event. |
518 SendGestureEvent(WebInputEvent::GestureScrollBegin); | 535 SendGestureEvent(WebInputEvent::GestureScrollBegin); |
519 EXPECT_EQ(1U, all_sent_events().size()); | 536 if (scroll_latching_enabled_) { |
520 EXPECT_GESTURE_SCROLL_END(sent_gesture_event(0)); | 537 EXPECT_EQ(1U, all_sent_events().size()); |
521 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 538 EXPECT_GESTURE_SCROLL_END(sent_gesture_event(0)); |
| 539 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
| 540 } else { |
| 541 // ScrollEnd has already been sent. |
| 542 EXPECT_EQ(0U, all_sent_events().size()); |
| 543 } |
522 | 544 |
523 SendMouseWheel(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX, | 545 SendMouseWheel(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX, |
524 kWheelScrollGlobalY, 1, 1, 0, false); | 546 kWheelScrollGlobalY, 1, 1, 0, false); |
525 EXPECT_EQ(0U, queued_event_count()); | 547 EXPECT_EQ(0U, queued_event_count()); |
526 EXPECT_TRUE(event_in_flight()); | 548 EXPECT_TRUE(event_in_flight()); |
527 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 549 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
528 | 550 |
529 // New mouse wheel events won't cause gestures because a scroll | 551 // New mouse wheel events won't cause gestures because a scroll |
530 // is already in progress by another device. | 552 // is already in progress by another device. |
531 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 553 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
(...skipping 11 matching lines...) Expand all Loading... |
543 EXPECT_EQ(0U, queued_event_count()); | 565 EXPECT_EQ(0U, queued_event_count()); |
544 EXPECT_TRUE(event_in_flight()); | 566 EXPECT_TRUE(event_in_flight()); |
545 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 567 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
546 | 568 |
547 // Receive an ACK for the mouse wheel event. | 569 // Receive an ACK for the mouse wheel event. |
548 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 570 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
549 EXPECT_EQ(0U, queued_event_count()); | 571 EXPECT_EQ(0U, queued_event_count()); |
550 EXPECT_FALSE(event_in_flight()); | 572 EXPECT_FALSE(event_in_flight()); |
551 EXPECT_EQ(WebInputEvent::MouseWheel, acked_event().type()); | 573 EXPECT_EQ(WebInputEvent::MouseWheel, acked_event().type()); |
552 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 574 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
553 EXPECT_EQ(2U, all_sent_events().size()); | 575 if (scroll_latching_enabled_) { |
554 EXPECT_GESTURE_SCROLL_BEGIN(sent_gesture_event(0)); | 576 EXPECT_EQ(2U, all_sent_events().size()); |
555 EXPECT_GESTURE_SCROLL_UPDATE(sent_gesture_event(1)); | 577 EXPECT_GESTURE_SCROLL_BEGIN(sent_gesture_event(0)); |
556 EXPECT_EQ(2U, GetAndResetSentEventCount()); | 578 EXPECT_GESTURE_SCROLL_UPDATE(sent_gesture_event(1)); |
| 579 EXPECT_EQ(2U, GetAndResetSentEventCount()); |
| 580 } else { |
| 581 EXPECT_EQ(3U, all_sent_events().size()); |
| 582 EXPECT_GESTURE_SCROLL_BEGIN(sent_gesture_event(0)); |
| 583 EXPECT_GESTURE_SCROLL_UPDATE(sent_gesture_event(1)); |
| 584 EXPECT_GESTURE_SCROLL_END(sent_gesture_event(2)); |
| 585 EXPECT_EQ(3U, GetAndResetSentEventCount()); |
| 586 } |
557 } | 587 } |
558 | 588 |
559 TEST_P(MouseWheelEventQueueTest, GestureRailScrolling) { | 589 TEST_P(MouseWheelEventQueueTest, GestureRailScrolling) { |
560 const WebGestureEvent::ScrollUnits scroll_units = WebGestureEvent::Pixels; | 590 const WebGestureEvent::ScrollUnits scroll_units = WebGestureEvent::Pixels; |
561 | 591 |
562 SendMouseWheel(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX, | 592 SendMouseWheel(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX, |
563 kWheelScrollGlobalY, 1, 1, 0, false, | 593 kWheelScrollGlobalY, 1, 1, 0, false, |
564 WebInputEvent::RailsModeHorizontal); | 594 WebInputEvent::RailsModeHorizontal); |
565 EXPECT_EQ(0U, queued_event_count()); | 595 EXPECT_EQ(0U, queued_event_count()); |
566 EXPECT_TRUE(event_in_flight()); | 596 EXPECT_TRUE(event_in_flight()); |
567 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 597 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
568 | 598 |
569 // Receive an ACK for the mouse wheel event. | 599 // Receive an ACK for the mouse wheel event. |
570 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 600 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
571 EXPECT_EQ(0U, queued_event_count()); | 601 EXPECT_EQ(0U, queued_event_count()); |
572 EXPECT_FALSE(event_in_flight()); | 602 EXPECT_FALSE(event_in_flight()); |
573 EXPECT_EQ(WebInputEvent::MouseWheel, acked_event().type()); | 603 EXPECT_EQ(WebInputEvent::MouseWheel, acked_event().type()); |
574 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 604 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
575 EXPECT_EQ(2U, all_sent_events().size()); | 605 if (scroll_latching_enabled_) { |
576 EXPECT_GESTURE_SCROLL_BEGIN(sent_gesture_event(0)); | 606 EXPECT_EQ(2U, all_sent_events().size()); |
577 EXPECT_GESTURE_SCROLL_UPDATE(sent_gesture_event(1)); | 607 EXPECT_GESTURE_SCROLL_BEGIN(sent_gesture_event(0)); |
578 EXPECT_EQ(1U, sent_gesture_event(1)->data.scrollUpdate.deltaX); | 608 EXPECT_GESTURE_SCROLL_UPDATE(sent_gesture_event(1)); |
579 EXPECT_EQ(0U, sent_gesture_event(1)->data.scrollUpdate.deltaY); | 609 EXPECT_EQ(1U, sent_gesture_event(1)->data.scrollUpdate.deltaX); |
580 EXPECT_EQ(2U, GetAndResetSentEventCount()); | 610 EXPECT_EQ(0U, sent_gesture_event(1)->data.scrollUpdate.deltaY); |
581 | 611 EXPECT_EQ(2U, GetAndResetSentEventCount()); |
582 RunTasksAndWait(DefaultScrollEndTimeoutDelay() * 2); | 612 RunTasksAndWait(DefaultScrollEndTimeoutDelay() * 2); |
583 EXPECT_EQ(1U, all_sent_events().size()); | 613 EXPECT_EQ(1U, all_sent_events().size()); |
584 EXPECT_GESTURE_SCROLL_END(sent_gesture_event(0)); | 614 EXPECT_GESTURE_SCROLL_END(sent_gesture_event(0)); |
585 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 615 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
| 616 } else { |
| 617 EXPECT_EQ(3U, all_sent_events().size()); |
| 618 EXPECT_GESTURE_SCROLL_BEGIN(sent_gesture_event(0)); |
| 619 EXPECT_GESTURE_SCROLL_UPDATE(sent_gesture_event(1)); |
| 620 EXPECT_GESTURE_SCROLL_END(sent_gesture_event(2)); |
| 621 EXPECT_EQ(1U, sent_gesture_event(1)->data.scrollUpdate.deltaX); |
| 622 EXPECT_EQ(0U, sent_gesture_event(1)->data.scrollUpdate.deltaY); |
| 623 EXPECT_EQ(3U, GetAndResetSentEventCount()); |
| 624 } |
586 | 625 |
587 SendMouseWheel(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX, | 626 SendMouseWheel(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX, |
588 kWheelScrollGlobalY, 1, 1, 0, false, | 627 kWheelScrollGlobalY, 1, 1, 0, false, |
589 WebInputEvent::RailsModeVertical); | 628 WebInputEvent::RailsModeVertical); |
590 EXPECT_EQ(0U, queued_event_count()); | 629 EXPECT_EQ(0U, queued_event_count()); |
591 EXPECT_TRUE(event_in_flight()); | 630 EXPECT_TRUE(event_in_flight()); |
592 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 631 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
593 | 632 |
594 // Receive an ACK for the mouse wheel event. | 633 // Receive an ACK for the mouse wheel event. |
595 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 634 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
596 EXPECT_EQ(0U, queued_event_count()); | 635 EXPECT_EQ(0U, queued_event_count()); |
597 EXPECT_FALSE(event_in_flight()); | 636 EXPECT_FALSE(event_in_flight()); |
598 EXPECT_EQ(WebInputEvent::MouseWheel, acked_event().type()); | 637 EXPECT_EQ(WebInputEvent::MouseWheel, acked_event().type()); |
599 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 638 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
600 EXPECT_EQ(2U, all_sent_events().size()); | 639 if (scroll_latching_enabled_) { |
601 EXPECT_GESTURE_SCROLL_BEGIN(sent_gesture_event(0)); | 640 EXPECT_EQ(2U, all_sent_events().size()); |
602 EXPECT_GESTURE_SCROLL_UPDATE(sent_gesture_event(1)); | 641 EXPECT_GESTURE_SCROLL_BEGIN(sent_gesture_event(0)); |
| 642 EXPECT_GESTURE_SCROLL_UPDATE(sent_gesture_event(1)); |
| 643 } else { |
| 644 EXPECT_EQ(3U, all_sent_events().size()); |
| 645 EXPECT_GESTURE_SCROLL_BEGIN(sent_gesture_event(0)); |
| 646 EXPECT_GESTURE_SCROLL_UPDATE(sent_gesture_event(1)); |
| 647 EXPECT_GESTURE_SCROLL_END(sent_gesture_event(2)); |
| 648 } |
603 EXPECT_EQ(0U, sent_gesture_event(1)->data.scrollUpdate.deltaX); | 649 EXPECT_EQ(0U, sent_gesture_event(1)->data.scrollUpdate.deltaX); |
604 EXPECT_EQ(1U, sent_gesture_event(1)->data.scrollUpdate.deltaY); | 650 EXPECT_EQ(1U, sent_gesture_event(1)->data.scrollUpdate.deltaY); |
605 EXPECT_EQ(2U, GetAndResetSentEventCount()); | 651 if (scroll_latching_enabled_) |
| 652 EXPECT_EQ(2U, GetAndResetSentEventCount()); |
| 653 else |
| 654 EXPECT_EQ(3U, GetAndResetSentEventCount()); |
606 } | 655 } |
607 | 656 |
608 TEST_P(MouseWheelEventQueueTest, WheelScrollLatching) { | 657 TEST_P(MouseWheelEventQueueTest, WheelScrollLatching) { |
| 658 if (!scroll_latching_enabled_) |
| 659 return; |
| 660 |
609 const WebGestureEvent::ScrollUnits scroll_units = WebGestureEvent::Pixels; | 661 const WebGestureEvent::ScrollUnits scroll_units = WebGestureEvent::Pixels; |
610 SendMouseWheel(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX, | 662 SendMouseWheel(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX, |
611 kWheelScrollGlobalY, 1, 1, 0, false, | 663 kWheelScrollGlobalY, 1, 1, 0, false, |
612 WebInputEvent::RailsModeVertical); | 664 WebInputEvent::RailsModeVertical); |
613 EXPECT_EQ(0U, queued_event_count()); | 665 EXPECT_EQ(0U, queued_event_count()); |
614 EXPECT_TRUE(event_in_flight()); | 666 EXPECT_TRUE(event_in_flight()); |
615 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 667 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
616 | 668 |
617 // Receive an ACK for the mouse wheel event. | 669 // Receive an ACK for the mouse wheel event. |
618 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 670 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
619 EXPECT_EQ(0U, queued_event_count()); | 671 EXPECT_EQ(0U, queued_event_count()); |
620 EXPECT_FALSE(event_in_flight()); | 672 EXPECT_FALSE(event_in_flight()); |
621 EXPECT_EQ(WebInputEvent::MouseWheel, acked_event().type()); | 673 EXPECT_EQ(WebInputEvent::MouseWheel, acked_event().type()); |
622 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 674 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
623 EXPECT_EQ(2U, all_sent_events().size()); | 675 EXPECT_EQ(2U, all_sent_events().size()); |
624 EXPECT_GESTURE_SCROLL_BEGIN(sent_gesture_event(0)); | 676 EXPECT_GESTURE_SCROLL_BEGIN(sent_gesture_event(0)); |
625 EXPECT_GESTURE_SCROLL_UPDATE(sent_gesture_event(1)); | 677 EXPECT_GESTURE_SCROLL_UPDATE(sent_gesture_event(1)); |
626 EXPECT_EQ(0U, sent_gesture_event(1)->data.scrollUpdate.deltaX); | 678 EXPECT_EQ(0U, sent_gesture_event(1)->data.scrollUpdate.deltaX); |
627 EXPECT_EQ(1U, sent_gesture_event(1)->data.scrollUpdate.deltaY); | 679 EXPECT_EQ(1U, sent_gesture_event(1)->data.scrollUpdate.deltaY); |
628 EXPECT_EQ(2U, GetAndResetSentEventCount()); | 680 EXPECT_EQ(2U, GetAndResetSentEventCount()); |
629 | 681 |
630 RunTasksAndWait(base::TimeDelta::FromMilliseconds(1)); | 682 RunTasksAndWait(DefaultScrollEndTimeoutDelay() / 2); |
631 if (!scroll_latching_enabled_) { | 683 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
632 EXPECT_GESTURE_SCROLL_END(sent_gesture_event(0)); | |
633 EXPECT_EQ(1U, GetAndResetSentEventCount()); | |
634 } else { | |
635 EXPECT_EQ(0U, GetAndResetSentEventCount()); | |
636 } | |
637 SendMouseWheel(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX, | 684 SendMouseWheel(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX, |
638 kWheelScrollGlobalY, 1, 1, 0, false, | 685 kWheelScrollGlobalY, 1, 1, 0, false, |
639 WebInputEvent::RailsModeVertical); | 686 WebInputEvent::RailsModeVertical); |
640 EXPECT_EQ(0U, queued_event_count()); | 687 EXPECT_EQ(0U, queued_event_count()); |
641 EXPECT_TRUE(event_in_flight()); | 688 EXPECT_TRUE(event_in_flight()); |
642 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 689 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
643 | 690 |
644 // Receive an ACK for the mouse wheel event. | 691 // Receive an ACK for the mouse wheel event. |
645 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 692 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
646 EXPECT_EQ(0U, queued_event_count()); | 693 EXPECT_EQ(0U, queued_event_count()); |
647 EXPECT_FALSE(event_in_flight()); | 694 EXPECT_FALSE(event_in_flight()); |
648 EXPECT_EQ(WebInputEvent::MouseWheel, acked_event().type()); | 695 EXPECT_EQ(WebInputEvent::MouseWheel, acked_event().type()); |
649 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 696 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
650 | 697 |
651 int updateEventIndex = -1; | 698 // Scroll latching: no new scroll begin expected. |
652 if (!scroll_latching_enabled_) { | 699 EXPECT_EQ(1U, all_sent_events().size()); |
653 EXPECT_EQ(2U, all_sent_events().size()); | 700 EXPECT_GESTURE_SCROLL_UPDATE(sent_gesture_event(0)); |
654 EXPECT_GESTURE_SCROLL_BEGIN(sent_gesture_event(0)); | 701 EXPECT_EQ(0U, sent_gesture_event(0)->data.scrollUpdate.deltaX); |
655 updateEventIndex = 1; | 702 EXPECT_EQ(1U, sent_gesture_event(0)->data.scrollUpdate.deltaY); |
656 } else { | 703 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
657 // Scroll latching: no new scroll begin expected. | |
658 EXPECT_EQ(1U, all_sent_events().size()); | |
659 updateEventIndex = 0; | |
660 } | |
661 EXPECT_GE(updateEventIndex, 0); | |
662 EXPECT_GESTURE_SCROLL_UPDATE(sent_gesture_event(updateEventIndex)); | |
663 EXPECT_EQ(0U, sent_gesture_event(updateEventIndex)->data.scrollUpdate.deltaX); | |
664 EXPECT_EQ(1U, sent_gesture_event(updateEventIndex)->data.scrollUpdate.deltaY); | |
665 EXPECT_EQ(static_cast<size_t>(updateEventIndex + 1), | |
666 GetAndResetSentEventCount()); | |
667 } | 704 } |
668 | 705 |
669 INSTANTIATE_TEST_CASE_P(MouseWheelEventQueueTests, | 706 INSTANTIATE_TEST_CASE_P(MouseWheelEventQueueTests, |
670 MouseWheelEventQueueTest, | 707 MouseWheelEventQueueTest, |
671 testing::Bool()); | 708 testing::Bool()); |
672 | 709 |
673 } // namespace content | 710 } // namespace content |
OLD | NEW |