Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(321)

Side by Side Diff: ui/events/blink/input_handler_proxy_unittest.cc

Issue 2569273002: Add constructors to WebInputEvents and setters so we can work at cleaning up these public structs. (Closed)
Patch Set: Fix mouse up event sender not modifying modifiers Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 "ui/events/blink/input_handler_proxy.h" 5 #include "ui/events/blink/input_handler_proxy.h"
6 6
7 #include <memory> 7 #include <memory>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/macros.h" 10 #include "base/macros.h"
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
87 MATCHER_P(WheelEventsMatch, expected, "") { 87 MATCHER_P(WheelEventsMatch, expected, "") {
88 return WheelEventsMatch(arg, expected); 88 return WheelEventsMatch(arg, expected);
89 } 89 }
90 90
91 WebGestureEvent CreateFling(base::TimeTicks timestamp, 91 WebGestureEvent CreateFling(base::TimeTicks timestamp,
92 WebGestureDevice source_device, 92 WebGestureDevice source_device,
93 WebFloatPoint velocity, 93 WebFloatPoint velocity,
94 WebPoint point, 94 WebPoint point,
95 WebPoint global_point, 95 WebPoint global_point,
96 int modifiers) { 96 int modifiers) {
97 WebGestureEvent fling; 97 WebGestureEvent fling(WebInputEvent::GestureFlingStart, modifiers,
98 fling.type = WebInputEvent::GestureFlingStart; 98 (timestamp - base::TimeTicks()).InSecondsF());
99 fling.sourceDevice = source_device; 99 fling.sourceDevice = source_device;
100 fling.timeStampSeconds = (timestamp - base::TimeTicks()).InSecondsF();
101 fling.data.flingStart.velocityX = velocity.x; 100 fling.data.flingStart.velocityX = velocity.x;
102 fling.data.flingStart.velocityY = velocity.y; 101 fling.data.flingStart.velocityY = velocity.y;
103 fling.x = point.x; 102 fling.x = point.x;
104 fling.y = point.y; 103 fling.y = point.y;
105 fling.globalX = global_point.x; 104 fling.globalX = global_point.x;
106 fling.globalY = global_point.y; 105 fling.globalY = global_point.y;
107 fling.modifiers = modifiers;
108 return fling; 106 return fling;
109 } 107 }
110 108
111 WebGestureEvent CreateFling(WebGestureDevice source_device, 109 WebGestureEvent CreateFling(WebGestureDevice source_device,
112 WebFloatPoint velocity, 110 WebFloatPoint velocity,
113 WebPoint point, 111 WebPoint point,
114 WebPoint global_point, 112 WebPoint global_point,
115 int modifiers) { 113 int modifiers) {
116 return CreateFling(base::TimeTicks(), 114 return CreateFling(base::TimeTicks(),
117 source_device, 115 source_device,
118 velocity, 116 velocity,
119 point, 117 point,
120 global_point, 118 global_point,
121 modifiers); 119 modifiers);
122 } 120 }
123 121
124 ScopedWebInputEvent CreateGestureScrollOrPinch(WebInputEvent::Type type, 122 ScopedWebInputEvent CreateGestureScrollOrPinch(WebInputEvent::Type type,
125 float deltaYOrScale = 0, 123 float deltaYOrScale = 0,
126 int x = 0, 124 int x = 0,
127 int y = 0) { 125 int y = 0) {
128 WebGestureEvent gesture; 126 WebGestureEvent gesture(type, WebInputEvent::NoModifiers,
127 WebInputEvent::TimeStampForTesting);
129 gesture.sourceDevice = blink::WebGestureDeviceTouchpad; 128 gesture.sourceDevice = blink::WebGestureDeviceTouchpad;
130 gesture.type = type;
131 if (type == WebInputEvent::GestureScrollUpdate) { 129 if (type == WebInputEvent::GestureScrollUpdate) {
132 gesture.data.scrollUpdate.deltaY = deltaYOrScale; 130 gesture.data.scrollUpdate.deltaY = deltaYOrScale;
133 } else if (type == WebInputEvent::GesturePinchUpdate) { 131 } else if (type == WebInputEvent::GesturePinchUpdate) {
134 gesture.data.pinchUpdate.scale = deltaYOrScale; 132 gesture.data.pinchUpdate.scale = deltaYOrScale;
135 gesture.x = x; 133 gesture.x = x;
136 gesture.y = y; 134 gesture.y = y;
137 } 135 }
138 return WebInputEventTraits::Clone(gesture); 136 return WebInputEventTraits::Clone(gesture);
139 } 137 }
140 138
(...skipping 275 matching lines...) Expand 10 before | Expand all | Expand 10 after
416 414
417 void StartFling(base::TimeTicks timestamp, 415 void StartFling(base::TimeTicks timestamp,
418 WebGestureDevice source_device, 416 WebGestureDevice source_device,
419 WebFloatPoint velocity, 417 WebFloatPoint velocity,
420 WebPoint position) { 418 WebPoint position) {
421 expected_disposition_ = InputHandlerProxy::DID_HANDLE; 419 expected_disposition_ = InputHandlerProxy::DID_HANDLE;
422 VERIFY_AND_RESET_MOCKS(); 420 VERIFY_AND_RESET_MOCKS();
423 421
424 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) 422 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_))
425 .WillOnce(testing::Return(kImplThreadScrollState)); 423 .WillOnce(testing::Return(kImplThreadScrollState));
426 gesture_.type = WebInputEvent::GestureScrollBegin; 424 gesture_.setType(WebInputEvent::GestureScrollBegin);
427 gesture_.sourceDevice = source_device; 425 gesture_.sourceDevice = source_device;
428 EXPECT_EQ(expected_disposition_, 426 EXPECT_EQ(expected_disposition_,
429 input_handler_->HandleInputEvent(gesture_)); 427 input_handler_->HandleInputEvent(gesture_));
430 428
431 VERIFY_AND_RESET_MOCKS(); 429 VERIFY_AND_RESET_MOCKS();
432 430
433 EXPECT_CALL(mock_input_handler_, FlingScrollBegin()) 431 EXPECT_CALL(mock_input_handler_, FlingScrollBegin())
434 .WillOnce(testing::Return(kImplThreadScrollState)); 432 .WillOnce(testing::Return(kImplThreadScrollState));
435 EXPECT_SET_NEEDS_ANIMATE_INPUT(1); 433 EXPECT_SET_NEEDS_ANIMATE_INPUT(1);
436 434
437 gesture_ = 435 gesture_ =
438 CreateFling(timestamp, source_device, velocity, position, position, 0); 436 CreateFling(timestamp, source_device, velocity, position, position, 0);
439 EXPECT_EQ(expected_disposition_, 437 EXPECT_EQ(expected_disposition_,
440 input_handler_->HandleInputEvent(gesture_)); 438 input_handler_->HandleInputEvent(gesture_));
441 439
442 VERIFY_AND_RESET_MOCKS(); 440 VERIFY_AND_RESET_MOCKS();
443 } 441 }
444 442
445 void CancelFling(base::TimeTicks timestamp) { 443 void CancelFling(base::TimeTicks timestamp) {
446 gesture_.timeStampSeconds = InSecondsF(timestamp); 444 gesture_.setTimeStampSeconds(InSecondsF(timestamp));
447 gesture_.type = WebInputEvent::GestureFlingCancel; 445 gesture_.setType(WebInputEvent::GestureFlingCancel);
448 EXPECT_EQ(expected_disposition_, 446 EXPECT_EQ(expected_disposition_,
449 input_handler_->HandleInputEvent(gesture_)); 447 input_handler_->HandleInputEvent(gesture_));
450 448
451 VERIFY_AND_RESET_MOCKS(); 449 VERIFY_AND_RESET_MOCKS();
452 } 450 }
453 451
454 void SetSmoothScrollEnabled(bool value) { 452 void SetSmoothScrollEnabled(bool value) {
455 input_handler_->smooth_scroll_enabled_ = value; 453 input_handler_->smooth_scroll_enabled_ = value;
456 } 454 }
457 455
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
529 527
530 base::WeakPtrFactory<InputHandlerProxyEventQueueTest> weak_ptr_factory_; 528 base::WeakPtrFactory<InputHandlerProxyEventQueueTest> weak_ptr_factory_;
531 }; 529 };
532 530
533 TEST_P(InputHandlerProxyTest, MouseWheelNoListener) { 531 TEST_P(InputHandlerProxyTest, MouseWheelNoListener) {
534 expected_disposition_ = InputHandlerProxy::DROP_EVENT; 532 expected_disposition_ = InputHandlerProxy::DROP_EVENT;
535 EXPECT_CALL(mock_input_handler_, 533 EXPECT_CALL(mock_input_handler_,
536 GetEventListenerProperties(cc::EventListenerClass::kMouseWheel)) 534 GetEventListenerProperties(cc::EventListenerClass::kMouseWheel))
537 .WillOnce(testing::Return(cc::EventListenerProperties::kNone)); 535 .WillOnce(testing::Return(cc::EventListenerProperties::kNone));
538 536
539 WebMouseWheelEvent wheel; 537 WebMouseWheelEvent wheel(WebInputEvent::MouseWheel, WebInputEvent::ControlKey,
540 wheel.type = WebInputEvent::MouseWheel; 538 WebInputEvent::TimeStampForTesting);
541 wheel.modifiers = WebInputEvent::ControlKey;
542 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(wheel)); 539 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(wheel));
543 VERIFY_AND_RESET_MOCKS(); 540 VERIFY_AND_RESET_MOCKS();
544 } 541 }
545 542
546 TEST_P(InputHandlerProxyTest, MouseWheelPassiveListener) { 543 TEST_P(InputHandlerProxyTest, MouseWheelPassiveListener) {
547 expected_disposition_ = InputHandlerProxy::DID_HANDLE_NON_BLOCKING; 544 expected_disposition_ = InputHandlerProxy::DID_HANDLE_NON_BLOCKING;
548 EXPECT_CALL(mock_input_handler_, 545 EXPECT_CALL(mock_input_handler_,
549 GetEventListenerProperties(cc::EventListenerClass::kMouseWheel)) 546 GetEventListenerProperties(cc::EventListenerClass::kMouseWheel))
550 .WillOnce(testing::Return(cc::EventListenerProperties::kPassive)); 547 .WillOnce(testing::Return(cc::EventListenerProperties::kPassive));
551 548
552 WebMouseWheelEvent wheel; 549 WebMouseWheelEvent wheel(WebInputEvent::MouseWheel, WebInputEvent::ControlKey,
553 wheel.type = WebInputEvent::MouseWheel; 550 WebInputEvent::TimeStampForTesting);
554 wheel.modifiers = WebInputEvent::ControlKey;
555 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(wheel)); 551 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(wheel));
556 VERIFY_AND_RESET_MOCKS(); 552 VERIFY_AND_RESET_MOCKS();
557 } 553 }
558 554
559 TEST_P(InputHandlerProxyTest, MouseWheelBlockingListener) { 555 TEST_P(InputHandlerProxyTest, MouseWheelBlockingListener) {
560 expected_disposition_ = InputHandlerProxy::DID_NOT_HANDLE; 556 expected_disposition_ = InputHandlerProxy::DID_NOT_HANDLE;
561 EXPECT_CALL(mock_input_handler_, 557 EXPECT_CALL(mock_input_handler_,
562 GetEventListenerProperties(cc::EventListenerClass::kMouseWheel)) 558 GetEventListenerProperties(cc::EventListenerClass::kMouseWheel))
563 .WillOnce(testing::Return(cc::EventListenerProperties::kBlocking)); 559 .WillOnce(testing::Return(cc::EventListenerProperties::kBlocking));
564 560
565 WebMouseWheelEvent wheel; 561 WebMouseWheelEvent wheel(WebInputEvent::MouseWheel, WebInputEvent::ControlKey,
566 wheel.type = WebInputEvent::MouseWheel; 562 WebInputEvent::TimeStampForTesting);
567 wheel.modifiers = WebInputEvent::ControlKey;
568 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(wheel)); 563 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(wheel));
569 VERIFY_AND_RESET_MOCKS(); 564 VERIFY_AND_RESET_MOCKS();
570 } 565 }
571 566
572 TEST_P(InputHandlerProxyTest, GestureScrollStarted) { 567 TEST_P(InputHandlerProxyTest, GestureScrollStarted) {
573 // We shouldn't send any events to the widget for this gesture. 568 // We shouldn't send any events to the widget for this gesture.
574 expected_disposition_ = InputHandlerProxy::DID_HANDLE; 569 expected_disposition_ = InputHandlerProxy::DID_HANDLE;
575 VERIFY_AND_RESET_MOCKS(); 570 VERIFY_AND_RESET_MOCKS();
576 571
577 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) 572 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_))
578 .WillOnce(testing::Return(kImplThreadScrollState)); 573 .WillOnce(testing::Return(kImplThreadScrollState));
579 574
580 gesture_.type = WebInputEvent::GestureScrollBegin; 575 gesture_.setType(WebInputEvent::GestureScrollBegin);
581 EXPECT_EQ(expected_disposition_,input_handler_->HandleInputEvent(gesture_)); 576 EXPECT_EQ(expected_disposition_,input_handler_->HandleInputEvent(gesture_));
582 577
583 // The event should not be marked as handled if scrolling is not possible. 578 // The event should not be marked as handled if scrolling is not possible.
584 expected_disposition_ = InputHandlerProxy::DROP_EVENT; 579 expected_disposition_ = InputHandlerProxy::DROP_EVENT;
585 VERIFY_AND_RESET_MOCKS(); 580 VERIFY_AND_RESET_MOCKS();
586 581
587 gesture_.type = WebInputEvent::GestureScrollUpdate; 582 gesture_.setType(WebInputEvent::GestureScrollUpdate);
588 gesture_.data.scrollUpdate.deltaY = 583 gesture_.data.scrollUpdate.deltaY =
589 -40; // -Y means scroll down - i.e. in the +Y direction. 584 -40; // -Y means scroll down - i.e. in the +Y direction.
590 EXPECT_CALL( 585 EXPECT_CALL(
591 mock_input_handler_, 586 mock_input_handler_,
592 ScrollBy(testing::Property(&cc::ScrollState::delta_y, testing::Gt(0)))) 587 ScrollBy(testing::Property(&cc::ScrollState::delta_y, testing::Gt(0))))
593 .WillOnce(testing::Return(scroll_result_did_not_scroll_)); 588 .WillOnce(testing::Return(scroll_result_did_not_scroll_));
594 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 589 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
595 590
596 // Mark the event as handled if scroll happens. 591 // Mark the event as handled if scroll happens.
597 expected_disposition_ = InputHandlerProxy::DID_HANDLE; 592 expected_disposition_ = InputHandlerProxy::DID_HANDLE;
598 VERIFY_AND_RESET_MOCKS(); 593 VERIFY_AND_RESET_MOCKS();
599 594
600 gesture_.type = WebInputEvent::GestureScrollUpdate; 595 gesture_.setType(WebInputEvent::GestureScrollUpdate);
601 gesture_.data.scrollUpdate.deltaY = 596 gesture_.data.scrollUpdate.deltaY =
602 -40; // -Y means scroll down - i.e. in the +Y direction. 597 -40; // -Y means scroll down - i.e. in the +Y direction.
603 EXPECT_CALL( 598 EXPECT_CALL(
604 mock_input_handler_, 599 mock_input_handler_,
605 ScrollBy(testing::Property(&cc::ScrollState::delta_y, testing::Gt(0)))) 600 ScrollBy(testing::Property(&cc::ScrollState::delta_y, testing::Gt(0))))
606 .WillOnce(testing::Return(scroll_result_did_scroll_)); 601 .WillOnce(testing::Return(scroll_result_did_scroll_));
607 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 602 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
608 603
609 VERIFY_AND_RESET_MOCKS(); 604 VERIFY_AND_RESET_MOCKS();
610 605
611 gesture_.type = WebInputEvent::GestureScrollEnd; 606 gesture_.setType(WebInputEvent::GestureScrollEnd);
612 gesture_.data.scrollUpdate.deltaY = 0; 607 gesture_.data.scrollUpdate.deltaY = 0;
613 EXPECT_CALL(mock_input_handler_, ScrollEnd(testing::_)); 608 EXPECT_CALL(mock_input_handler_, ScrollEnd(testing::_));
614 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 609 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
615 610
616 VERIFY_AND_RESET_MOCKS(); 611 VERIFY_AND_RESET_MOCKS();
617 } 612 }
618 613
619 TEST_P(InputHandlerProxyTest, GestureScrollOnMainThread) { 614 TEST_P(InputHandlerProxyTest, GestureScrollOnMainThread) {
620 // We should send all events to the widget for this gesture. 615 // We should send all events to the widget for this gesture.
621 expected_disposition_ = InputHandlerProxy::DID_NOT_HANDLE; 616 expected_disposition_ = InputHandlerProxy::DID_NOT_HANDLE;
622 VERIFY_AND_RESET_MOCKS(); 617 VERIFY_AND_RESET_MOCKS();
623 618
624 EXPECT_CALL(mock_input_handler_, ScrollBegin(::testing::_, ::testing::_)) 619 EXPECT_CALL(mock_input_handler_, ScrollBegin(::testing::_, ::testing::_))
625 .WillOnce(testing::Return(kMainThreadScrollState)); 620 .WillOnce(testing::Return(kMainThreadScrollState));
626 621
627 gesture_.type = WebInputEvent::GestureScrollBegin; 622 gesture_.setType(WebInputEvent::GestureScrollBegin);
628 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 623 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
629 624
630 VERIFY_AND_RESET_MOCKS(); 625 VERIFY_AND_RESET_MOCKS();
631 626
632 gesture_.type = WebInputEvent::GestureScrollUpdate; 627 gesture_.setType(WebInputEvent::GestureScrollUpdate);
633 gesture_.data.scrollUpdate.deltaY = 40; 628 gesture_.data.scrollUpdate.deltaY = 40;
634 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 629 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
635 630
636 VERIFY_AND_RESET_MOCKS(); 631 VERIFY_AND_RESET_MOCKS();
637 632
638 gesture_.type = WebInputEvent::GestureScrollEnd; 633 gesture_.setType(WebInputEvent::GestureScrollEnd);
639 gesture_.data.scrollUpdate.deltaY = 0; 634 gesture_.data.scrollUpdate.deltaY = 0;
640 EXPECT_CALL(mock_input_handler_, ScrollEnd(testing::_)) 635 EXPECT_CALL(mock_input_handler_, ScrollEnd(testing::_))
641 .WillOnce(testing::Return()); 636 .WillOnce(testing::Return());
642 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 637 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
643 638
644 VERIFY_AND_RESET_MOCKS(); 639 VERIFY_AND_RESET_MOCKS();
645 } 640 }
646 641
647 TEST_P(InputHandlerProxyTest, GestureScrollIgnored) { 642 TEST_P(InputHandlerProxyTest, GestureScrollIgnored) {
648 // We shouldn't handle the GestureScrollBegin. 643 // We shouldn't handle the GestureScrollBegin.
649 // Instead, we should get a DROP_EVENT result, indicating 644 // Instead, we should get a DROP_EVENT result, indicating
650 // that we could determine that there's nothing that could scroll or otherwise 645 // that we could determine that there's nothing that could scroll or otherwise
651 // react to this gesture sequence and thus we should drop the whole gesture 646 // react to this gesture sequence and thus we should drop the whole gesture
652 // sequence on the floor, except for the ScrollEnd. 647 // sequence on the floor, except for the ScrollEnd.
653 expected_disposition_ = InputHandlerProxy::DROP_EVENT; 648 expected_disposition_ = InputHandlerProxy::DROP_EVENT;
654 VERIFY_AND_RESET_MOCKS(); 649 VERIFY_AND_RESET_MOCKS();
655 650
656 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) 651 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_))
657 .WillOnce(testing::Return(kScrollIgnoredScrollState)); 652 .WillOnce(testing::Return(kScrollIgnoredScrollState));
658 653
659 gesture_.type = WebInputEvent::GestureScrollBegin; 654 gesture_.setType(WebInputEvent::GestureScrollBegin);
660 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 655 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
661 656
662 expected_disposition_ = InputHandlerProxy::DID_NOT_HANDLE; 657 expected_disposition_ = InputHandlerProxy::DID_NOT_HANDLE;
663 gesture_.type = WebInputEvent::GestureScrollEnd; 658 gesture_.setType(WebInputEvent::GestureScrollEnd);
664 EXPECT_CALL(mock_input_handler_, ScrollEnd(testing::_)) 659 EXPECT_CALL(mock_input_handler_, ScrollEnd(testing::_))
665 .WillOnce(testing::Return()); 660 .WillOnce(testing::Return());
666 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 661 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
667 662
668 VERIFY_AND_RESET_MOCKS(); 663 VERIFY_AND_RESET_MOCKS();
669 } 664 }
670 665
671 TEST_P(InputHandlerProxyTest, GestureScrollByPage) { 666 TEST_P(InputHandlerProxyTest, GestureScrollByPage) {
672 // We should send all events to the widget for this gesture. 667 // We should send all events to the widget for this gesture.
673 expected_disposition_ = InputHandlerProxy::DID_NOT_HANDLE; 668 expected_disposition_ = InputHandlerProxy::DID_NOT_HANDLE;
674 VERIFY_AND_RESET_MOCKS(); 669 VERIFY_AND_RESET_MOCKS();
675 670
676 gesture_.type = WebInputEvent::GestureScrollBegin; 671 gesture_.setType(WebInputEvent::GestureScrollBegin);
677 gesture_.data.scrollBegin.deltaHintUnits = WebGestureEvent::ScrollUnits::Page; 672 gesture_.data.scrollBegin.deltaHintUnits = WebGestureEvent::ScrollUnits::Page;
678 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 673 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
679 674
680 VERIFY_AND_RESET_MOCKS(); 675 VERIFY_AND_RESET_MOCKS();
681 676
682 gesture_.type = WebInputEvent::GestureScrollUpdate; 677 gesture_.setType(WebInputEvent::GestureScrollUpdate);
683 gesture_.data.scrollUpdate.deltaY = 1; 678 gesture_.data.scrollUpdate.deltaY = 1;
684 gesture_.data.scrollUpdate.deltaUnits = WebGestureEvent::ScrollUnits::Page; 679 gesture_.data.scrollUpdate.deltaUnits = WebGestureEvent::ScrollUnits::Page;
685 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 680 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
686 681
687 VERIFY_AND_RESET_MOCKS(); 682 VERIFY_AND_RESET_MOCKS();
688 683
689 gesture_.type = WebInputEvent::GestureScrollEnd; 684 gesture_.setType(WebInputEvent::GestureScrollEnd);
690 gesture_.data.scrollUpdate.deltaY = 0; 685 gesture_.data.scrollUpdate.deltaY = 0;
691 EXPECT_CALL(mock_input_handler_, ScrollEnd(testing::_)) 686 EXPECT_CALL(mock_input_handler_, ScrollEnd(testing::_))
692 .WillOnce(testing::Return()); 687 .WillOnce(testing::Return());
693 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 688 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
694 689
695 VERIFY_AND_RESET_MOCKS(); 690 VERIFY_AND_RESET_MOCKS();
696 } 691 }
697 692
698 // Mac does not smooth scroll wheel events (crbug.com/574283). 693 // Mac does not smooth scroll wheel events (crbug.com/574283).
699 #if !defined(OS_MACOSX) 694 #if !defined(OS_MACOSX)
700 TEST_P(InputHandlerProxyTest, GestureScrollByCoarsePixels) { 695 TEST_P(InputHandlerProxyTest, GestureScrollByCoarsePixels) {
701 #else 696 #else
702 TEST_P(InputHandlerProxyTest, DISABLED_GestureScrollByCoarsePixels) { 697 TEST_P(InputHandlerProxyTest, DISABLED_GestureScrollByCoarsePixels) {
703 #endif 698 #endif
704 SetSmoothScrollEnabled(true); 699 SetSmoothScrollEnabled(true);
705 expected_disposition_ = InputHandlerProxy::DID_HANDLE; 700 expected_disposition_ = InputHandlerProxy::DID_HANDLE;
706 701
707 gesture_.type = WebInputEvent::GestureScrollBegin; 702 gesture_.setType(WebInputEvent::GestureScrollBegin);
708 gesture_.data.scrollBegin.deltaHintUnits = 703 gesture_.data.scrollBegin.deltaHintUnits =
709 WebGestureEvent::ScrollUnits::Pixels; 704 WebGestureEvent::ScrollUnits::Pixels;
710 EXPECT_CALL(mock_input_handler_, ScrollAnimatedBegin(::testing::_)) 705 EXPECT_CALL(mock_input_handler_, ScrollAnimatedBegin(::testing::_))
711 .WillOnce(testing::Return(kImplThreadScrollState)); 706 .WillOnce(testing::Return(kImplThreadScrollState));
712 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 707 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
713 708
714 gesture_.type = WebInputEvent::GestureScrollUpdate; 709 gesture_.setType(WebInputEvent::GestureScrollUpdate);
715 gesture_.data.scrollUpdate.deltaUnits = WebGestureEvent::ScrollUnits::Pixels; 710 gesture_.data.scrollUpdate.deltaUnits = WebGestureEvent::ScrollUnits::Pixels;
716 711
717 EXPECT_CALL(mock_input_handler_, 712 EXPECT_CALL(mock_input_handler_,
718 ScrollAnimated(::testing::_, ::testing::_, ::testing::_)) 713 ScrollAnimated(::testing::_, ::testing::_, ::testing::_))
719 .WillOnce(testing::Return(kImplThreadScrollState)); 714 .WillOnce(testing::Return(kImplThreadScrollState));
720 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 715 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
721 716
722 VERIFY_AND_RESET_MOCKS(); 717 VERIFY_AND_RESET_MOCKS();
723 } 718 }
724 719
725 TEST_P(InputHandlerProxyTest, GestureScrollBeginThatTargetViewport) { 720 TEST_P(InputHandlerProxyTest, GestureScrollBeginThatTargetViewport) {
726 // We shouldn't send any events to the widget for this gesture. 721 // We shouldn't send any events to the widget for this gesture.
727 expected_disposition_ = InputHandlerProxy::DID_HANDLE; 722 expected_disposition_ = InputHandlerProxy::DID_HANDLE;
728 VERIFY_AND_RESET_MOCKS(); 723 VERIFY_AND_RESET_MOCKS();
729 724
730 EXPECT_CALL(mock_input_handler_, RootScrollBegin(testing::_, testing::_)) 725 EXPECT_CALL(mock_input_handler_, RootScrollBegin(testing::_, testing::_))
731 .WillOnce(testing::Return(kImplThreadScrollState)); 726 .WillOnce(testing::Return(kImplThreadScrollState));
732 727
733 gesture_.type = WebInputEvent::GestureScrollBegin; 728 gesture_.setType(WebInputEvent::GestureScrollBegin);
734 gesture_.data.scrollBegin.targetViewport = true; 729 gesture_.data.scrollBegin.targetViewport = true;
735 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 730 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
736 731
737 VERIFY_AND_RESET_MOCKS(); 732 VERIFY_AND_RESET_MOCKS();
738 } 733 }
739 734
740 TEST_P(InputHandlerProxyTest, GesturePinch) { 735 TEST_P(InputHandlerProxyTest, GesturePinch) {
741 // We shouldn't send any events to the widget for this gesture. 736 // We shouldn't send any events to the widget for this gesture.
742 expected_disposition_ = InputHandlerProxy::DID_HANDLE; 737 expected_disposition_ = InputHandlerProxy::DID_HANDLE;
743 VERIFY_AND_RESET_MOCKS(); 738 VERIFY_AND_RESET_MOCKS();
744 739
745 gesture_.type = WebInputEvent::GesturePinchBegin; 740 gesture_.setType(WebInputEvent::GesturePinchBegin);
746 EXPECT_CALL(mock_input_handler_, 741 EXPECT_CALL(mock_input_handler_,
747 GetEventListenerProperties(cc::EventListenerClass::kMouseWheel)) 742 GetEventListenerProperties(cc::EventListenerClass::kMouseWheel))
748 .WillOnce(testing::Return(cc::EventListenerProperties::kNone)); 743 .WillOnce(testing::Return(cc::EventListenerProperties::kNone));
749 EXPECT_CALL(mock_input_handler_, PinchGestureBegin()); 744 EXPECT_CALL(mock_input_handler_, PinchGestureBegin());
750 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 745 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
751 746
752 VERIFY_AND_RESET_MOCKS(); 747 VERIFY_AND_RESET_MOCKS();
753 748
754 gesture_.type = WebInputEvent::GesturePinchUpdate; 749 gesture_.setType(WebInputEvent::GesturePinchUpdate);
755 gesture_.data.pinchUpdate.scale = 1.5; 750 gesture_.data.pinchUpdate.scale = 1.5;
756 gesture_.x = 7; 751 gesture_.x = 7;
757 gesture_.y = 13; 752 gesture_.y = 13;
758 EXPECT_CALL(mock_input_handler_, PinchGestureUpdate(1.5, gfx::Point(7, 13))); 753 EXPECT_CALL(mock_input_handler_, PinchGestureUpdate(1.5, gfx::Point(7, 13)));
759 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 754 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
760 755
761 VERIFY_AND_RESET_MOCKS(); 756 VERIFY_AND_RESET_MOCKS();
762 757
763 gesture_.type = WebInputEvent::GesturePinchUpdate; 758 gesture_.setType(WebInputEvent::GesturePinchUpdate);
764 gesture_.data.pinchUpdate.scale = 0.5; 759 gesture_.data.pinchUpdate.scale = 0.5;
765 gesture_.data.pinchUpdate.zoomDisabled = true; 760 gesture_.data.pinchUpdate.zoomDisabled = true;
766 gesture_.x = 9; 761 gesture_.x = 9;
767 gesture_.y = 6; 762 gesture_.y = 6;
768 EXPECT_EQ(InputHandlerProxy::DROP_EVENT, 763 EXPECT_EQ(InputHandlerProxy::DROP_EVENT,
769 input_handler_->HandleInputEvent(gesture_)); 764 input_handler_->HandleInputEvent(gesture_));
770 gesture_.data.pinchUpdate.zoomDisabled = false; 765 gesture_.data.pinchUpdate.zoomDisabled = false;
771 766
772 VERIFY_AND_RESET_MOCKS(); 767 VERIFY_AND_RESET_MOCKS();
773 768
774 gesture_.type = WebInputEvent::GesturePinchUpdate; 769 gesture_.setType(WebInputEvent::GesturePinchUpdate);
775 gesture_.data.pinchUpdate.scale = 0.5; 770 gesture_.data.pinchUpdate.scale = 0.5;
776 gesture_.x = 9; 771 gesture_.x = 9;
777 gesture_.y = 6; 772 gesture_.y = 6;
778 EXPECT_CALL(mock_input_handler_, PinchGestureUpdate(.5, gfx::Point(9, 6))); 773 EXPECT_CALL(mock_input_handler_, PinchGestureUpdate(.5, gfx::Point(9, 6)));
779 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 774 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
780 775
781 VERIFY_AND_RESET_MOCKS(); 776 VERIFY_AND_RESET_MOCKS();
782 777
783 gesture_.type = WebInputEvent::GesturePinchEnd; 778 gesture_.setType(WebInputEvent::GesturePinchEnd);
784 EXPECT_CALL(mock_input_handler_, PinchGestureEnd()); 779 EXPECT_CALL(mock_input_handler_, PinchGestureEnd());
785 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 780 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
786 781
787 VERIFY_AND_RESET_MOCKS(); 782 VERIFY_AND_RESET_MOCKS();
788 } 783 }
789 784
790 TEST_P(InputHandlerProxyTest, GesturePinchWithWheelHandler) { 785 TEST_P(InputHandlerProxyTest, GesturePinchWithWheelHandler) {
791 // We will send the synthetic wheel event to the widget. 786 // We will send the synthetic wheel event to the widget.
792 expected_disposition_ = InputHandlerProxy::DID_NOT_HANDLE; 787 expected_disposition_ = InputHandlerProxy::DID_NOT_HANDLE;
793 VERIFY_AND_RESET_MOCKS(); 788 VERIFY_AND_RESET_MOCKS();
794 789
795 gesture_.type = WebInputEvent::GesturePinchBegin; 790 gesture_.setType(WebInputEvent::GesturePinchBegin);
796 EXPECT_CALL(mock_input_handler_, 791 EXPECT_CALL(mock_input_handler_,
797 GetEventListenerProperties(cc::EventListenerClass::kMouseWheel)) 792 GetEventListenerProperties(cc::EventListenerClass::kMouseWheel))
798 .WillOnce(testing::Return(cc::EventListenerProperties::kBlocking)); 793 .WillOnce(testing::Return(cc::EventListenerProperties::kBlocking));
799 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 794 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
800 795
801 VERIFY_AND_RESET_MOCKS(); 796 VERIFY_AND_RESET_MOCKS();
802 797
803 gesture_.type = WebInputEvent::GesturePinchUpdate; 798 gesture_.setType(WebInputEvent::GesturePinchUpdate);
804 gesture_.data.pinchUpdate.scale = 1.5; 799 gesture_.data.pinchUpdate.scale = 1.5;
805 gesture_.x = 7; 800 gesture_.x = 7;
806 gesture_.y = 13; 801 gesture_.y = 13;
807 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 802 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
808 803
809 VERIFY_AND_RESET_MOCKS(); 804 VERIFY_AND_RESET_MOCKS();
810 805
811 gesture_.type = WebInputEvent::GesturePinchUpdate; 806 gesture_.setType(WebInputEvent::GesturePinchUpdate);
812 gesture_.data.pinchUpdate.scale = 0.5; 807 gesture_.data.pinchUpdate.scale = 0.5;
813 gesture_.x = 9; 808 gesture_.x = 9;
814 gesture_.y = 6; 809 gesture_.y = 6;
815 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 810 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
816 811
817 VERIFY_AND_RESET_MOCKS(); 812 VERIFY_AND_RESET_MOCKS();
818 813
819 gesture_.type = WebInputEvent::GesturePinchEnd; 814 gesture_.setType(WebInputEvent::GesturePinchEnd);
820 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 815 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
821 } 816 }
822 817
823 TEST_P(InputHandlerProxyTest, GesturePinchAfterScrollOnMainThread) { 818 TEST_P(InputHandlerProxyTest, GesturePinchAfterScrollOnMainThread) {
824 // Scrolls will start by being sent to the main thread. 819 // Scrolls will start by being sent to the main thread.
825 expected_disposition_ = InputHandlerProxy::DID_NOT_HANDLE; 820 expected_disposition_ = InputHandlerProxy::DID_NOT_HANDLE;
826 VERIFY_AND_RESET_MOCKS(); 821 VERIFY_AND_RESET_MOCKS();
827 822
828 EXPECT_CALL(mock_input_handler_, ScrollBegin(::testing::_, ::testing::_)) 823 EXPECT_CALL(mock_input_handler_, ScrollBegin(::testing::_, ::testing::_))
829 .WillOnce(testing::Return(kMainThreadScrollState)); 824 .WillOnce(testing::Return(kMainThreadScrollState));
830 825
831 gesture_.type = WebInputEvent::GestureScrollBegin; 826 gesture_.setType(WebInputEvent::GestureScrollBegin);
832 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 827 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
833 828
834 VERIFY_AND_RESET_MOCKS(); 829 VERIFY_AND_RESET_MOCKS();
835 830
836 gesture_.type = WebInputEvent::GestureScrollUpdate; 831 gesture_.setType(WebInputEvent::GestureScrollUpdate);
837 gesture_.data.scrollUpdate.deltaY = 40; 832 gesture_.data.scrollUpdate.deltaY = 40;
838 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 833 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
839 834
840 // However, after the pinch gesture starts, they should go to the impl 835 // However, after the pinch gesture starts, they should go to the impl
841 // thread. 836 // thread.
842 expected_disposition_ = InputHandlerProxy::DID_HANDLE; 837 expected_disposition_ = InputHandlerProxy::DID_HANDLE;
843 VERIFY_AND_RESET_MOCKS(); 838 VERIFY_AND_RESET_MOCKS();
844 839
845 gesture_.type = WebInputEvent::GesturePinchBegin; 840 gesture_.setType(WebInputEvent::GesturePinchBegin);
841 ;
846 EXPECT_CALL(mock_input_handler_, 842 EXPECT_CALL(mock_input_handler_,
847 GetEventListenerProperties(cc::EventListenerClass::kMouseWheel)) 843 GetEventListenerProperties(cc::EventListenerClass::kMouseWheel))
848 .WillOnce(testing::Return(cc::EventListenerProperties::kNone)); 844 .WillOnce(testing::Return(cc::EventListenerProperties::kNone));
849 EXPECT_CALL(mock_input_handler_, PinchGestureBegin()); 845 EXPECT_CALL(mock_input_handler_, PinchGestureBegin());
850 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 846 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
851 847
852 VERIFY_AND_RESET_MOCKS(); 848 VERIFY_AND_RESET_MOCKS();
853 849
854 gesture_.type = WebInputEvent::GesturePinchUpdate; 850 gesture_.setType(WebInputEvent::GesturePinchUpdate);
855 gesture_.data.pinchUpdate.scale = 1.5; 851 gesture_.data.pinchUpdate.scale = 1.5;
856 gesture_.x = 7; 852 gesture_.x = 7;
857 gesture_.y = 13; 853 gesture_.y = 13;
858 EXPECT_CALL(mock_input_handler_, PinchGestureUpdate(1.5, gfx::Point(7, 13))); 854 EXPECT_CALL(mock_input_handler_, PinchGestureUpdate(1.5, gfx::Point(7, 13)));
859 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 855 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
860 856
861 VERIFY_AND_RESET_MOCKS(); 857 VERIFY_AND_RESET_MOCKS();
862 858
863 gesture_.type = WebInputEvent::GestureScrollUpdate; 859 gesture_.setType(WebInputEvent::GestureScrollUpdate);
864 gesture_.data.scrollUpdate.deltaY = 860 gesture_.data.scrollUpdate.deltaY =
865 -40; // -Y means scroll down - i.e. in the +Y direction. 861 -40; // -Y means scroll down - i.e. in the +Y direction.
866 EXPECT_CALL( 862 EXPECT_CALL(
867 mock_input_handler_, 863 mock_input_handler_,
868 ScrollBy(testing::Property(&cc::ScrollState::delta_y, testing::Gt(0)))) 864 ScrollBy(testing::Property(&cc::ScrollState::delta_y, testing::Gt(0))))
869 .WillOnce(testing::Return(scroll_result_did_scroll_)); 865 .WillOnce(testing::Return(scroll_result_did_scroll_));
870 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 866 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
871 867
872 VERIFY_AND_RESET_MOCKS(); 868 VERIFY_AND_RESET_MOCKS();
873 869
874 gesture_.type = WebInputEvent::GesturePinchUpdate; 870 gesture_.setType(WebInputEvent::GesturePinchUpdate);
875 gesture_.data.pinchUpdate.scale = 0.5; 871 gesture_.data.pinchUpdate.scale = 0.5;
876 gesture_.x = 9; 872 gesture_.x = 9;
877 gesture_.y = 6; 873 gesture_.y = 6;
878 EXPECT_CALL(mock_input_handler_, PinchGestureUpdate(.5, gfx::Point(9, 6))); 874 EXPECT_CALL(mock_input_handler_, PinchGestureUpdate(.5, gfx::Point(9, 6)));
879 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 875 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
880 876
881 VERIFY_AND_RESET_MOCKS(); 877 VERIFY_AND_RESET_MOCKS();
882 878
883 gesture_.type = WebInputEvent::GesturePinchEnd; 879 gesture_.setType(WebInputEvent::GesturePinchEnd);
884 EXPECT_CALL(mock_input_handler_, PinchGestureEnd()); 880 EXPECT_CALL(mock_input_handler_, PinchGestureEnd());
885 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 881 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
886 882
887 // After the pinch gesture ends, they should go to back to the main 883 // After the pinch gesture ends, they should go to back to the main
888 // thread. 884 // thread.
889 expected_disposition_ = InputHandlerProxy::DID_NOT_HANDLE; 885 expected_disposition_ = InputHandlerProxy::DID_NOT_HANDLE;
890 VERIFY_AND_RESET_MOCKS(); 886 VERIFY_AND_RESET_MOCKS();
891 887
892 gesture_.type = WebInputEvent::GestureScrollEnd; 888 gesture_.setType(WebInputEvent::GestureScrollEnd);
893 gesture_.data.scrollUpdate.deltaY = 0; 889 gesture_.data.scrollUpdate.deltaY = 0;
894 EXPECT_CALL(mock_input_handler_, ScrollEnd(testing::_)) 890 EXPECT_CALL(mock_input_handler_, ScrollEnd(testing::_))
895 .WillOnce(testing::Return()); 891 .WillOnce(testing::Return());
896 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 892 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
897 893
898 VERIFY_AND_RESET_MOCKS(); 894 VERIFY_AND_RESET_MOCKS();
899 } 895 }
900 896
901 TEST_P(InputHandlerProxyTest, GestureFlingStartedTouchpad) { 897 TEST_P(InputHandlerProxyTest, GestureFlingStartedTouchpad) {
902 // We shouldn't send any events to the widget for this gesture. 898 // We shouldn't send any events to the widget for this gesture.
903 expected_disposition_ = InputHandlerProxy::DID_HANDLE; 899 expected_disposition_ = InputHandlerProxy::DID_HANDLE;
904 VERIFY_AND_RESET_MOCKS(); 900 VERIFY_AND_RESET_MOCKS();
905 901
906 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) 902 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_))
907 .WillOnce(testing::Return(kImplThreadScrollState)); 903 .WillOnce(testing::Return(kImplThreadScrollState));
908 EXPECT_CALL(mock_input_handler_, ScrollEnd(testing::_)); 904 EXPECT_CALL(mock_input_handler_, ScrollEnd(testing::_));
909 EXPECT_SET_NEEDS_ANIMATE_INPUT(1); 905 EXPECT_SET_NEEDS_ANIMATE_INPUT(1);
910 906
911 gesture_.type = WebInputEvent::GestureFlingStart; 907 gesture_.setType(WebInputEvent::GestureFlingStart);
912 gesture_.data.flingStart.velocityX = 10; 908 gesture_.data.flingStart.velocityX = 10;
913 gesture_.sourceDevice = blink::WebGestureDeviceTouchpad; 909 gesture_.sourceDevice = blink::WebGestureDeviceTouchpad;
914 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 910 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
915 911
916 VERIFY_AND_RESET_MOCKS(); 912 VERIFY_AND_RESET_MOCKS();
917 913
918 // Verify that a GestureFlingCancel during an animation cancels it. 914 // Verify that a GestureFlingCancel during an animation cancels it.
919 gesture_.type = WebInputEvent::GestureFlingCancel; 915 gesture_.setType(WebInputEvent::GestureFlingCancel);
920 gesture_.sourceDevice = blink::WebGestureDeviceTouchpad; 916 gesture_.sourceDevice = blink::WebGestureDeviceTouchpad;
921 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 917 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
922 } 918 }
923 919
924 TEST_P(InputHandlerProxyTest, GestureFlingOnMainThreadTouchpad) { 920 TEST_P(InputHandlerProxyTest, GestureFlingOnMainThreadTouchpad) {
925 // We should send all events to the widget for this gesture. 921 // We should send all events to the widget for this gesture.
926 expected_disposition_ = InputHandlerProxy::DID_NOT_HANDLE; 922 expected_disposition_ = InputHandlerProxy::DID_NOT_HANDLE;
927 VERIFY_AND_RESET_MOCKS(); 923 VERIFY_AND_RESET_MOCKS();
928 924
929 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) 925 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_))
930 .WillOnce(testing::Return(kMainThreadScrollState)); 926 .WillOnce(testing::Return(kMainThreadScrollState));
931 927
932 gesture_.type = WebInputEvent::GestureFlingStart; 928 gesture_.setType(WebInputEvent::GestureFlingStart);
933 gesture_.sourceDevice = blink::WebGestureDeviceTouchpad; 929 gesture_.sourceDevice = blink::WebGestureDeviceTouchpad;
934 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 930 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
935 931
936 // Since we returned ScrollStatusOnMainThread from scrollBegin, ensure the 932 // Since we returned ScrollStatusOnMainThread from scrollBegin, ensure the
937 // input handler knows it's scrolling off the impl thread 933 // input handler knows it's scrolling off the impl thread
938 ASSERT_FALSE(input_handler_->gesture_scroll_on_impl_thread_for_testing()); 934 ASSERT_FALSE(input_handler_->gesture_scroll_on_impl_thread_for_testing());
939 935
940 VERIFY_AND_RESET_MOCKS(); 936 VERIFY_AND_RESET_MOCKS();
941 937
942 // Even if we didn't start a fling ourselves, we still need to send the cancel 938 // Even if we didn't start a fling ourselves, we still need to send the cancel
943 // event to the widget. 939 // event to the widget.
944 gesture_.type = WebInputEvent::GestureFlingCancel; 940 gesture_.setType(WebInputEvent::GestureFlingCancel);
945 gesture_.sourceDevice = blink::WebGestureDeviceTouchpad; 941 gesture_.sourceDevice = blink::WebGestureDeviceTouchpad;
946 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 942 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
947 } 943 }
948 944
949 TEST_P(InputHandlerProxyTest, GestureFlingIgnoredTouchpad) { 945 TEST_P(InputHandlerProxyTest, GestureFlingIgnoredTouchpad) {
950 expected_disposition_ = InputHandlerProxy::DID_NOT_HANDLE; 946 expected_disposition_ = InputHandlerProxy::DID_NOT_HANDLE;
951 VERIFY_AND_RESET_MOCKS(); 947 VERIFY_AND_RESET_MOCKS();
952 948
953 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) 949 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_))
954 .WillOnce(testing::Return(kScrollIgnoredScrollState)); 950 .WillOnce(testing::Return(kScrollIgnoredScrollState));
955 951
956 gesture_.type = WebInputEvent::GestureFlingStart; 952 gesture_.setType(WebInputEvent::GestureFlingStart);
957 gesture_.sourceDevice = blink::WebGestureDeviceTouchpad; 953 gesture_.sourceDevice = blink::WebGestureDeviceTouchpad;
958 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 954 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
959 955
960 expected_disposition_ = InputHandlerProxy::DROP_EVENT; 956 expected_disposition_ = InputHandlerProxy::DROP_EVENT;
961 VERIFY_AND_RESET_MOCKS(); 957 VERIFY_AND_RESET_MOCKS();
962 958
963 // Since the previous fling was ignored, we should also be dropping the next 959 // Since the previous fling was ignored, we should also be dropping the next
964 // fling_cancel. 960 // fling_cancel.
965 gesture_.type = WebInputEvent::GestureFlingCancel; 961 gesture_.setType(WebInputEvent::GestureFlingCancel);
966 gesture_.sourceDevice = blink::WebGestureDeviceTouchpad; 962 gesture_.sourceDevice = blink::WebGestureDeviceTouchpad;
967 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 963 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
968 } 964 }
969 965
970 TEST_P(InputHandlerProxyTest, GestureFlingAnimatesTouchpad) { 966 TEST_P(InputHandlerProxyTest, GestureFlingAnimatesTouchpad) {
971 // We shouldn't send any events to the widget for this gesture. 967 // We shouldn't send any events to the widget for this gesture.
972 expected_disposition_ = InputHandlerProxy::DID_HANDLE; 968 expected_disposition_ = InputHandlerProxy::DID_HANDLE;
973 VERIFY_AND_RESET_MOCKS(); 969 VERIFY_AND_RESET_MOCKS();
974 970
975 // On the fling start, we should schedule an animation but not actually start 971 // On the fling start, we should schedule an animation but not actually start
976 // scrolling. 972 // scrolling.
977 gesture_.type = WebInputEvent::GestureFlingStart; 973 gesture_.setType(WebInputEvent::GestureFlingStart);
978 WebFloatPoint fling_delta = WebFloatPoint(1000, 0); 974 WebFloatPoint fling_delta = WebFloatPoint(1000, 0);
979 WebPoint fling_point = WebPoint(7, 13); 975 WebPoint fling_point = WebPoint(7, 13);
980 WebPoint fling_global_point = WebPoint(17, 23); 976 WebPoint fling_global_point = WebPoint(17, 23);
981 // Note that for trackpad, wheel events with the Control modifier are 977 // Note that for trackpad, wheel events with the Control modifier are
982 // special (reserved for zoom), so don't set that here. 978 // special (reserved for zoom), so don't set that here.
983 int modifiers = WebInputEvent::ShiftKey | WebInputEvent::AltKey; 979 int modifiers = WebInputEvent::ShiftKey | WebInputEvent::AltKey;
984 gesture_ = CreateFling(blink::WebGestureDeviceTouchpad, 980 gesture_ = CreateFling(blink::WebGestureDeviceTouchpad,
985 fling_delta, 981 fling_delta,
986 fling_point, 982 fling_point,
987 fling_global_point, 983 fling_global_point,
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
1069 EXPECT_SET_NEEDS_ANIMATE_INPUT(0); 1065 EXPECT_SET_NEEDS_ANIMATE_INPUT(0);
1070 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) 1066 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_))
1071 .Times(0); 1067 .Times(0);
1072 time += base::TimeDelta::FromMilliseconds(100); 1068 time += base::TimeDelta::FromMilliseconds(100);
1073 Animate(time); 1069 Animate(time);
1074 1070
1075 // Since we've transferred the fling to the main thread, we need to pass the 1071 // Since we've transferred the fling to the main thread, we need to pass the
1076 // next GestureFlingCancel to the main 1072 // next GestureFlingCancel to the main
1077 // thread as well. 1073 // thread as well.
1078 expected_disposition_ = InputHandlerProxy::DID_NOT_HANDLE; 1074 expected_disposition_ = InputHandlerProxy::DID_NOT_HANDLE;
1079 gesture_.type = WebInputEvent::GestureFlingCancel; 1075 gesture_.setType(WebInputEvent::GestureFlingCancel);
1080 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 1076 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
1081 1077
1082 VERIFY_AND_RESET_MOCKS(); 1078 VERIFY_AND_RESET_MOCKS();
1083 } 1079 }
1084 1080
1085 TEST_P(InputHandlerProxyTest, GestureFlingPassiveListener) { 1081 TEST_P(InputHandlerProxyTest, GestureFlingPassiveListener) {
1086 // We shouldn't send any events to the widget for this gesture. 1082 // We shouldn't send any events to the widget for this gesture.
1087 expected_disposition_ = InputHandlerProxy::DID_HANDLE; 1083 expected_disposition_ = InputHandlerProxy::DID_HANDLE;
1088 VERIFY_AND_RESET_MOCKS(); 1084 VERIFY_AND_RESET_MOCKS();
1089 1085
1090 // On the fling start, we should schedule an animation but not actually start 1086 // On the fling start, we should schedule an animation but not actually start
1091 // scrolling. 1087 // scrolling.
1092 gesture_.type = WebInputEvent::GestureFlingStart; 1088 gesture_.setType(WebInputEvent::GestureFlingStart);
1093 WebFloatPoint fling_delta = WebFloatPoint(1000, 0); 1089 WebFloatPoint fling_delta = WebFloatPoint(1000, 0);
1094 WebPoint fling_point = WebPoint(7, 13); 1090 WebPoint fling_point = WebPoint(7, 13);
1095 WebPoint fling_global_point = WebPoint(17, 23); 1091 WebPoint fling_global_point = WebPoint(17, 23);
1096 // Note that for trackpad, wheel events with the Control modifier are 1092 // Note that for trackpad, wheel events with the Control modifier are
1097 // special (reserved for zoom), so don't set that here. 1093 // special (reserved for zoom), so don't set that here.
1098 int modifiers = WebInputEvent::ShiftKey | WebInputEvent::AltKey; 1094 int modifiers = WebInputEvent::ShiftKey | WebInputEvent::AltKey;
1099 gesture_ = CreateFling(blink::WebGestureDeviceTouchpad, fling_delta, 1095 gesture_ = CreateFling(blink::WebGestureDeviceTouchpad, fling_delta,
1100 fling_point, fling_global_point, modifiers); 1096 fling_point, fling_global_point, modifiers);
1101 EXPECT_SET_NEEDS_ANIMATE_INPUT(1); 1097 EXPECT_SET_NEEDS_ANIMATE_INPUT(1);
1102 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) 1098 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_))
(...skipping 21 matching lines...) Expand all
1124 EXPECT_SET_NEEDS_ANIMATE_INPUT(1); 1120 EXPECT_SET_NEEDS_ANIMATE_INPUT(1);
1125 EXPECT_CALL(mock_input_handler_, 1121 EXPECT_CALL(mock_input_handler_,
1126 GetEventListenerProperties(cc::EventListenerClass::kMouseWheel)) 1122 GetEventListenerProperties(cc::EventListenerClass::kMouseWheel))
1127 .WillOnce(testing::Return(cc::EventListenerProperties::kPassive)); 1123 .WillOnce(testing::Return(cc::EventListenerProperties::kPassive));
1128 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) 1124 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_))
1129 .WillOnce(testing::Return(kImplThreadScrollState)); 1125 .WillOnce(testing::Return(kImplThreadScrollState));
1130 EXPECT_CALL( 1126 EXPECT_CALL(
1131 mock_input_handler_, 1127 mock_input_handler_,
1132 ScrollBy(testing::Property(&cc::ScrollState::delta_x, testing::Lt(0)))) 1128 ScrollBy(testing::Property(&cc::ScrollState::delta_x, testing::Lt(0))))
1133 .WillOnce(testing::Return(scroll_result_did_scroll_)); 1129 .WillOnce(testing::Return(scroll_result_did_scroll_));
1134 WebMouseWheelEvent expected_wheel; 1130 WebMouseWheelEvent expected_wheel(WebInputEvent::MouseWheel, modifiers,
1135 expected_wheel.type = WebInputEvent::MouseWheel; 1131 WebInputEvent::TimeStampForTesting);
1136 expected_wheel.modifiers = modifiers;
1137 expected_wheel.x = fling_point.x; 1132 expected_wheel.x = fling_point.x;
1138 expected_wheel.y = fling_point.y; 1133 expected_wheel.y = fling_point.y;
1139 expected_wheel.globalX = fling_global_point.x; 1134 expected_wheel.globalX = fling_global_point.x;
1140 expected_wheel.globalY = fling_global_point.y; 1135 expected_wheel.globalY = fling_global_point.y;
1141 expected_wheel.deltaX = fling_delta.x / 10; 1136 expected_wheel.deltaX = fling_delta.x / 10;
1142 expected_wheel.hasPreciseScrollingDeltas = true; 1137 expected_wheel.hasPreciseScrollingDeltas = true;
1143 1138
1144 EXPECT_CALL(mock_client_, DispatchNonBlockingEventToMainThread_( 1139 EXPECT_CALL(mock_client_, DispatchNonBlockingEventToMainThread_(
1145 WheelEventsMatch(expected_wheel))) 1140 WheelEventsMatch(expected_wheel)))
1146 .Times(1); 1141 .Times(1);
1147 EXPECT_CALL(mock_input_handler_, ScrollEnd(testing::_)).Times(1); 1142 EXPECT_CALL(mock_input_handler_, ScrollEnd(testing::_)).Times(1);
1148 1143
1149 time += base::TimeDelta::FromMilliseconds(100); 1144 time += base::TimeDelta::FromMilliseconds(100);
1150 Animate(time); 1145 Animate(time);
1151 1146
1152 VERIFY_AND_RESET_MOCKS(); 1147 VERIFY_AND_RESET_MOCKS();
1153 1148
1154 // Ensure we can cancel the gesture. 1149 // Ensure we can cancel the gesture.
1155 expected_disposition_ = InputHandlerProxy::DID_HANDLE; 1150 expected_disposition_ = InputHandlerProxy::DID_HANDLE;
1156 gesture_.type = WebInputEvent::GestureFlingCancel; 1151 gesture_.setType(WebInputEvent::GestureFlingCancel);
1157 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 1152 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
1158 1153
1159 VERIFY_AND_RESET_MOCKS(); 1154 VERIFY_AND_RESET_MOCKS();
1160 } 1155 }
1161 1156
1162 TEST_P(InputHandlerProxyTest, GestureFlingTransferResetsTouchpad) { 1157 TEST_P(InputHandlerProxyTest, GestureFlingTransferResetsTouchpad) {
1163 // We shouldn't send any events to the widget for this gesture. 1158 // We shouldn't send any events to the widget for this gesture.
1164 expected_disposition_ = InputHandlerProxy::DID_HANDLE; 1159 expected_disposition_ = InputHandlerProxy::DID_HANDLE;
1165 VERIFY_AND_RESET_MOCKS(); 1160 VERIFY_AND_RESET_MOCKS();
1166 1161
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
1259 .Times(0); 1254 .Times(0);
1260 time += base::TimeDelta::FromMilliseconds(100); 1255 time += base::TimeDelta::FromMilliseconds(100);
1261 Animate(time); 1256 Animate(time);
1262 1257
1263 VERIFY_AND_RESET_MOCKS(); 1258 VERIFY_AND_RESET_MOCKS();
1264 1259
1265 // Since we've transferred the fling to the main thread, we need to pass the 1260 // Since we've transferred the fling to the main thread, we need to pass the
1266 // next GestureFlingCancel to the main 1261 // next GestureFlingCancel to the main
1267 // thread as well. 1262 // thread as well.
1268 expected_disposition_ = InputHandlerProxy::DID_NOT_HANDLE; 1263 expected_disposition_ = InputHandlerProxy::DID_NOT_HANDLE;
1269 gesture_.type = WebInputEvent::GestureFlingCancel; 1264 gesture_.setType(WebInputEvent::GestureFlingCancel);
1270 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 1265 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
1271 1266
1272 VERIFY_AND_RESET_MOCKS(); 1267 VERIFY_AND_RESET_MOCKS();
1273 input_handler_->MainThreadHasStoppedFlinging(); 1268 input_handler_->MainThreadHasStoppedFlinging();
1274 1269
1275 // Start a second gesture fling, this time in the +Y direction with no X. 1270 // Start a second gesture fling, this time in the +Y direction with no X.
1276 fling_delta = WebFloatPoint(0, -1000); 1271 fling_delta = WebFloatPoint(0, -1000);
1277 fling_point = WebPoint(95, 87); 1272 fling_point = WebPoint(95, 87);
1278 fling_global_point = WebPoint(32, 71); 1273 fling_global_point = WebPoint(32, 71);
1279 modifiers = WebInputEvent::AltKey; 1274 modifiers = WebInputEvent::AltKey;
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
1349 VERIFY_AND_RESET_MOCKS(); 1344 VERIFY_AND_RESET_MOCKS();
1350 } 1345 }
1351 1346
1352 TEST_P(InputHandlerProxyTest, GestureFlingStartedTouchscreen) { 1347 TEST_P(InputHandlerProxyTest, GestureFlingStartedTouchscreen) {
1353 // We shouldn't send any events to the widget for this gesture. 1348 // We shouldn't send any events to the widget for this gesture.
1354 expected_disposition_ = InputHandlerProxy::DID_HANDLE; 1349 expected_disposition_ = InputHandlerProxy::DID_HANDLE;
1355 VERIFY_AND_RESET_MOCKS(); 1350 VERIFY_AND_RESET_MOCKS();
1356 1351
1357 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) 1352 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_))
1358 .WillOnce(testing::Return(kImplThreadScrollState)); 1353 .WillOnce(testing::Return(kImplThreadScrollState));
1359 gesture_.type = WebInputEvent::GestureScrollBegin; 1354 gesture_.setType(WebInputEvent::GestureScrollBegin);
1360 gesture_.sourceDevice = blink::WebGestureDeviceTouchscreen; 1355 gesture_.sourceDevice = blink::WebGestureDeviceTouchscreen;
1361 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 1356 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
1362 1357
1363 VERIFY_AND_RESET_MOCKS(); 1358 VERIFY_AND_RESET_MOCKS();
1364 1359
1365 EXPECT_CALL(mock_input_handler_, FlingScrollBegin()) 1360 EXPECT_CALL(mock_input_handler_, FlingScrollBegin())
1366 .WillOnce(testing::Return(kImplThreadScrollState)); 1361 .WillOnce(testing::Return(kImplThreadScrollState));
1367 EXPECT_SET_NEEDS_ANIMATE_INPUT(1); 1362 EXPECT_SET_NEEDS_ANIMATE_INPUT(1);
1368 1363
1369 gesture_.type = WebInputEvent::GestureFlingStart; 1364 gesture_.setType(WebInputEvent::GestureFlingStart);
1370 gesture_.data.flingStart.velocityX = 10; 1365 gesture_.data.flingStart.velocityX = 10;
1371 gesture_.sourceDevice = blink::WebGestureDeviceTouchscreen; 1366 gesture_.sourceDevice = blink::WebGestureDeviceTouchscreen;
1372 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 1367 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
1373 1368
1374 VERIFY_AND_RESET_MOCKS(); 1369 VERIFY_AND_RESET_MOCKS();
1375 1370
1376 EXPECT_CALL(mock_input_handler_, ScrollEnd(testing::_)); 1371 EXPECT_CALL(mock_input_handler_, ScrollEnd(testing::_));
1377 1372
1378 // Verify that a GestureFlingCancel during an animation cancels it. 1373 // Verify that a GestureFlingCancel during an animation cancels it.
1379 gesture_.type = WebInputEvent::GestureFlingCancel; 1374 gesture_.setType(WebInputEvent::GestureFlingCancel);
1380 gesture_.sourceDevice = blink::WebGestureDeviceTouchscreen; 1375 gesture_.sourceDevice = blink::WebGestureDeviceTouchscreen;
1381 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 1376 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
1382 1377
1383 VERIFY_AND_RESET_MOCKS(); 1378 VERIFY_AND_RESET_MOCKS();
1384 } 1379 }
1385 1380
1386 TEST_P(InputHandlerProxyTest, GestureFlingOnMainThreadTouchscreen) { 1381 TEST_P(InputHandlerProxyTest, GestureFlingOnMainThreadTouchscreen) {
1387 // We should send all events to the widget for this gesture. 1382 // We should send all events to the widget for this gesture.
1388 expected_disposition_ = InputHandlerProxy::DID_NOT_HANDLE; 1383 expected_disposition_ = InputHandlerProxy::DID_NOT_HANDLE;
1389 VERIFY_AND_RESET_MOCKS(); 1384 VERIFY_AND_RESET_MOCKS();
1390 1385
1391 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) 1386 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_))
1392 .WillOnce(testing::Return(kMainThreadScrollState)); 1387 .WillOnce(testing::Return(kMainThreadScrollState));
1393 1388
1394 gesture_.type = WebInputEvent::GestureScrollBegin; 1389 gesture_.setType(WebInputEvent::GestureScrollBegin);
1395 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 1390 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
1396 1391
1397 VERIFY_AND_RESET_MOCKS(); 1392 VERIFY_AND_RESET_MOCKS();
1398 1393
1399 EXPECT_CALL(mock_input_handler_, FlingScrollBegin()).Times(0); 1394 EXPECT_CALL(mock_input_handler_, FlingScrollBegin()).Times(0);
1400 1395
1401 gesture_.type = WebInputEvent::GestureFlingStart; 1396 gesture_.setType(WebInputEvent::GestureFlingStart);
1402 gesture_.sourceDevice = blink::WebGestureDeviceTouchscreen; 1397 gesture_.sourceDevice = blink::WebGestureDeviceTouchscreen;
1403 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 1398 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
1404 1399
1405 VERIFY_AND_RESET_MOCKS(); 1400 VERIFY_AND_RESET_MOCKS();
1406 1401
1407 // Even if we didn't start a fling ourselves, we still need to send the cancel 1402 // Even if we didn't start a fling ourselves, we still need to send the cancel
1408 // event to the widget. 1403 // event to the widget.
1409 gesture_.type = WebInputEvent::GestureFlingCancel; 1404 gesture_.setType(WebInputEvent::GestureFlingCancel);
1410 gesture_.sourceDevice = blink::WebGestureDeviceTouchscreen; 1405 gesture_.sourceDevice = blink::WebGestureDeviceTouchscreen;
1411 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 1406 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
1412 } 1407 }
1413 1408
1414 TEST_P(InputHandlerProxyTest, GestureFlingIgnoredTouchscreen) { 1409 TEST_P(InputHandlerProxyTest, GestureFlingIgnoredTouchscreen) {
1415 expected_disposition_ = InputHandlerProxy::DID_HANDLE; 1410 expected_disposition_ = InputHandlerProxy::DID_HANDLE;
1416 VERIFY_AND_RESET_MOCKS(); 1411 VERIFY_AND_RESET_MOCKS();
1417 1412
1418 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) 1413 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_))
1419 .WillOnce(testing::Return(kImplThreadScrollState)); 1414 .WillOnce(testing::Return(kImplThreadScrollState));
1420 1415
1421 gesture_.type = WebInputEvent::GestureScrollBegin; 1416 gesture_.setType(WebInputEvent::GestureScrollBegin);
1422 gesture_.sourceDevice = blink::WebGestureDeviceTouchscreen; 1417 gesture_.sourceDevice = blink::WebGestureDeviceTouchscreen;
1423 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 1418 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
1424 1419
1425 expected_disposition_ = InputHandlerProxy::DROP_EVENT; 1420 expected_disposition_ = InputHandlerProxy::DROP_EVENT;
1426 VERIFY_AND_RESET_MOCKS(); 1421 VERIFY_AND_RESET_MOCKS();
1427 1422
1428 // Flings ignored by the InputHandler should be dropped, signalling the end 1423 // Flings ignored by the InputHandler should be dropped, signalling the end
1429 // of the touch scroll sequence. 1424 // of the touch scroll sequence.
1430 EXPECT_CALL(mock_input_handler_, FlingScrollBegin()) 1425 EXPECT_CALL(mock_input_handler_, FlingScrollBegin())
1431 .WillOnce(testing::Return(kScrollIgnoredScrollState)); 1426 .WillOnce(testing::Return(kScrollIgnoredScrollState));
1432 1427
1433 gesture_.type = WebInputEvent::GestureFlingStart; 1428 gesture_.setType(WebInputEvent::GestureFlingStart);
1434 gesture_.sourceDevice = blink::WebGestureDeviceTouchscreen; 1429 gesture_.sourceDevice = blink::WebGestureDeviceTouchscreen;
1435 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 1430 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
1436 1431
1437 VERIFY_AND_RESET_MOCKS(); 1432 VERIFY_AND_RESET_MOCKS();
1438 1433
1439 // Subsequent scrolls should behave normally, even without an intervening 1434 // Subsequent scrolls should behave normally, even without an intervening
1440 // GestureFlingCancel, as the original GestureFlingStart was dropped. 1435 // GestureFlingCancel, as the original GestureFlingStart was dropped.
1441 expected_disposition_ = InputHandlerProxy::DID_HANDLE; 1436 expected_disposition_ = InputHandlerProxy::DID_HANDLE;
1442 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) 1437 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_))
1443 .WillOnce(testing::Return(kImplThreadScrollState)); 1438 .WillOnce(testing::Return(kImplThreadScrollState));
1444 gesture_.type = WebInputEvent::GestureScrollBegin; 1439 gesture_.setType(WebInputEvent::GestureScrollBegin);
1445 gesture_.sourceDevice = blink::WebGestureDeviceTouchscreen; 1440 gesture_.sourceDevice = blink::WebGestureDeviceTouchscreen;
1446 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 1441 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
1447 1442
1448 VERIFY_AND_RESET_MOCKS(); 1443 VERIFY_AND_RESET_MOCKS();
1449 } 1444 }
1450 1445
1451 TEST_P(InputHandlerProxyTest, GestureFlingAnimatesTouchscreen) { 1446 TEST_P(InputHandlerProxyTest, GestureFlingAnimatesTouchscreen) {
1452 // We shouldn't send any events to the widget for this gesture. 1447 // We shouldn't send any events to the widget for this gesture.
1453 expected_disposition_ = InputHandlerProxy::DID_HANDLE; 1448 expected_disposition_ = InputHandlerProxy::DID_HANDLE;
1454 VERIFY_AND_RESET_MOCKS(); 1449 VERIFY_AND_RESET_MOCKS();
1455 1450
1456 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) 1451 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_))
1457 .WillOnce(testing::Return(kImplThreadScrollState)); 1452 .WillOnce(testing::Return(kImplThreadScrollState));
1458 1453
1459 gesture_.type = WebInputEvent::GestureScrollBegin; 1454 gesture_.setType(WebInputEvent::GestureScrollBegin);
1460 gesture_.sourceDevice = blink::WebGestureDeviceTouchscreen; 1455 gesture_.sourceDevice = blink::WebGestureDeviceTouchscreen;
1461 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 1456 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
1462 1457
1463 VERIFY_AND_RESET_MOCKS(); 1458 VERIFY_AND_RESET_MOCKS();
1464 1459
1465 // On the fling start, we should schedule an animation but not actually start 1460 // On the fling start, we should schedule an animation but not actually start
1466 // scrolling. 1461 // scrolling.
1467 WebFloatPoint fling_delta = WebFloatPoint(100, 0); 1462 WebFloatPoint fling_delta = WebFloatPoint(100, 0);
1468 WebPoint fling_point = WebPoint(7, 13); 1463 WebPoint fling_point = WebPoint(7, 13);
1469 WebPoint fling_global_point = WebPoint(17, 23); 1464 WebPoint fling_global_point = WebPoint(17, 23);
(...skipping 26 matching lines...) Expand all
1496 EXPECT_CALL( 1491 EXPECT_CALL(
1497 mock_input_handler_, 1492 mock_input_handler_,
1498 ScrollBy(testing::Property(&cc::ScrollState::delta_x, testing::Lt(0)))) 1493 ScrollBy(testing::Property(&cc::ScrollState::delta_x, testing::Lt(0))))
1499 .WillOnce(testing::Return(scroll_result_did_scroll_)); 1494 .WillOnce(testing::Return(scroll_result_did_scroll_));
1500 time += base::TimeDelta::FromMilliseconds(100); 1495 time += base::TimeDelta::FromMilliseconds(100);
1501 Animate(time); 1496 Animate(time);
1502 1497
1503 VERIFY_AND_RESET_MOCKS(); 1498 VERIFY_AND_RESET_MOCKS();
1504 1499
1505 EXPECT_CALL(mock_input_handler_, ScrollEnd(testing::_)); 1500 EXPECT_CALL(mock_input_handler_, ScrollEnd(testing::_));
1506 gesture_.type = WebInputEvent::GestureFlingCancel; 1501 gesture_.setType(WebInputEvent::GestureFlingCancel);
1507 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 1502 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
1508 1503
1509 VERIFY_AND_RESET_MOCKS(); 1504 VERIFY_AND_RESET_MOCKS();
1510 } 1505 }
1511 1506
1512 TEST_P(InputHandlerProxyTest, GestureFlingWithValidTimestamp) { 1507 TEST_P(InputHandlerProxyTest, GestureFlingWithValidTimestamp) {
1513 // We shouldn't send any events to the widget for this gesture. 1508 // We shouldn't send any events to the widget for this gesture.
1514 expected_disposition_ = InputHandlerProxy::DID_HANDLE; 1509 expected_disposition_ = InputHandlerProxy::DID_HANDLE;
1515 VERIFY_AND_RESET_MOCKS(); 1510 VERIFY_AND_RESET_MOCKS();
1516 1511
1517 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) 1512 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_))
1518 .WillOnce(testing::Return(kImplThreadScrollState)); 1513 .WillOnce(testing::Return(kImplThreadScrollState));
1519 1514
1520 gesture_.type = WebInputEvent::GestureScrollBegin; 1515 gesture_.setType(WebInputEvent::GestureScrollBegin);
1521 gesture_.sourceDevice = blink::WebGestureDeviceTouchscreen; 1516 gesture_.sourceDevice = blink::WebGestureDeviceTouchscreen;
1522 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 1517 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
1523 1518
1524 VERIFY_AND_RESET_MOCKS(); 1519 VERIFY_AND_RESET_MOCKS();
1525 1520
1526 // On the fling start, we should schedule an animation but not actually start 1521 // On the fling start, we should schedule an animation but not actually start
1527 // scrolling. 1522 // scrolling.
1528 base::TimeDelta dt = base::TimeDelta::FromMilliseconds(10); 1523 base::TimeDelta dt = base::TimeDelta::FromMilliseconds(10);
1529 base::TimeTicks time = base::TimeTicks() + dt; 1524 base::TimeTicks time = base::TimeTicks() + dt;
1530 WebFloatPoint fling_delta = WebFloatPoint(100, 0); 1525 WebFloatPoint fling_delta = WebFloatPoint(100, 0);
(...skipping 21 matching lines...) Expand all
1552 EXPECT_CALL( 1547 EXPECT_CALL(
1553 mock_input_handler_, 1548 mock_input_handler_,
1554 ScrollBy(testing::Property(&cc::ScrollState::delta_x, testing::Lt(0)))) 1549 ScrollBy(testing::Property(&cc::ScrollState::delta_x, testing::Lt(0))))
1555 .WillOnce(testing::Return(scroll_result_did_scroll_)); 1550 .WillOnce(testing::Return(scroll_result_did_scroll_));
1556 time += dt; 1551 time += dt;
1557 Animate(time); 1552 Animate(time);
1558 1553
1559 VERIFY_AND_RESET_MOCKS(); 1554 VERIFY_AND_RESET_MOCKS();
1560 1555
1561 EXPECT_CALL(mock_input_handler_, ScrollEnd(testing::_)); 1556 EXPECT_CALL(mock_input_handler_, ScrollEnd(testing::_));
1562 gesture_.type = WebInputEvent::GestureFlingCancel; 1557 gesture_.setType(WebInputEvent::GestureFlingCancel);
1563 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 1558 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
1564 1559
1565 VERIFY_AND_RESET_MOCKS(); 1560 VERIFY_AND_RESET_MOCKS();
1566 } 1561 }
1567 1562
1568 TEST_P(InputHandlerProxyTest, GestureFlingWithInvalidTimestamp) { 1563 TEST_P(InputHandlerProxyTest, GestureFlingWithInvalidTimestamp) {
1569 // We shouldn't send any events to the widget for this gesture. 1564 // We shouldn't send any events to the widget for this gesture.
1570 expected_disposition_ = InputHandlerProxy::DID_HANDLE; 1565 expected_disposition_ = InputHandlerProxy::DID_HANDLE;
1571 VERIFY_AND_RESET_MOCKS(); 1566 VERIFY_AND_RESET_MOCKS();
1572 1567
1573 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) 1568 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_))
1574 .WillOnce(testing::Return(kImplThreadScrollState)); 1569 .WillOnce(testing::Return(kImplThreadScrollState));
1575 1570
1576 gesture_.type = WebInputEvent::GestureScrollBegin; 1571 gesture_.setType(WebInputEvent::GestureScrollBegin);
1577 gesture_.sourceDevice = blink::WebGestureDeviceTouchscreen; 1572 gesture_.sourceDevice = blink::WebGestureDeviceTouchscreen;
1578 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 1573 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
1579 1574
1580 VERIFY_AND_RESET_MOCKS(); 1575 VERIFY_AND_RESET_MOCKS();
1581 1576
1582 // On the fling start, we should schedule an animation but not actually start 1577 // On the fling start, we should schedule an animation but not actually start
1583 // scrolling. 1578 // scrolling.
1584 base::TimeDelta start_time_offset = base::TimeDelta::FromMilliseconds(10); 1579 base::TimeDelta start_time_offset = base::TimeDelta::FromMilliseconds(10);
1585 gesture_.type = WebInputEvent::GestureFlingStart; 1580 gesture_.setType(WebInputEvent::GestureFlingStart);
1586 WebFloatPoint fling_delta = WebFloatPoint(100, 0); 1581 WebFloatPoint fling_delta = WebFloatPoint(100, 0);
1587 WebPoint fling_point = WebPoint(7, 13); 1582 WebPoint fling_point = WebPoint(7, 13);
1588 WebPoint fling_global_point = WebPoint(17, 23); 1583 WebPoint fling_global_point = WebPoint(17, 23);
1589 int modifiers = WebInputEvent::ControlKey; 1584 int modifiers = WebInputEvent::ControlKey;
1590 gesture_.timeStampSeconds = start_time_offset.InSecondsF(); 1585 gesture_.setTimeStampSeconds(start_time_offset.InSecondsF());
1591 gesture_.data.flingStart.velocityX = fling_delta.x; 1586 gesture_.data.flingStart.velocityX = fling_delta.x;
1592 gesture_.data.flingStart.velocityY = fling_delta.y; 1587 gesture_.data.flingStart.velocityY = fling_delta.y;
1593 gesture_.sourceDevice = blink::WebGestureDeviceTouchscreen; 1588 gesture_.sourceDevice = blink::WebGestureDeviceTouchscreen;
1594 gesture_.x = fling_point.x; 1589 gesture_.x = fling_point.x;
1595 gesture_.y = fling_point.y; 1590 gesture_.y = fling_point.y;
1596 gesture_.globalX = fling_global_point.x; 1591 gesture_.globalX = fling_global_point.x;
1597 gesture_.globalY = fling_global_point.y; 1592 gesture_.globalY = fling_global_point.y;
1598 gesture_.modifiers = modifiers; 1593 gesture_.setModifiers(modifiers);
1599 EXPECT_SET_NEEDS_ANIMATE_INPUT(1); 1594 EXPECT_SET_NEEDS_ANIMATE_INPUT(1);
1600 EXPECT_CALL(mock_input_handler_, FlingScrollBegin()) 1595 EXPECT_CALL(mock_input_handler_, FlingScrollBegin())
1601 .WillOnce(testing::Return(kImplThreadScrollState)); 1596 .WillOnce(testing::Return(kImplThreadScrollState));
1602 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 1597 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
1603 1598
1604 VERIFY_AND_RESET_MOCKS(); 1599 VERIFY_AND_RESET_MOCKS();
1605 // Event though a time stamp was provided for the fling event, it will be 1600 // Event though a time stamp was provided for the fling event, it will be
1606 // ignored as its too far in the past relative to the first animate call's 1601 // ignored as its too far in the past relative to the first animate call's
1607 // timestamp. 1602 // timestamp.
1608 EXPECT_SET_NEEDS_ANIMATE_INPUT(1); 1603 EXPECT_SET_NEEDS_ANIMATE_INPUT(1);
1609 base::TimeTicks time = 1604 base::TimeTicks time =
1610 base::TimeTicks() + start_time_offset + base::TimeDelta::FromSeconds(1); 1605 base::TimeTicks() + start_time_offset + base::TimeDelta::FromSeconds(1);
1611 Animate(time); 1606 Animate(time);
1612 1607
1613 VERIFY_AND_RESET_MOCKS(); 1608 VERIFY_AND_RESET_MOCKS();
1614 1609
1615 // Further animation ticks should update the fling as usual. 1610 // Further animation ticks should update the fling as usual.
1616 EXPECT_SET_NEEDS_ANIMATE_INPUT(1); 1611 EXPECT_SET_NEEDS_ANIMATE_INPUT(1);
1617 EXPECT_CALL( 1612 EXPECT_CALL(
1618 mock_input_handler_, 1613 mock_input_handler_,
1619 ScrollBy(testing::Property(&cc::ScrollState::delta_x, testing::Lt(0)))) 1614 ScrollBy(testing::Property(&cc::ScrollState::delta_x, testing::Lt(0))))
1620 .WillOnce(testing::Return(scroll_result_did_scroll_)); 1615 .WillOnce(testing::Return(scroll_result_did_scroll_));
1621 time += base::TimeDelta::FromMilliseconds(10); 1616 time += base::TimeDelta::FromMilliseconds(10);
1622 Animate(time); 1617 Animate(time);
1623 1618
1624 VERIFY_AND_RESET_MOCKS(); 1619 VERIFY_AND_RESET_MOCKS();
1625 1620
1626 EXPECT_CALL(mock_input_handler_, ScrollEnd(testing::_)); 1621 EXPECT_CALL(mock_input_handler_, ScrollEnd(testing::_));
1627 gesture_.type = WebInputEvent::GestureFlingCancel; 1622 gesture_.setType(WebInputEvent::GestureFlingCancel);
1628 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 1623 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
1629 1624
1630 VERIFY_AND_RESET_MOCKS(); 1625 VERIFY_AND_RESET_MOCKS();
1631 } 1626 }
1632 1627
1633 TEST_P(InputHandlerProxyTest, GestureScrollOnImplThreadFlagClearedAfterFling) { 1628 TEST_P(InputHandlerProxyTest, GestureScrollOnImplThreadFlagClearedAfterFling) {
1634 // We shouldn't send any events to the widget for this gesture. 1629 // We shouldn't send any events to the widget for this gesture.
1635 expected_disposition_ = InputHandlerProxy::DID_HANDLE; 1630 expected_disposition_ = InputHandlerProxy::DID_HANDLE;
1636 VERIFY_AND_RESET_MOCKS(); 1631 VERIFY_AND_RESET_MOCKS();
1637 1632
1638 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) 1633 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_))
1639 .WillOnce(testing::Return(kImplThreadScrollState)); 1634 .WillOnce(testing::Return(kImplThreadScrollState));
1640 1635
1641 gesture_.type = WebInputEvent::GestureScrollBegin; 1636 gesture_.setType(WebInputEvent::GestureScrollBegin);
1642 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 1637 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
1643 1638
1644 // After sending a GestureScrollBegin, the member variable 1639 // After sending a GestureScrollBegin, the member variable
1645 // |gesture_scroll_on_impl_thread_| should be true. 1640 // |gesture_scroll_on_impl_thread_| should be true.
1646 EXPECT_TRUE(input_handler_->gesture_scroll_on_impl_thread_for_testing()); 1641 EXPECT_TRUE(input_handler_->gesture_scroll_on_impl_thread_for_testing());
1647 1642
1648 expected_disposition_ = InputHandlerProxy::DID_HANDLE; 1643 expected_disposition_ = InputHandlerProxy::DID_HANDLE;
1649 VERIFY_AND_RESET_MOCKS(); 1644 VERIFY_AND_RESET_MOCKS();
1650 1645
1651 // On the fling start, we should schedule an animation but not actually start 1646 // On the fling start, we should schedule an animation but not actually start
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
1685 EXPECT_CALL( 1680 EXPECT_CALL(
1686 mock_input_handler_, 1681 mock_input_handler_,
1687 ScrollBy(testing::Property(&cc::ScrollState::delta_x, testing::Lt(0)))) 1682 ScrollBy(testing::Property(&cc::ScrollState::delta_x, testing::Lt(0))))
1688 .WillOnce(testing::Return(scroll_result_did_scroll_)); 1683 .WillOnce(testing::Return(scroll_result_did_scroll_));
1689 time += base::TimeDelta::FromMilliseconds(100); 1684 time += base::TimeDelta::FromMilliseconds(100);
1690 Animate(time); 1685 Animate(time);
1691 1686
1692 VERIFY_AND_RESET_MOCKS(); 1687 VERIFY_AND_RESET_MOCKS();
1693 1688
1694 EXPECT_CALL(mock_input_handler_, ScrollEnd(testing::_)); 1689 EXPECT_CALL(mock_input_handler_, ScrollEnd(testing::_));
1695 gesture_.type = WebInputEvent::GestureFlingCancel; 1690 gesture_.setType(WebInputEvent::GestureFlingCancel);
1696 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 1691 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
1697 1692
1698 // |gesture_scroll_on_impl_thread_| should be false once 1693 // |gesture_scroll_on_impl_thread_| should be false once
1699 // the fling has finished (note no GestureScrollEnd has been sent). 1694 // the fling has finished (note no GestureScrollEnd has been sent).
1700 EXPECT_TRUE(!input_handler_->gesture_scroll_on_impl_thread_for_testing()); 1695 EXPECT_TRUE(!input_handler_->gesture_scroll_on_impl_thread_for_testing());
1701 1696
1702 VERIFY_AND_RESET_MOCKS(); 1697 VERIFY_AND_RESET_MOCKS();
1703 } 1698 }
1704 1699
1705 TEST_P(InputHandlerProxyTest, 1700 TEST_P(InputHandlerProxyTest,
1706 BeginScrollWhenGestureScrollOnImplThreadFlagIsSet) { 1701 BeginScrollWhenGestureScrollOnImplThreadFlagIsSet) {
1707 // We shouldn't send any events to the widget for this gesture. 1702 // We shouldn't send any events to the widget for this gesture.
1708 expected_disposition_ = InputHandlerProxy::DID_HANDLE; 1703 expected_disposition_ = InputHandlerProxy::DID_HANDLE;
1709 VERIFY_AND_RESET_MOCKS(); 1704 VERIFY_AND_RESET_MOCKS();
1710 1705
1711 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) 1706 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_))
1712 .WillOnce(testing::Return(kImplThreadScrollState)); 1707 .WillOnce(testing::Return(kImplThreadScrollState));
1713 1708
1714 gesture_.type = WebInputEvent::GestureScrollBegin; 1709 gesture_.setType(WebInputEvent::GestureScrollBegin);
1715 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 1710 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
1716 1711
1717 // After sending a GestureScrollBegin, the member variable 1712 // After sending a GestureScrollBegin, the member variable
1718 // |gesture_scroll_on_impl_thread_| should be true. 1713 // |gesture_scroll_on_impl_thread_| should be true.
1719 EXPECT_TRUE(input_handler_->gesture_scroll_on_impl_thread_for_testing()); 1714 EXPECT_TRUE(input_handler_->gesture_scroll_on_impl_thread_for_testing());
1720 1715
1721 expected_disposition_ = InputHandlerProxy::DID_HANDLE; 1716 expected_disposition_ = InputHandlerProxy::DID_HANDLE;
1722 VERIFY_AND_RESET_MOCKS(); 1717 VERIFY_AND_RESET_MOCKS();
1723 1718
1724 // On the fling start, we should schedule an animation but not actually start 1719 // On the fling start, we should schedule an animation but not actually start
(...skipping 14 matching lines...) Expand all
1739 EXPECT_TRUE(input_handler_->gesture_scroll_on_impl_thread_for_testing()); 1734 EXPECT_TRUE(input_handler_->gesture_scroll_on_impl_thread_for_testing());
1740 1735
1741 VERIFY_AND_RESET_MOCKS(); 1736 VERIFY_AND_RESET_MOCKS();
1742 1737
1743 // gesture_scroll_on_impl_thread_ is still true when this scroll begins. As a 1738 // gesture_scroll_on_impl_thread_ is still true when this scroll begins. As a
1744 // result, this scroll begin will cancel the previous fling. 1739 // result, this scroll begin will cancel the previous fling.
1745 EXPECT_CALL(mock_input_handler_, ScrollEnd(testing::_)); 1740 EXPECT_CALL(mock_input_handler_, ScrollEnd(testing::_));
1746 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) 1741 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_))
1747 .WillOnce(testing::Return(kImplThreadScrollState)); 1742 .WillOnce(testing::Return(kImplThreadScrollState));
1748 1743
1749 gesture_.type = WebInputEvent::GestureScrollBegin; 1744 gesture_.setType(WebInputEvent::GestureScrollBegin);
1750 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 1745 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
1751 1746
1752 // After sending a GestureScrollBegin, the member variable 1747 // After sending a GestureScrollBegin, the member variable
1753 // |gesture_scroll_on_impl_thread_| should be true. 1748 // |gesture_scroll_on_impl_thread_| should be true.
1754 EXPECT_TRUE(input_handler_->gesture_scroll_on_impl_thread_for_testing()); 1749 EXPECT_TRUE(input_handler_->gesture_scroll_on_impl_thread_for_testing());
1755 VERIFY_AND_RESET_MOCKS(); 1750 VERIFY_AND_RESET_MOCKS();
1756 } 1751 }
1757 1752
1758 TEST_P(InputHandlerProxyTest, GestureFlingStopsAtContentEdge) { 1753 TEST_P(InputHandlerProxyTest, GestureFlingStopsAtContentEdge) {
1759 // We shouldn't send any events to the widget for this gesture. 1754 // We shouldn't send any events to the widget for this gesture.
1760 expected_disposition_ = InputHandlerProxy::DID_HANDLE; 1755 expected_disposition_ = InputHandlerProxy::DID_HANDLE;
1761 VERIFY_AND_RESET_MOCKS(); 1756 VERIFY_AND_RESET_MOCKS();
1762 1757
1763 // On the fling start, we should schedule an animation but not actually start 1758 // On the fling start, we should schedule an animation but not actually start
1764 // scrolling. 1759 // scrolling.
1765 gesture_.type = WebInputEvent::GestureFlingStart; 1760 gesture_.setType(WebInputEvent::GestureFlingStart);
1766 WebFloatPoint fling_delta = WebFloatPoint(100, 100); 1761 WebFloatPoint fling_delta = WebFloatPoint(100, 100);
1767 gesture_.data.flingStart.velocityX = fling_delta.x; 1762 gesture_.data.flingStart.velocityX = fling_delta.x;
1768 gesture_.data.flingStart.velocityY = fling_delta.y; 1763 gesture_.data.flingStart.velocityY = fling_delta.y;
1769 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) 1764 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_))
1770 .WillOnce(testing::Return(kImplThreadScrollState)); 1765 .WillOnce(testing::Return(kImplThreadScrollState));
1771 EXPECT_CALL(mock_input_handler_, ScrollEnd(testing::_)); 1766 EXPECT_CALL(mock_input_handler_, ScrollEnd(testing::_));
1772 EXPECT_SET_NEEDS_ANIMATE_INPUT(1); 1767 EXPECT_SET_NEEDS_ANIMATE_INPUT(1);
1773 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 1768 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
1774 VERIFY_AND_RESET_MOCKS(); 1769 VERIFY_AND_RESET_MOCKS();
1775 1770
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
1842 } 1837 }
1843 1838
1844 TEST_P(InputHandlerProxyTest, GestureFlingNotCancelledBySmallTimeDelta) { 1839 TEST_P(InputHandlerProxyTest, GestureFlingNotCancelledBySmallTimeDelta) {
1845 // We shouldn't send any events to the widget for this gesture. 1840 // We shouldn't send any events to the widget for this gesture.
1846 expected_disposition_ = InputHandlerProxy::DID_HANDLE; 1841 expected_disposition_ = InputHandlerProxy::DID_HANDLE;
1847 VERIFY_AND_RESET_MOCKS(); 1842 VERIFY_AND_RESET_MOCKS();
1848 1843
1849 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) 1844 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_))
1850 .WillOnce(testing::Return(kImplThreadScrollState)); 1845 .WillOnce(testing::Return(kImplThreadScrollState));
1851 1846
1852 gesture_.type = WebInputEvent::GestureScrollBegin; 1847 gesture_.setType(WebInputEvent::GestureScrollBegin);
1853 gesture_.sourceDevice = blink::WebGestureDeviceTouchscreen; 1848 gesture_.sourceDevice = blink::WebGestureDeviceTouchscreen;
1854 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 1849 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
1855 1850
1856 VERIFY_AND_RESET_MOCKS(); 1851 VERIFY_AND_RESET_MOCKS();
1857 1852
1858 // On the fling start, we should schedule an animation but not actually start 1853 // On the fling start, we should schedule an animation but not actually start
1859 // scrolling. 1854 // scrolling.
1860 base::TimeDelta dt = base::TimeDelta::FromMilliseconds(10); 1855 base::TimeDelta dt = base::TimeDelta::FromMilliseconds(10);
1861 base::TimeTicks time = base::TimeTicks() + dt; 1856 base::TimeTicks time = base::TimeTicks() + dt;
1862 WebFloatPoint fling_delta = WebFloatPoint(100, 0); 1857 WebFloatPoint fling_delta = WebFloatPoint(100, 0);
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
1922 cc::InputHandlerScrollResult overscroll; 1917 cc::InputHandlerScrollResult overscroll;
1923 overscroll.did_scroll = true; 1918 overscroll.did_scroll = true;
1924 overscroll.did_overscroll_root = true; 1919 overscroll.did_overscroll_root = true;
1925 1920
1926 // We shouldn't send any events to the widget for this gesture. 1921 // We shouldn't send any events to the widget for this gesture.
1927 expected_disposition_ = InputHandlerProxy::DID_HANDLE; 1922 expected_disposition_ = InputHandlerProxy::DID_HANDLE;
1928 VERIFY_AND_RESET_MOCKS(); 1923 VERIFY_AND_RESET_MOCKS();
1929 1924
1930 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) 1925 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_))
1931 .WillOnce(testing::Return(kImplThreadScrollState)); 1926 .WillOnce(testing::Return(kImplThreadScrollState));
1932 gesture_.type = WebInputEvent::GestureScrollBegin; 1927 gesture_.setType(WebInputEvent::GestureScrollBegin);
1933 gesture_.sourceDevice = blink::WebGestureDeviceTouchscreen; 1928 gesture_.sourceDevice = blink::WebGestureDeviceTouchscreen;
1934 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 1929 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
1935 VERIFY_AND_RESET_MOCKS(); 1930 VERIFY_AND_RESET_MOCKS();
1936 1931
1937 // On the fling start, we should schedule an animation but not actually start 1932 // On the fling start, we should schedule an animation but not actually start
1938 // scrolling. 1933 // scrolling.
1939 gesture_.type = WebInputEvent::GestureFlingStart; 1934 gesture_.setType(WebInputEvent::GestureFlingStart);
1940 WebFloatPoint fling_delta = WebFloatPoint(100, 100); 1935 WebFloatPoint fling_delta = WebFloatPoint(100, 100);
1941 gesture_.data.flingStart.velocityX = fling_delta.x; 1936 gesture_.data.flingStart.velocityX = fling_delta.x;
1942 gesture_.data.flingStart.velocityY = fling_delta.y; 1937 gesture_.data.flingStart.velocityY = fling_delta.y;
1943 EXPECT_CALL(mock_input_handler_, FlingScrollBegin()) 1938 EXPECT_CALL(mock_input_handler_, FlingScrollBegin())
1944 .WillOnce(testing::Return(kImplThreadScrollState)); 1939 .WillOnce(testing::Return(kImplThreadScrollState));
1945 EXPECT_SET_NEEDS_ANIMATE_INPUT(1); 1940 EXPECT_SET_NEEDS_ANIMATE_INPUT(1);
1946 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 1941 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
1947 VERIFY_AND_RESET_MOCKS(); 1942 VERIFY_AND_RESET_MOCKS();
1948 1943
1949 // The first animate doesn't cause any scrolling. 1944 // The first animate doesn't cause any scrolling.
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
2032 .WillOnce(testing::Return(cc::EventListenerProperties::kNone)); 2027 .WillOnce(testing::Return(cc::EventListenerProperties::kNone));
2033 EXPECT_CALL( 2028 EXPECT_CALL(
2034 mock_input_handler_, 2029 mock_input_handler_,
2035 GetEventListenerProperties(cc::EventListenerClass::kTouchEndOrCancel)) 2030 GetEventListenerProperties(cc::EventListenerClass::kTouchEndOrCancel))
2036 .WillOnce(testing::Return(cc::EventListenerProperties::kNone)); 2031 .WillOnce(testing::Return(cc::EventListenerProperties::kNone));
2037 EXPECT_CALL(mock_input_handler_, EventListenerTypeForTouchStartAt(testing::_)) 2032 EXPECT_CALL(mock_input_handler_, EventListenerTypeForTouchStartAt(testing::_))
2038 .Times(2) 2033 .Times(2)
2039 .WillRepeatedly(testing::Return( 2034 .WillRepeatedly(testing::Return(
2040 cc::InputHandler::TouchStartEventListenerType::NO_HANDLER)); 2035 cc::InputHandler::TouchStartEventListenerType::NO_HANDLER));
2041 2036
2042 WebTouchEvent touch; 2037 WebTouchEvent touch(WebInputEvent::TouchStart, WebInputEvent::NoModifiers,
2043 touch.type = WebInputEvent::TouchStart; 2038 WebInputEvent::TimeStampForTesting);
2044 2039
2045 touch.touchesLength = 3; 2040 touch.touchesLength = 3;
2046 touch.touches[0] = CreateWebTouchPoint(WebTouchPoint::StateStationary, 0, 0); 2041 touch.touches[0] = CreateWebTouchPoint(WebTouchPoint::StateStationary, 0, 0);
2047 touch.touches[1] = CreateWebTouchPoint(WebTouchPoint::StatePressed, 10, 10); 2042 touch.touches[1] = CreateWebTouchPoint(WebTouchPoint::StatePressed, 10, 10);
2048 touch.touches[2] = CreateWebTouchPoint(WebTouchPoint::StatePressed, -10, 10); 2043 touch.touches[2] = CreateWebTouchPoint(WebTouchPoint::StatePressed, -10, 10);
2049 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(touch)); 2044 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(touch));
2050 2045
2051 VERIFY_AND_RESET_MOCKS(); 2046 VERIFY_AND_RESET_MOCKS();
2052 } 2047 }
2053 2048
2054 TEST_P(InputHandlerProxyTest, MultiTouchPointHitTestPositive) { 2049 TEST_P(InputHandlerProxyTest, MultiTouchPointHitTestPositive) {
2055 // One of the touch points is on a touch-region. So the event should be sent 2050 // One of the touch points is on a touch-region. So the event should be sent
2056 // to the main thread. 2051 // to the main thread.
2057 expected_disposition_ = InputHandlerProxy::DID_NOT_HANDLE; 2052 expected_disposition_ = InputHandlerProxy::DID_NOT_HANDLE;
2058 VERIFY_AND_RESET_MOCKS(); 2053 VERIFY_AND_RESET_MOCKS();
2059 2054
2060 EXPECT_CALL(mock_input_handler_, 2055 EXPECT_CALL(mock_input_handler_,
2061 EventListenerTypeForTouchStartAt( 2056 EventListenerTypeForTouchStartAt(
2062 testing::Property(&gfx::Point::x, testing::Eq(0)))) 2057 testing::Property(&gfx::Point::x, testing::Eq(0))))
2063 .WillOnce(testing::Return( 2058 .WillOnce(testing::Return(
2064 cc::InputHandler::TouchStartEventListenerType::NO_HANDLER)); 2059 cc::InputHandler::TouchStartEventListenerType::NO_HANDLER));
2065 EXPECT_CALL(mock_input_handler_, 2060 EXPECT_CALL(mock_input_handler_,
2066 EventListenerTypeForTouchStartAt( 2061 EventListenerTypeForTouchStartAt(
2067 testing::Property(&gfx::Point::x, testing::Gt(0)))) 2062 testing::Property(&gfx::Point::x, testing::Gt(0))))
2068 .WillOnce(testing::Return(cc::InputHandler::TouchStartEventListenerType:: 2063 .WillOnce(testing::Return(cc::InputHandler::TouchStartEventListenerType::
2069 HANDLER_ON_SCROLLING_LAYER)); 2064 HANDLER_ON_SCROLLING_LAYER));
2070 // Since the second touch point hits a touch-region, there should be no 2065 // Since the second touch point hits a touch-region, there should be no
2071 // hit-testing for the third touch point. 2066 // hit-testing for the third touch point.
2072 2067
2073 WebTouchEvent touch; 2068 WebTouchEvent touch(WebInputEvent::TouchStart, WebInputEvent::NoModifiers,
2074 touch.type = WebInputEvent::TouchStart; 2069 WebInputEvent::TimeStampForTesting);
2075 2070
2076 touch.touchesLength = 3; 2071 touch.touchesLength = 3;
2077 touch.touches[0] = CreateWebTouchPoint(WebTouchPoint::StatePressed, 0, 0); 2072 touch.touches[0] = CreateWebTouchPoint(WebTouchPoint::StatePressed, 0, 0);
2078 touch.touches[1] = CreateWebTouchPoint(WebTouchPoint::StatePressed, 10, 10); 2073 touch.touches[1] = CreateWebTouchPoint(WebTouchPoint::StatePressed, 10, 10);
2079 touch.touches[2] = CreateWebTouchPoint(WebTouchPoint::StatePressed, -10, 10); 2074 touch.touches[2] = CreateWebTouchPoint(WebTouchPoint::StatePressed, -10, 10);
2080 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(touch)); 2075 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(touch));
2081 2076
2082 VERIFY_AND_RESET_MOCKS(); 2077 VERIFY_AND_RESET_MOCKS();
2083 } 2078 }
2084 2079
2085 TEST_P(InputHandlerProxyTest, MultiTouchPointHitTestPassivePositive) { 2080 TEST_P(InputHandlerProxyTest, MultiTouchPointHitTestPassivePositive) {
2086 // One of the touch points is not on a touch-region. So the event should be 2081 // One of the touch points is not on a touch-region. So the event should be
2087 // sent to the impl thread. 2082 // sent to the impl thread.
2088 expected_disposition_ = InputHandlerProxy::DID_HANDLE_NON_BLOCKING; 2083 expected_disposition_ = InputHandlerProxy::DID_HANDLE_NON_BLOCKING;
2089 VERIFY_AND_RESET_MOCKS(); 2084 VERIFY_AND_RESET_MOCKS();
2090 2085
2091 EXPECT_CALL( 2086 EXPECT_CALL(
2092 mock_input_handler_, 2087 mock_input_handler_,
2093 GetEventListenerProperties(cc::EventListenerClass::kTouchStartOrMove)) 2088 GetEventListenerProperties(cc::EventListenerClass::kTouchStartOrMove))
2094 .WillRepeatedly(testing::Return(cc::EventListenerProperties::kPassive)); 2089 .WillRepeatedly(testing::Return(cc::EventListenerProperties::kPassive));
2095 EXPECT_CALL(mock_input_handler_, EventListenerTypeForTouchStartAt(testing::_)) 2090 EXPECT_CALL(mock_input_handler_, EventListenerTypeForTouchStartAt(testing::_))
2096 .WillRepeatedly(testing::Return( 2091 .WillRepeatedly(testing::Return(
2097 cc::InputHandler::TouchStartEventListenerType::NO_HANDLER)); 2092 cc::InputHandler::TouchStartEventListenerType::NO_HANDLER));
2098 2093
2099 WebTouchEvent touch; 2094 WebTouchEvent touch(WebInputEvent::TouchStart, WebInputEvent::NoModifiers,
2100 touch.type = WebInputEvent::TouchStart; 2095 WebInputEvent::TimeStampForTesting);
2101 2096
2102 touch.touchesLength = 3; 2097 touch.touchesLength = 3;
2103 touch.touches[0] = CreateWebTouchPoint(WebTouchPoint::StatePressed, 0, 0); 2098 touch.touches[0] = CreateWebTouchPoint(WebTouchPoint::StatePressed, 0, 0);
2104 touch.touches[1] = CreateWebTouchPoint(WebTouchPoint::StatePressed, 10, 10); 2099 touch.touches[1] = CreateWebTouchPoint(WebTouchPoint::StatePressed, 10, 10);
2105 touch.touches[2] = CreateWebTouchPoint(WebTouchPoint::StatePressed, -10, 10); 2100 touch.touches[2] = CreateWebTouchPoint(WebTouchPoint::StatePressed, -10, 10);
2106 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(touch)); 2101 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(touch));
2107 2102
2108 VERIFY_AND_RESET_MOCKS(); 2103 VERIFY_AND_RESET_MOCKS();
2109 } 2104 }
2110 2105
2111 TEST_P(InputHandlerProxyTest, TouchStartPassiveAndTouchEndBlocking) { 2106 TEST_P(InputHandlerProxyTest, TouchStartPassiveAndTouchEndBlocking) {
2112 // The touch start is not in a touch-region but there is a touch end handler 2107 // The touch start is not in a touch-region but there is a touch end handler
2113 // so to maintain targeting we need to dispatch the touch start as 2108 // so to maintain targeting we need to dispatch the touch start as
2114 // non-blocking but drop all touch moves. 2109 // non-blocking but drop all touch moves.
2115 expected_disposition_ = InputHandlerProxy::DID_HANDLE_NON_BLOCKING; 2110 expected_disposition_ = InputHandlerProxy::DID_HANDLE_NON_BLOCKING;
2116 VERIFY_AND_RESET_MOCKS(); 2111 VERIFY_AND_RESET_MOCKS();
2117 2112
2118 EXPECT_CALL( 2113 EXPECT_CALL(
2119 mock_input_handler_, 2114 mock_input_handler_,
2120 GetEventListenerProperties(cc::EventListenerClass::kTouchStartOrMove)) 2115 GetEventListenerProperties(cc::EventListenerClass::kTouchStartOrMove))
2121 .WillOnce(testing::Return(cc::EventListenerProperties::kNone)); 2116 .WillOnce(testing::Return(cc::EventListenerProperties::kNone));
2122 EXPECT_CALL( 2117 EXPECT_CALL(
2123 mock_input_handler_, 2118 mock_input_handler_,
2124 GetEventListenerProperties(cc::EventListenerClass::kTouchEndOrCancel)) 2119 GetEventListenerProperties(cc::EventListenerClass::kTouchEndOrCancel))
2125 .WillOnce(testing::Return(cc::EventListenerProperties::kBlocking)); 2120 .WillOnce(testing::Return(cc::EventListenerProperties::kBlocking));
2126 EXPECT_CALL(mock_input_handler_, EventListenerTypeForTouchStartAt(testing::_)) 2121 EXPECT_CALL(mock_input_handler_, EventListenerTypeForTouchStartAt(testing::_))
2127 .WillOnce(testing::Return( 2122 .WillOnce(testing::Return(
2128 cc::InputHandler::TouchStartEventListenerType::NO_HANDLER)); 2123 cc::InputHandler::TouchStartEventListenerType::NO_HANDLER));
2129 2124
2130 WebTouchEvent touch; 2125 WebTouchEvent touch(WebInputEvent::TouchStart, WebInputEvent::NoModifiers,
2131 touch.type = WebInputEvent::TouchStart; 2126 WebInputEvent::TimeStampForTesting);
2132 touch.touchesLength = 1; 2127 touch.touchesLength = 1;
2133 touch.touches[0] = CreateWebTouchPoint(WebTouchPoint::StatePressed, 0, 0); 2128 touch.touches[0] = CreateWebTouchPoint(WebTouchPoint::StatePressed, 0, 0);
2134 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(touch)); 2129 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(touch));
2135 2130
2136 touch.type = WebInputEvent::TouchMove; 2131 touch.setType(WebInputEvent::TouchMove);
2137 touch.touchesLength = 1; 2132 touch.touchesLength = 1;
2138 touch.touches[0] = CreateWebTouchPoint(WebTouchPoint::StatePressed, 10, 10); 2133 touch.touches[0] = CreateWebTouchPoint(WebTouchPoint::StatePressed, 10, 10);
2139 EXPECT_EQ(InputHandlerProxy::DROP_EVENT, 2134 EXPECT_EQ(InputHandlerProxy::DROP_EVENT,
2140 input_handler_->HandleInputEvent(touch)); 2135 input_handler_->HandleInputEvent(touch));
2141 VERIFY_AND_RESET_MOCKS(); 2136 VERIFY_AND_RESET_MOCKS();
2142 } 2137 }
2143 2138
2144 TEST_P(InputHandlerProxyTest, GestureFlingCancelledByKeyboardEvent) { 2139 TEST_P(InputHandlerProxyTest, GestureFlingCancelledByKeyboardEvent) {
2145 // We shouldn't send any events to the widget for this gesture. 2140 // We shouldn't send any events to the widget for this gesture.
2146 expected_disposition_ = InputHandlerProxy::DID_HANDLE; 2141 expected_disposition_ = InputHandlerProxy::DID_HANDLE;
2147 VERIFY_AND_RESET_MOCKS(); 2142 VERIFY_AND_RESET_MOCKS();
2148 2143
2149 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) 2144 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_))
2150 .WillOnce(testing::Return(kImplThreadScrollState)); 2145 .WillOnce(testing::Return(kImplThreadScrollState));
2151 gesture_.type = WebInputEvent::GestureScrollBegin; 2146 gesture_.setType(WebInputEvent::GestureScrollBegin);
2152 gesture_.sourceDevice = blink::WebGestureDeviceTouchscreen; 2147 gesture_.sourceDevice = blink::WebGestureDeviceTouchscreen;
2153 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 2148 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
2154 EXPECT_TRUE(input_handler_->gesture_scroll_on_impl_thread_for_testing()); 2149 EXPECT_TRUE(input_handler_->gesture_scroll_on_impl_thread_for_testing());
2155 VERIFY_AND_RESET_MOCKS(); 2150 VERIFY_AND_RESET_MOCKS();
2156 2151
2157 // Keyboard events received during a scroll should have no effect. 2152 // Keyboard events received during a scroll should have no effect.
2158 WebKeyboardEvent key_event; 2153 WebKeyboardEvent key_event(WebInputEvent::KeyDown, WebInputEvent::NoModifiers,
2159 key_event.type = WebInputEvent::KeyDown; 2154 WebInputEvent::TimeStampForTesting);
2160 EXPECT_EQ(InputHandlerProxy::DID_NOT_HANDLE, 2155 EXPECT_EQ(InputHandlerProxy::DID_NOT_HANDLE,
2161 input_handler_->HandleInputEvent(key_event)); 2156 input_handler_->HandleInputEvent(key_event));
2162 EXPECT_TRUE(input_handler_->gesture_scroll_on_impl_thread_for_testing()); 2157 EXPECT_TRUE(input_handler_->gesture_scroll_on_impl_thread_for_testing());
2163 VERIFY_AND_RESET_MOCKS(); 2158 VERIFY_AND_RESET_MOCKS();
2164 2159
2165 // On the fling start, animation should be scheduled, but no scrolling occurs. 2160 // On the fling start, animation should be scheduled, but no scrolling occurs.
2166 gesture_.type = WebInputEvent::GestureFlingStart; 2161 gesture_.setType(WebInputEvent::GestureFlingStart);
2167 WebFloatPoint fling_delta = WebFloatPoint(100, 100); 2162 WebFloatPoint fling_delta = WebFloatPoint(100, 100);
2168 gesture_.data.flingStart.velocityX = fling_delta.x; 2163 gesture_.data.flingStart.velocityX = fling_delta.x;
2169 gesture_.data.flingStart.velocityY = fling_delta.y; 2164 gesture_.data.flingStart.velocityY = fling_delta.y;
2170 EXPECT_CALL(mock_input_handler_, FlingScrollBegin()) 2165 EXPECT_CALL(mock_input_handler_, FlingScrollBegin())
2171 .WillOnce(testing::Return(kImplThreadScrollState)); 2166 .WillOnce(testing::Return(kImplThreadScrollState));
2172 EXPECT_SET_NEEDS_ANIMATE_INPUT(1); 2167 EXPECT_SET_NEEDS_ANIMATE_INPUT(1);
2173 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 2168 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
2174 EXPECT_TRUE(input_handler_->gesture_scroll_on_impl_thread_for_testing()); 2169 EXPECT_TRUE(input_handler_->gesture_scroll_on_impl_thread_for_testing());
2175 VERIFY_AND_RESET_MOCKS(); 2170 VERIFY_AND_RESET_MOCKS();
2176 2171
2177 // Keyboard events received during a fling should cancel the active fling. 2172 // Keyboard events received during a fling should cancel the active fling.
2178 EXPECT_CALL(mock_input_handler_, ScrollEnd(testing::_)); 2173 EXPECT_CALL(mock_input_handler_, ScrollEnd(testing::_));
2179 EXPECT_EQ(InputHandlerProxy::DID_NOT_HANDLE, 2174 EXPECT_EQ(InputHandlerProxy::DID_NOT_HANDLE,
2180 input_handler_->HandleInputEvent(key_event)); 2175 input_handler_->HandleInputEvent(key_event));
2181 EXPECT_FALSE(input_handler_->gesture_scroll_on_impl_thread_for_testing()); 2176 EXPECT_FALSE(input_handler_->gesture_scroll_on_impl_thread_for_testing());
2182 VERIFY_AND_RESET_MOCKS(); 2177 VERIFY_AND_RESET_MOCKS();
2183 2178
2184 // The call to animate should have no effect, as the fling was cancelled. 2179 // The call to animate should have no effect, as the fling was cancelled.
2185 base::TimeTicks time = base::TimeTicks() + base::TimeDelta::FromSeconds(10); 2180 base::TimeTicks time = base::TimeTicks() + base::TimeDelta::FromSeconds(10);
2186 Animate(time); 2181 Animate(time);
2187 VERIFY_AND_RESET_MOCKS(); 2182 VERIFY_AND_RESET_MOCKS();
2188 2183
2189 // A fling cancel should be dropped, as there is nothing to cancel. 2184 // A fling cancel should be dropped, as there is nothing to cancel.
2190 gesture_.type = WebInputEvent::GestureFlingCancel; 2185 gesture_.setType(WebInputEvent::GestureFlingCancel);
2191 EXPECT_EQ(InputHandlerProxy::DROP_EVENT, 2186 EXPECT_EQ(InputHandlerProxy::DROP_EVENT,
2192 input_handler_->HandleInputEvent(gesture_)); 2187 input_handler_->HandleInputEvent(gesture_));
2193 EXPECT_FALSE(input_handler_->gesture_scroll_on_impl_thread_for_testing()); 2188 EXPECT_FALSE(input_handler_->gesture_scroll_on_impl_thread_for_testing());
2194 } 2189 }
2195 2190
2196 TEST_P(InputHandlerProxyTest, GestureFlingCancelledByWheelEvent) { 2191 TEST_P(InputHandlerProxyTest, GestureFlingCancelledByWheelEvent) {
2197 // We shouldn't send any events to the widget for this gesture. 2192 // We shouldn't send any events to the widget for this gesture.
2198 expected_disposition_ = InputHandlerProxy::DID_HANDLE; 2193 expected_disposition_ = InputHandlerProxy::DID_HANDLE;
2199 VERIFY_AND_RESET_MOCKS(); 2194 VERIFY_AND_RESET_MOCKS();
2200 2195
2201 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) 2196 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_))
2202 .WillOnce(testing::Return(kImplThreadScrollState)); 2197 .WillOnce(testing::Return(kImplThreadScrollState));
2203 2198
2204 gesture_.type = WebInputEvent::GestureScrollBegin; 2199 gesture_.setType(WebInputEvent::GestureScrollBegin);
2205 gesture_.sourceDevice = blink::WebGestureDeviceTouchscreen; 2200 gesture_.sourceDevice = blink::WebGestureDeviceTouchscreen;
2206 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 2201 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
2207 EXPECT_TRUE(input_handler_->gesture_scroll_on_impl_thread_for_testing()); 2202 EXPECT_TRUE(input_handler_->gesture_scroll_on_impl_thread_for_testing());
2208 VERIFY_AND_RESET_MOCKS(); 2203 VERIFY_AND_RESET_MOCKS();
2209 2204
2210 // Wheel events received during a scroll shouldn't cancel the fling, but will 2205 // Wheel events received during a scroll shouldn't cancel the fling, but will
2211 // cause scrolling. 2206 // cause scrolling.
2212 cc::InputHandlerScrollResult result; 2207 cc::InputHandlerScrollResult result;
2213 2208
2214 EXPECT_CALL(mock_input_handler_, 2209 EXPECT_CALL(mock_input_handler_,
2215 GetEventListenerProperties(cc::EventListenerClass::kMouseWheel)) 2210 GetEventListenerProperties(cc::EventListenerClass::kMouseWheel))
2216 .WillOnce(testing::Return(cc::EventListenerProperties::kBlocking)); 2211 .WillOnce(testing::Return(cc::EventListenerProperties::kBlocking));
2217 2212
2218 WebMouseWheelEvent wheel_event; 2213 WebMouseWheelEvent wheel_event(WebInputEvent::MouseWheel,
2219 wheel_event.type = WebInputEvent::MouseWheel; 2214 WebInputEvent::NoModifiers,
2215 WebInputEvent::TimeStampForTesting);
2220 input_handler_->HandleInputEvent(wheel_event); 2216 input_handler_->HandleInputEvent(wheel_event);
2221 EXPECT_TRUE(input_handler_->gesture_scroll_on_impl_thread_for_testing()); 2217 EXPECT_TRUE(input_handler_->gesture_scroll_on_impl_thread_for_testing());
2222 VERIFY_AND_RESET_MOCKS(); 2218 VERIFY_AND_RESET_MOCKS();
2223 2219
2224 // On the fling start, animation should be scheduled, but no scrolling occurs. 2220 // On the fling start, animation should be scheduled, but no scrolling occurs.
2225 gesture_.type = WebInputEvent::GestureFlingStart; 2221 gesture_.setType(WebInputEvent::GestureFlingStart);
2226 WebFloatPoint fling_delta = WebFloatPoint(100, 100); 2222 WebFloatPoint fling_delta = WebFloatPoint(100, 100);
2227 gesture_.data.flingStart.velocityX = fling_delta.x; 2223 gesture_.data.flingStart.velocityX = fling_delta.x;
2228 gesture_.data.flingStart.velocityY = fling_delta.y; 2224 gesture_.data.flingStart.velocityY = fling_delta.y;
2229 EXPECT_CALL(mock_input_handler_, FlingScrollBegin()) 2225 EXPECT_CALL(mock_input_handler_, FlingScrollBegin())
2230 .WillOnce(testing::Return(kImplThreadScrollState)); 2226 .WillOnce(testing::Return(kImplThreadScrollState));
2231 EXPECT_SET_NEEDS_ANIMATE_INPUT(1); 2227 EXPECT_SET_NEEDS_ANIMATE_INPUT(1);
2232 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 2228 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
2233 EXPECT_TRUE(input_handler_->gesture_scroll_on_impl_thread_for_testing()); 2229 EXPECT_TRUE(input_handler_->gesture_scroll_on_impl_thread_for_testing());
2234 VERIFY_AND_RESET_MOCKS(); 2230 VERIFY_AND_RESET_MOCKS();
2235 2231
2236 // Wheel events received during a fling should cancel the active fling, and 2232 // Wheel events received during a fling should cancel the active fling, and
2237 // cause a scroll. 2233 // cause a scroll.
2238 EXPECT_CALL(mock_input_handler_, ScrollEnd(testing::_)); 2234 EXPECT_CALL(mock_input_handler_, ScrollEnd(testing::_));
2239 2235
2240 EXPECT_CALL(mock_input_handler_, 2236 EXPECT_CALL(mock_input_handler_,
2241 GetEventListenerProperties(cc::EventListenerClass::kMouseWheel)) 2237 GetEventListenerProperties(cc::EventListenerClass::kMouseWheel))
2242 .WillOnce(testing::Return(cc::EventListenerProperties::kBlocking)); 2238 .WillOnce(testing::Return(cc::EventListenerProperties::kBlocking));
2243 2239
2244 2240
2245 input_handler_->HandleInputEvent(wheel_event); 2241 input_handler_->HandleInputEvent(wheel_event);
2246 EXPECT_FALSE(input_handler_->gesture_scroll_on_impl_thread_for_testing()); 2242 EXPECT_FALSE(input_handler_->gesture_scroll_on_impl_thread_for_testing());
2247 VERIFY_AND_RESET_MOCKS(); 2243 VERIFY_AND_RESET_MOCKS();
2248 2244
2249 // The call to animate should have no effect, as the fling was cancelled. 2245 // The call to animate should have no effect, as the fling was cancelled.
2250 base::TimeTicks time = base::TimeTicks() + base::TimeDelta::FromSeconds(10); 2246 base::TimeTicks time = base::TimeTicks() + base::TimeDelta::FromSeconds(10);
2251 Animate(time); 2247 Animate(time);
2252 VERIFY_AND_RESET_MOCKS(); 2248 VERIFY_AND_RESET_MOCKS();
2253 2249
2254 // A fling cancel should be dropped, as there is nothing to cancel. 2250 // A fling cancel should be dropped, as there is nothing to cancel.
2255 gesture_.type = WebInputEvent::GestureFlingCancel; 2251 gesture_.setType(WebInputEvent::GestureFlingCancel);
2256 EXPECT_EQ(InputHandlerProxy::DROP_EVENT, 2252 EXPECT_EQ(InputHandlerProxy::DROP_EVENT,
2257 input_handler_->HandleInputEvent(gesture_)); 2253 input_handler_->HandleInputEvent(gesture_));
2258 EXPECT_FALSE(input_handler_->gesture_scroll_on_impl_thread_for_testing()); 2254 EXPECT_FALSE(input_handler_->gesture_scroll_on_impl_thread_for_testing());
2259 } 2255 }
2260 2256
2261 TEST_P(InputHandlerProxyTest, GestureFlingWithNegativeTimeDelta) { 2257 TEST_P(InputHandlerProxyTest, GestureFlingWithNegativeTimeDelta) {
2262 // We shouldn't send any events to the widget for this gesture. 2258 // We shouldn't send any events to the widget for this gesture.
2263 expected_disposition_ = InputHandlerProxy::DID_HANDLE; 2259 expected_disposition_ = InputHandlerProxy::DID_HANDLE;
2264 VERIFY_AND_RESET_MOCKS(); 2260 VERIFY_AND_RESET_MOCKS();
2265 2261
2266 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) 2262 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_))
2267 .WillOnce(testing::Return(kImplThreadScrollState)); 2263 .WillOnce(testing::Return(kImplThreadScrollState));
2268 2264
2269 gesture_.type = WebInputEvent::GestureScrollBegin; 2265 gesture_.setType(WebInputEvent::GestureScrollBegin);
2270 gesture_.sourceDevice = blink::WebGestureDeviceTouchscreen; 2266 gesture_.sourceDevice = blink::WebGestureDeviceTouchscreen;
2271 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 2267 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
2272 2268
2273 VERIFY_AND_RESET_MOCKS(); 2269 VERIFY_AND_RESET_MOCKS();
2274 2270
2275 // On the fling start, we should schedule an animation but not actually start 2271 // On the fling start, we should schedule an animation but not actually start
2276 // scrolling. 2272 // scrolling.
2277 base::TimeDelta dt = base::TimeDelta::FromMilliseconds(10); 2273 base::TimeDelta dt = base::TimeDelta::FromMilliseconds(10);
2278 base::TimeTicks time = base::TimeTicks() + dt; 2274 base::TimeTicks time = base::TimeTicks() + dt;
2279 WebFloatPoint fling_delta = WebFloatPoint(100, 0); 2275 WebFloatPoint fling_delta = WebFloatPoint(100, 0);
(...skipping 29 matching lines...) Expand all
2309 EXPECT_CALL( 2305 EXPECT_CALL(
2310 mock_input_handler_, 2306 mock_input_handler_,
2311 ScrollBy(testing::Property(&cc::ScrollState::delta_x, testing::Lt(0)))) 2307 ScrollBy(testing::Property(&cc::ScrollState::delta_x, testing::Lt(0))))
2312 .WillOnce(testing::Return(scroll_result_did_scroll_)); 2308 .WillOnce(testing::Return(scroll_result_did_scroll_));
2313 2309
2314 Animate(time + base::TimeDelta::FromMilliseconds(1)); 2310 Animate(time + base::TimeDelta::FromMilliseconds(1));
2315 2311
2316 VERIFY_AND_RESET_MOCKS(); 2312 VERIFY_AND_RESET_MOCKS();
2317 2313
2318 EXPECT_CALL(mock_input_handler_, ScrollEnd(testing::_)); 2314 EXPECT_CALL(mock_input_handler_, ScrollEnd(testing::_));
2319 gesture_.type = WebInputEvent::GestureFlingCancel; 2315 gesture_.setType(WebInputEvent::GestureFlingCancel);
2320 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 2316 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
2321 2317
2322 VERIFY_AND_RESET_MOCKS(); 2318 VERIFY_AND_RESET_MOCKS();
2323 } 2319 }
2324 2320
2325 TEST_P(InputHandlerProxyTest, FlingBoost) { 2321 TEST_P(InputHandlerProxyTest, FlingBoost) {
2326 base::TimeDelta dt = base::TimeDelta::FromMilliseconds(10); 2322 base::TimeDelta dt = base::TimeDelta::FromMilliseconds(10);
2327 base::TimeTicks time = base::TimeTicks() + dt; 2323 base::TimeTicks time = base::TimeTicks() + dt;
2328 base::TimeTicks last_animate_time = time; 2324 base::TimeTicks last_animate_time = time;
2329 WebFloatPoint fling_delta = WebFloatPoint(1000, 0); 2325 WebFloatPoint fling_delta = WebFloatPoint(1000, 0);
2330 WebPoint fling_point = WebPoint(7, 13); 2326 WebPoint fling_point = WebPoint(7, 13);
2331 StartFling( 2327 StartFling(
2332 time, blink::WebGestureDeviceTouchscreen, fling_delta, fling_point); 2328 time, blink::WebGestureDeviceTouchscreen, fling_delta, fling_point);
2333 2329
2334 // Now cancel the fling. The fling cancellation should be deferred to allow 2330 // Now cancel the fling. The fling cancellation should be deferred to allow
2335 // fling boosting events to arrive. 2331 // fling boosting events to arrive.
2336 time += dt; 2332 time += dt;
2337 CancelFling(time); 2333 CancelFling(time);
2338 2334
2339 // The GestureScrollBegin should be swallowed by the fling if it hits the same 2335 // The GestureScrollBegin should be swallowed by the fling if it hits the same
2340 // scrolling layer. 2336 // scrolling layer.
2341 EXPECT_CALL(mock_input_handler_, 2337 EXPECT_CALL(mock_input_handler_,
2342 IsCurrentlyScrollingLayerAt(testing::_, testing::_)) 2338 IsCurrentlyScrollingLayerAt(testing::_, testing::_))
2343 .WillOnce(testing::Return(true)); 2339 .WillOnce(testing::Return(true));
2344 2340
2345 time += dt; 2341 time += dt;
2346 gesture_.timeStampSeconds = InSecondsF(time); 2342 gesture_.setTimeStampSeconds(InSecondsF(time));
2347 gesture_.type = WebInputEvent::GestureScrollBegin; 2343 gesture_.setType(WebInputEvent::GestureScrollBegin);
2348 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 2344 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
2349 2345
2350 VERIFY_AND_RESET_MOCKS(); 2346 VERIFY_AND_RESET_MOCKS();
2351 2347
2352 // Animate calls within the deferred cancellation window should continue. 2348 // Animate calls within the deferred cancellation window should continue.
2353 time += dt; 2349 time += dt;
2354 float expected_delta = 2350 float expected_delta =
2355 (time - last_animate_time).InSecondsF() * -fling_delta.x; 2351 (time - last_animate_time).InSecondsF() * -fling_delta.x;
2356 EXPECT_SET_NEEDS_ANIMATE_INPUT(1); 2352 EXPECT_SET_NEEDS_ANIMATE_INPUT(1);
2357 EXPECT_CALL(mock_input_handler_, 2353 EXPECT_CALL(mock_input_handler_,
2358 ScrollBy(testing::Property(&cc::ScrollState::delta_x, 2354 ScrollBy(testing::Property(&cc::ScrollState::delta_x,
2359 testing::Eq(expected_delta)))) 2355 testing::Eq(expected_delta))))
2360 .WillOnce(testing::Return(scroll_result_did_scroll_)); 2356 .WillOnce(testing::Return(scroll_result_did_scroll_));
2361 Animate(time); 2357 Animate(time);
2362 last_animate_time = time; 2358 last_animate_time = time;
2363 2359
2364 VERIFY_AND_RESET_MOCKS(); 2360 VERIFY_AND_RESET_MOCKS();
2365 2361
2366 // GestureScrollUpdates in the same direction and at sufficient speed should 2362 // GestureScrollUpdates in the same direction and at sufficient speed should
2367 // be swallowed by the fling. 2363 // be swallowed by the fling.
2368 time += dt; 2364 time += dt;
2369 gesture_.timeStampSeconds = InSecondsF(time); 2365 gesture_.setTimeStampSeconds(InSecondsF(time));
2370 gesture_.type = WebInputEvent::GestureScrollUpdate; 2366 gesture_.setType(WebInputEvent::GestureScrollUpdate);
2371 gesture_.data.scrollUpdate.deltaX = fling_delta.x; 2367 gesture_.data.scrollUpdate.deltaX = fling_delta.x;
2372 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 2368 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
2373 2369
2374 VERIFY_AND_RESET_MOCKS(); 2370 VERIFY_AND_RESET_MOCKS();
2375 2371
2376 // Animate calls within the deferred cancellation window should continue. 2372 // Animate calls within the deferred cancellation window should continue.
2377 time += dt; 2373 time += dt;
2378 expected_delta = (time - last_animate_time).InSecondsF() * -fling_delta.x; 2374 expected_delta = (time - last_animate_time).InSecondsF() * -fling_delta.x;
2379 EXPECT_SET_NEEDS_ANIMATE_INPUT(1); 2375 EXPECT_SET_NEEDS_ANIMATE_INPUT(1);
2380 EXPECT_CALL(mock_input_handler_, 2376 EXPECT_CALL(mock_input_handler_,
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
2433 .WillOnce(testing::Return(scroll_result_did_scroll_)); 2429 .WillOnce(testing::Return(scroll_result_did_scroll_));
2434 Animate(time); 2430 Animate(time);
2435 last_animate_time = time; 2431 last_animate_time = time;
2436 2432
2437 VERIFY_AND_RESET_MOCKS(); 2433 VERIFY_AND_RESET_MOCKS();
2438 2434
2439 // GestureFlingCancel should terminate the fling if no boosting gestures are 2435 // GestureFlingCancel should terminate the fling if no boosting gestures are
2440 // received within the timeout window. 2436 // received within the timeout window.
2441 2437
2442 time += dt; 2438 time += dt;
2443 gesture_.timeStampSeconds = InSecondsF(time); 2439 gesture_.setTimeStampSeconds(InSecondsF(time));
2444 gesture_.type = WebInputEvent::GestureFlingCancel; 2440 gesture_.setType(WebInputEvent::GestureFlingCancel);
2445 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 2441 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
2446 2442
2447 VERIFY_AND_RESET_MOCKS(); 2443 VERIFY_AND_RESET_MOCKS();
2448 2444
2449 time += base::TimeDelta::FromMilliseconds(100); 2445 time += base::TimeDelta::FromMilliseconds(100);
2450 EXPECT_CALL(mock_input_handler_, ScrollEnd(testing::_)); 2446 EXPECT_CALL(mock_input_handler_, ScrollEnd(testing::_));
2451 Animate(time); 2447 Animate(time);
2452 2448
2453 VERIFY_AND_RESET_MOCKS(); 2449 VERIFY_AND_RESET_MOCKS();
2454 } 2450 }
(...skipping 14 matching lines...) Expand all
2469 // If the GestureScrollBegin targets a different layer, the fling should be 2465 // If the GestureScrollBegin targets a different layer, the fling should be
2470 // cancelled and the scroll should be handled as usual. 2466 // cancelled and the scroll should be handled as usual.
2471 EXPECT_CALL(mock_input_handler_, 2467 EXPECT_CALL(mock_input_handler_,
2472 IsCurrentlyScrollingLayerAt(testing::_, testing::_)) 2468 IsCurrentlyScrollingLayerAt(testing::_, testing::_))
2473 .WillOnce(testing::Return(false)); 2469 .WillOnce(testing::Return(false));
2474 EXPECT_CALL(mock_input_handler_, ScrollEnd(testing::_)); 2470 EXPECT_CALL(mock_input_handler_, ScrollEnd(testing::_));
2475 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) 2471 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_))
2476 .WillOnce(testing::Return(kImplThreadScrollState)); 2472 .WillOnce(testing::Return(kImplThreadScrollState));
2477 2473
2478 time += dt; 2474 time += dt;
2479 gesture_.timeStampSeconds = InSecondsF(time); 2475 gesture_.setTimeStampSeconds(InSecondsF(time));
2480 gesture_.type = WebInputEvent::GestureScrollBegin; 2476 gesture_.setType(WebInputEvent::GestureScrollBegin);
2481 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 2477 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
2482 2478
2483 VERIFY_AND_RESET_MOCKS(); 2479 VERIFY_AND_RESET_MOCKS();
2484 } 2480 }
2485 2481
2486 TEST_P(InputHandlerProxyTest, NoFlingBoostIfScrollDelayed) { 2482 TEST_P(InputHandlerProxyTest, NoFlingBoostIfScrollDelayed) {
2487 base::TimeDelta dt = base::TimeDelta::FromMilliseconds(10); 2483 base::TimeDelta dt = base::TimeDelta::FromMilliseconds(10);
2488 base::TimeTicks time = base::TimeTicks() + dt; 2484 base::TimeTicks time = base::TimeTicks() + dt;
2489 WebFloatPoint fling_delta = WebFloatPoint(1000, 0); 2485 WebFloatPoint fling_delta = WebFloatPoint(1000, 0);
2490 WebPoint fling_point = WebPoint(7, 13); 2486 WebPoint fling_point = WebPoint(7, 13);
2491 StartFling( 2487 StartFling(
2492 time, blink::WebGestureDeviceTouchscreen, fling_delta, fling_point); 2488 time, blink::WebGestureDeviceTouchscreen, fling_delta, fling_point);
2493 2489
2494 // Cancel the fling. The fling cancellation should be deferred to allow 2490 // Cancel the fling. The fling cancellation should be deferred to allow
2495 // fling boosting events to arrive. 2491 // fling boosting events to arrive.
2496 time += dt; 2492 time += dt;
2497 CancelFling(time); 2493 CancelFling(time);
2498 2494
2499 // The GestureScrollBegin should be swallowed by the fling if it hits the same 2495 // The GestureScrollBegin should be swallowed by the fling if it hits the same
2500 // scrolling layer. 2496 // scrolling layer.
2501 EXPECT_CALL(mock_input_handler_, 2497 EXPECT_CALL(mock_input_handler_,
2502 IsCurrentlyScrollingLayerAt(testing::_, testing::_)) 2498 IsCurrentlyScrollingLayerAt(testing::_, testing::_))
2503 .WillOnce(testing::Return(true)); 2499 .WillOnce(testing::Return(true));
2504 2500
2505 time += dt; 2501 time += dt;
2506 gesture_.timeStampSeconds = InSecondsF(time); 2502 gesture_.setTimeStampSeconds(InSecondsF(time));
2507 gesture_.type = WebInputEvent::GestureScrollBegin; 2503 gesture_.setType(WebInputEvent::GestureScrollBegin);
2508 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 2504 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
2509 2505
2510 VERIFY_AND_RESET_MOCKS(); 2506 VERIFY_AND_RESET_MOCKS();
2511 2507
2512 // If no GestureScrollUpdate or GestureFlingStart is received within the 2508 // If no GestureScrollUpdate or GestureFlingStart is received within the
2513 // timeout window, the fling should be cancelled and scrolling should resume. 2509 // timeout window, the fling should be cancelled and scrolling should resume.
2514 time += base::TimeDelta::FromMilliseconds(100); 2510 time += base::TimeDelta::FromMilliseconds(100);
2515 EXPECT_CALL(mock_input_handler_, ScrollEnd(testing::_)); 2511 EXPECT_CALL(mock_input_handler_, ScrollEnd(testing::_));
2516 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) 2512 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_))
2517 .WillOnce(testing::Return(kImplThreadScrollState)); 2513 .WillOnce(testing::Return(kImplThreadScrollState));
(...skipping 22 matching lines...) Expand all
2540 time += base::TimeDelta::FromMilliseconds(100); 2536 time += base::TimeDelta::FromMilliseconds(100);
2541 CancelFling(time); 2537 CancelFling(time);
2542 2538
2543 // The GestureScrollBegin should be swallowed by the fling if it hits the same 2539 // The GestureScrollBegin should be swallowed by the fling if it hits the same
2544 // scrolling layer. 2540 // scrolling layer.
2545 EXPECT_CALL(mock_input_handler_, 2541 EXPECT_CALL(mock_input_handler_,
2546 IsCurrentlyScrollingLayerAt(testing::_, testing::_)) 2542 IsCurrentlyScrollingLayerAt(testing::_, testing::_))
2547 .WillOnce(testing::Return(true)); 2543 .WillOnce(testing::Return(true));
2548 2544
2549 time += dt; 2545 time += dt;
2550 gesture_.timeStampSeconds = InSecondsF(time); 2546 gesture_.setTimeStampSeconds(InSecondsF(time));
2551 gesture_.type = WebInputEvent::GestureScrollBegin; 2547 gesture_.setType(WebInputEvent::GestureScrollBegin);
2552 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 2548 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
2553 2549
2554 VERIFY_AND_RESET_MOCKS(); 2550 VERIFY_AND_RESET_MOCKS();
2555 2551
2556 // Should exit scroll bosting on GestureScrollUpdate due to long delay 2552 // Should exit scroll bosting on GestureScrollUpdate due to long delay
2557 // since last animate. Cancel old fling and start new scroll. 2553 // since last animate. Cancel old fling and start new scroll.
2558 gesture_.type = WebInputEvent::GestureScrollUpdate; 2554 gesture_.setType(WebInputEvent::GestureScrollUpdate);
2559 gesture_.data.scrollUpdate.deltaY = -40; 2555 gesture_.data.scrollUpdate.deltaY = -40;
2560 EXPECT_CALL(mock_input_handler_, ScrollEnd(testing::_)); 2556 EXPECT_CALL(mock_input_handler_, ScrollEnd(testing::_));
2561 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) 2557 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_))
2562 .WillOnce(testing::Return(kImplThreadScrollState)); 2558 .WillOnce(testing::Return(kImplThreadScrollState));
2563 EXPECT_CALL(mock_input_handler_, ScrollBy(testing::_)) 2559 EXPECT_CALL(mock_input_handler_, ScrollBy(testing::_))
2564 .WillOnce(testing::Return(scroll_result_did_scroll_)); 2560 .WillOnce(testing::Return(scroll_result_did_scroll_));
2565 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 2561 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
2566 2562
2567 VERIFY_AND_RESET_MOCKS(); 2563 VERIFY_AND_RESET_MOCKS();
2568 } 2564 }
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
2621 time += dt; 2617 time += dt;
2622 CancelFling(time); 2618 CancelFling(time);
2623 2619
2624 // The GestureScrollBegin should be swallowed by the fling if it hits the same 2620 // The GestureScrollBegin should be swallowed by the fling if it hits the same
2625 // scrolling layer. 2621 // scrolling layer.
2626 EXPECT_CALL(mock_input_handler_, 2622 EXPECT_CALL(mock_input_handler_,
2627 IsCurrentlyScrollingLayerAt(testing::_, testing::_)) 2623 IsCurrentlyScrollingLayerAt(testing::_, testing::_))
2628 .WillOnce(testing::Return(true)); 2624 .WillOnce(testing::Return(true));
2629 2625
2630 time += dt; 2626 time += dt;
2631 gesture_.timeStampSeconds = InSecondsF(time); 2627 gesture_.setTimeStampSeconds(InSecondsF(time));
2632 gesture_.type = WebInputEvent::GestureScrollBegin; 2628 gesture_.setType(WebInputEvent::GestureScrollBegin);
2633 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 2629 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
2634 2630
2635 VERIFY_AND_RESET_MOCKS(); 2631 VERIFY_AND_RESET_MOCKS();
2636 2632
2637 // If the GestureScrollUpdate is in a different direction than the fling, 2633 // If the GestureScrollUpdate is in a different direction than the fling,
2638 // the fling should be cancelled and scrolling should resume. 2634 // the fling should be cancelled and scrolling should resume.
2639 time += dt; 2635 time += dt;
2640 gesture_.timeStampSeconds = InSecondsF(time); 2636 gesture_.setTimeStampSeconds(InSecondsF(time));
2641 gesture_.type = WebInputEvent::GestureScrollUpdate; 2637 gesture_.setType(WebInputEvent::GestureScrollUpdate);
2642 gesture_.data.scrollUpdate.deltaX = -fling_delta.x; 2638 gesture_.data.scrollUpdate.deltaX = -fling_delta.x;
2643 EXPECT_CALL(mock_input_handler_, ScrollEnd(testing::_)); 2639 EXPECT_CALL(mock_input_handler_, ScrollEnd(testing::_));
2644 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) 2640 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_))
2645 .WillOnce(testing::Return(kImplThreadScrollState)); 2641 .WillOnce(testing::Return(kImplThreadScrollState));
2646 EXPECT_CALL(mock_input_handler_, 2642 EXPECT_CALL(mock_input_handler_,
2647 ScrollBy(testing::Property(&cc::ScrollState::delta_x, 2643 ScrollBy(testing::Property(&cc::ScrollState::delta_x,
2648 testing::Eq(fling_delta.x)))) 2644 testing::Eq(fling_delta.x))))
2649 .WillOnce(testing::Return(scroll_result_did_scroll_)); 2645 .WillOnce(testing::Return(scroll_result_did_scroll_));
2650 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 2646 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
2651 2647
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
2720 StartFling( 2716 StartFling(
2721 time, blink::WebGestureDeviceTouchscreen, fling_delta, fling_point); 2717 time, blink::WebGestureDeviceTouchscreen, fling_delta, fling_point);
2722 2718
2723 // Now cancel the fling. The fling cancellation should be deferred to allow 2719 // Now cancel the fling. The fling cancellation should be deferred to allow
2724 // fling boosting events to arrive. 2720 // fling boosting events to arrive.
2725 time += dt; 2721 time += dt;
2726 CancelFling(time); 2722 CancelFling(time);
2727 2723
2728 // The GestureScrollBegin should be swallowed by the fling. 2724 // The GestureScrollBegin should be swallowed by the fling.
2729 time += dt; 2725 time += dt;
2730 gesture_.timeStampSeconds = InSecondsF(time); 2726 gesture_.setTimeStampSeconds(InSecondsF(time));
2731 gesture_.type = WebInputEvent::GestureScrollBegin; 2727 gesture_.setType(WebInputEvent::GestureScrollBegin);
2732 EXPECT_CALL(mock_input_handler_, 2728 EXPECT_CALL(mock_input_handler_,
2733 IsCurrentlyScrollingLayerAt(testing::_, testing::_)) 2729 IsCurrentlyScrollingLayerAt(testing::_, testing::_))
2734 .WillOnce(testing::Return(true)); 2730 .WillOnce(testing::Return(true));
2735 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 2731 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
2736 2732
2737 VERIFY_AND_RESET_MOCKS(); 2733 VERIFY_AND_RESET_MOCKS();
2738 2734
2739 // Now animate the fling to completion (in this case, the fling should 2735 // Now animate the fling to completion (in this case, the fling should
2740 // terminate because the input handler reports a failed scroll). As the fling 2736 // terminate because the input handler reports a failed scroll). As the fling
2741 // was cancelled during an active scroll sequence, a synthetic 2737 // was cancelled during an active scroll sequence, a synthetic
2742 // GestureScrollBegin should be processed, resuming the scroll. 2738 // GestureScrollBegin should be processed, resuming the scroll.
2743 time += dt; 2739 time += dt;
2744 float expected_delta = 2740 float expected_delta =
2745 (time - last_animate_time).InSecondsF() * -fling_delta.x; 2741 (time - last_animate_time).InSecondsF() * -fling_delta.x;
2746 EXPECT_CALL(mock_input_handler_, 2742 EXPECT_CALL(mock_input_handler_,
2747 ScrollBy(testing::Property(&cc::ScrollState::delta_x, 2743 ScrollBy(testing::Property(&cc::ScrollState::delta_x,
2748 testing::Eq(expected_delta)))) 2744 testing::Eq(expected_delta))))
2749 .WillOnce(testing::Return(scroll_result_did_not_scroll_)); 2745 .WillOnce(testing::Return(scroll_result_did_not_scroll_));
2750 EXPECT_CALL(mock_input_handler_, ScrollEnd(testing::_)); 2746 EXPECT_CALL(mock_input_handler_, ScrollEnd(testing::_));
2751 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) 2747 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_))
2752 .WillOnce(testing::Return(kImplThreadScrollState)); 2748 .WillOnce(testing::Return(kImplThreadScrollState));
2753 Animate(time); 2749 Animate(time);
2754 2750
2755 VERIFY_AND_RESET_MOCKS(); 2751 VERIFY_AND_RESET_MOCKS();
2756 2752
2757 // Subsequent GestureScrollUpdates after the cancelled, boosted fling should 2753 // Subsequent GestureScrollUpdates after the cancelled, boosted fling should
2758 // cause scrolling as usual. 2754 // cause scrolling as usual.
2759 time += dt; 2755 time += dt;
2760 expected_delta = 7.3f; 2756 expected_delta = 7.3f;
2761 gesture_.timeStampSeconds = InSecondsF(time); 2757 gesture_.setTimeStampSeconds(InSecondsF(time));
2762 gesture_.type = WebInputEvent::GestureScrollUpdate; 2758 gesture_.setType(WebInputEvent::GestureScrollUpdate);
2763 gesture_.data.scrollUpdate.deltaX = -expected_delta; 2759 gesture_.data.scrollUpdate.deltaX = -expected_delta;
2764 EXPECT_CALL(mock_input_handler_, 2760 EXPECT_CALL(mock_input_handler_,
2765 ScrollBy(testing::Property(&cc::ScrollState::delta_x, 2761 ScrollBy(testing::Property(&cc::ScrollState::delta_x,
2766 testing::Eq(expected_delta)))) 2762 testing::Eq(expected_delta))))
2767 .WillOnce(testing::Return(scroll_result_did_scroll_)); 2763 .WillOnce(testing::Return(scroll_result_did_scroll_));
2768 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 2764 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
2769 2765
2770 VERIFY_AND_RESET_MOCKS(); 2766 VERIFY_AND_RESET_MOCKS();
2771 2767
2772 // GestureScrollEnd should terminate the resumed scroll properly. 2768 // GestureScrollEnd should terminate the resumed scroll properly.
2773 time += dt; 2769 time += dt;
2774 gesture_.timeStampSeconds = InSecondsF(time); 2770 gesture_.setTimeStampSeconds(InSecondsF(time));
2775 gesture_.type = WebInputEvent::GestureScrollEnd; 2771 gesture_.setType(WebInputEvent::GestureScrollEnd);
2776 EXPECT_CALL(mock_input_handler_, ScrollEnd(testing::_)); 2772 EXPECT_CALL(mock_input_handler_, ScrollEnd(testing::_));
2777 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 2773 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
2778 2774
2779 VERIFY_AND_RESET_MOCKS(); 2775 VERIFY_AND_RESET_MOCKS();
2780 } 2776 }
2781 2777
2782 TEST_P(InputHandlerProxyTest, DidReceiveInputEvent_ForFling) { 2778 TEST_P(InputHandlerProxyTest, DidReceiveInputEvent_ForFling) {
2783 testing::StrictMock<MockInputHandlerProxyClientWithDidAnimateForInput> 2779 testing::StrictMock<MockInputHandlerProxyClientWithDidAnimateForInput>
2784 mock_client; 2780 mock_client;
2785 input_handler_.reset( 2781 input_handler_.reset(
2786 new TestInputHandlerProxy( 2782 new TestInputHandlerProxy(
2787 &mock_input_handler_, &mock_client)); 2783 &mock_input_handler_, &mock_client));
2788 if (install_synchronous_handler_) { 2784 if (install_synchronous_handler_) {
2789 EXPECT_CALL(mock_input_handler_, RequestUpdateForSynchronousInputHandler()) 2785 EXPECT_CALL(mock_input_handler_, RequestUpdateForSynchronousInputHandler())
2790 .Times(1); 2786 .Times(1);
2791 input_handler_->SetOnlySynchronouslyAnimateRootFlings( 2787 input_handler_->SetOnlySynchronouslyAnimateRootFlings(
2792 &mock_synchronous_input_handler_); 2788 &mock_synchronous_input_handler_);
2793 } 2789 }
2794 mock_input_handler_.set_is_scrolling_root(synchronous_root_scroll_); 2790 mock_input_handler_.set_is_scrolling_root(synchronous_root_scroll_);
2795 2791
2796 gesture_.type = WebInputEvent::GestureFlingStart; 2792 gesture_.setType(WebInputEvent::GestureFlingStart);
2797 WebFloatPoint fling_delta = WebFloatPoint(100, 100); 2793 WebFloatPoint fling_delta = WebFloatPoint(100, 100);
2798 gesture_.data.flingStart.velocityX = fling_delta.x; 2794 gesture_.data.flingStart.velocityX = fling_delta.x;
2799 gesture_.data.flingStart.velocityY = fling_delta.y; 2795 gesture_.data.flingStart.velocityY = fling_delta.y;
2800 EXPECT_SET_NEEDS_ANIMATE_INPUT(1); 2796 EXPECT_SET_NEEDS_ANIMATE_INPUT(1);
2801 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) 2797 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_))
2802 .WillOnce(testing::Return(kImplThreadScrollState)); 2798 .WillOnce(testing::Return(kImplThreadScrollState));
2803 EXPECT_CALL(mock_input_handler_, ScrollEnd(testing::_)); 2799 EXPECT_CALL(mock_input_handler_, ScrollEnd(testing::_));
2804 EXPECT_EQ(InputHandlerProxy::DID_HANDLE, 2800 EXPECT_EQ(InputHandlerProxy::DID_HANDLE,
2805 input_handler_->HandleInputEvent(gesture_)); 2801 input_handler_->HandleInputEvent(gesture_));
2806 VERIFY_AND_RESET_MOCKS(); 2802 VERIFY_AND_RESET_MOCKS();
(...skipping 328 matching lines...) Expand 10 before | Expand all | Expand 10 after
3135 EXPECT_EQ(WebInputEvent::GesturePinchEnd, event_queue()[6]->event().type); 3131 EXPECT_EQ(WebInputEvent::GesturePinchEnd, event_queue()[6]->event().type);
3136 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); 3132 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_);
3137 } 3133 }
3138 3134
3139 INSTANTIATE_TEST_CASE_P(AnimateInput, 3135 INSTANTIATE_TEST_CASE_P(AnimateInput,
3140 InputHandlerProxyTest, 3136 InputHandlerProxyTest,
3141 testing::ValuesIn(test_types)); 3137 testing::ValuesIn(test_types));
3142 3138
3143 } // namespace test 3139 } // namespace test
3144 } // namespace ui 3140 } // namespace ui
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698