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

Side by Side Diff: content/renderer/input/input_handler_proxy_unittest.cc

Issue 206793003: cc: Split animating and drawing into separate actions (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix input handler proxy test build. Created 6 years, 7 months 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 | Annotate | Revision Log
« no previous file with comments | « content/renderer/input/input_handler_proxy.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "content/renderer/input/input_handler_proxy.h" 5 #include "content/renderer/input/input_handler_proxy.h"
6 6
7 #include "base/basictypes.h" 7 #include "base/basictypes.h"
8 #include "base/memory/scoped_ptr.h" 8 #include "base/memory/scoped_ptr.h"
9 #include "cc/base/swap_promise_monitor.h" 9 #include "cc/base/swap_promise_monitor.h"
10 #include "content/common/input/did_overscroll_params.h" 10 #include "content/common/input/did_overscroll_params.h"
(...skipping 25 matching lines...) Expand all
36 class MockInputHandler : public cc::InputHandler { 36 class MockInputHandler : public cc::InputHandler {
37 public: 37 public:
38 MockInputHandler() {} 38 MockInputHandler() {}
39 virtual ~MockInputHandler() {} 39 virtual ~MockInputHandler() {}
40 40
41 MOCK_METHOD0(PinchGestureBegin, void()); 41 MOCK_METHOD0(PinchGestureBegin, void());
42 MOCK_METHOD2(PinchGestureUpdate, 42 MOCK_METHOD2(PinchGestureUpdate,
43 void(float magnify_delta, const gfx::Point& anchor)); 43 void(float magnify_delta, const gfx::Point& anchor));
44 MOCK_METHOD0(PinchGestureEnd, void()); 44 MOCK_METHOD0(PinchGestureEnd, void());
45 45
46 MOCK_METHOD0(ScheduleAnimation, void()); 46 MOCK_METHOD0(SetNeedsAnimate, void());
47 47
48 MOCK_METHOD2(ScrollBegin, 48 MOCK_METHOD2(ScrollBegin,
49 ScrollStatus(const gfx::Point& viewport_point, 49 ScrollStatus(const gfx::Point& viewport_point,
50 cc::InputHandler::ScrollInputType type)); 50 cc::InputHandler::ScrollInputType type));
51 MOCK_METHOD2(ScrollBy, 51 MOCK_METHOD2(ScrollBy,
52 bool(const gfx::Point& viewport_point, 52 bool(const gfx::Point& viewport_point,
53 const gfx::Vector2dF& scroll_delta)); 53 const gfx::Vector2dF& scroll_delta));
54 MOCK_METHOD2(ScrollVerticallyByPage, 54 MOCK_METHOD2(ScrollVerticallyByPage,
55 bool(const gfx::Point& viewport_point, 55 bool(const gfx::Point& viewport_point,
56 cc::ScrollDirection direction)); 56 cc::ScrollDirection direction));
(...skipping 341 matching lines...) Expand 10 before | Expand all | Expand 10 after
398 } 398 }
399 399
400 TEST_F(InputHandlerProxyTest, GestureFlingStartedTouchpad) { 400 TEST_F(InputHandlerProxyTest, GestureFlingStartedTouchpad) {
401 // We shouldn't send any events to the widget for this gesture. 401 // We shouldn't send any events to the widget for this gesture.
402 expected_disposition_ = InputHandlerProxy::DID_HANDLE; 402 expected_disposition_ = InputHandlerProxy::DID_HANDLE;
403 VERIFY_AND_RESET_MOCKS(); 403 VERIFY_AND_RESET_MOCKS();
404 404
405 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) 405 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_))
406 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); 406 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted));
407 EXPECT_CALL(mock_input_handler_, ScrollEnd()); 407 EXPECT_CALL(mock_input_handler_, ScrollEnd());
408 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); 408 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate());
409 409
410 gesture_.type = WebInputEvent::GestureFlingStart; 410 gesture_.type = WebInputEvent::GestureFlingStart;
411 gesture_.data.flingStart.velocityX = 10; 411 gesture_.data.flingStart.velocityX = 10;
412 gesture_.sourceDevice = WebGestureEvent::Touchpad; 412 gesture_.sourceDevice = WebGestureEvent::Touchpad;
413 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 413 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
414 414
415 VERIFY_AND_RESET_MOCKS(); 415 VERIFY_AND_RESET_MOCKS();
416 416
417 // Verify that a GestureFlingCancel during an animation cancels it. 417 // Verify that a GestureFlingCancel during an animation cancels it.
418 gesture_.type = WebInputEvent::GestureFlingCancel; 418 gesture_.type = WebInputEvent::GestureFlingCancel;
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
481 // special (reserved for zoom), so don't set that here. 481 // special (reserved for zoom), so don't set that here.
482 int modifiers = WebInputEvent::ShiftKey | WebInputEvent::AltKey; 482 int modifiers = WebInputEvent::ShiftKey | WebInputEvent::AltKey;
483 gesture_.data.flingStart.velocityX = fling_delta.x; 483 gesture_.data.flingStart.velocityX = fling_delta.x;
484 gesture_.data.flingStart.velocityY = fling_delta.y; 484 gesture_.data.flingStart.velocityY = fling_delta.y;
485 gesture_.sourceDevice = WebGestureEvent::Touchpad; 485 gesture_.sourceDevice = WebGestureEvent::Touchpad;
486 gesture_.x = fling_point.x; 486 gesture_.x = fling_point.x;
487 gesture_.y = fling_point.y; 487 gesture_.y = fling_point.y;
488 gesture_.globalX = fling_global_point.x; 488 gesture_.globalX = fling_global_point.x;
489 gesture_.globalY = fling_global_point.y; 489 gesture_.globalY = fling_global_point.y;
490 gesture_.modifiers = modifiers; 490 gesture_.modifiers = modifiers;
491 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); 491 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate());
492 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) 492 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_))
493 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); 493 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted));
494 EXPECT_CALL(mock_input_handler_, ScrollEnd()); 494 EXPECT_CALL(mock_input_handler_, ScrollEnd());
495 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 495 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
496 496
497 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); 497 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_);
498 // The first animate call should let us pick up an animation start time, but 498 // The first animate call should let us pick up an animation start time, but
499 // we shouldn't actually move anywhere just yet. The first frame after the 499 // we shouldn't actually move anywhere just yet. The first frame after the
500 // fling start will typically include the last scroll from the gesture that 500 // fling start will typically include the last scroll from the gesture that
501 // lead to the scroll (either wheel or gesture scroll), so there should be no 501 // lead to the scroll (either wheel or gesture scroll), so there should be no
502 // visible hitch. 502 // visible hitch.
503 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); 503 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate());
504 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) 504 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_))
505 .Times(0); 505 .Times(0);
506 base::TimeTicks time = base::TimeTicks() + base::TimeDelta::FromSeconds(10); 506 base::TimeTicks time = base::TimeTicks() + base::TimeDelta::FromSeconds(10);
507 input_handler_->Animate(time); 507 input_handler_->Animate(time);
508 508
509 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); 509 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_);
510 510
511 // The second call should start scrolling in the -X direction. 511 // The second call should start scrolling in the -X direction.
512 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); 512 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate());
513 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) 513 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_))
514 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); 514 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted));
515 EXPECT_CALL(mock_input_handler_, 515 EXPECT_CALL(mock_input_handler_,
516 ScrollBy(testing::_, 516 ScrollBy(testing::_,
517 testing::Property(&gfx::Vector2dF::x, testing::Lt(0)))) 517 testing::Property(&gfx::Vector2dF::x, testing::Lt(0))))
518 .WillOnce(testing::Return(true)); 518 .WillOnce(testing::Return(true));
519 EXPECT_CALL(mock_input_handler_, ScrollEnd()); 519 EXPECT_CALL(mock_input_handler_, ScrollEnd());
520 time += base::TimeDelta::FromMilliseconds(100); 520 time += base::TimeDelta::FromMilliseconds(100);
521 input_handler_->Animate(time); 521 input_handler_->Animate(time);
522 522
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
555 testing::Field(&WebSize::width, testing::Gt(0)))))); 555 testing::Field(&WebSize::width, testing::Gt(0))))));
556 time += base::TimeDelta::FromMilliseconds(100); 556 time += base::TimeDelta::FromMilliseconds(100);
557 input_handler_->Animate(time); 557 input_handler_->Animate(time);
558 558
559 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); 559 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_);
560 testing::Mock::VerifyAndClearExpectations(&mock_client_); 560 testing::Mock::VerifyAndClearExpectations(&mock_client_);
561 561
562 // Since we've aborted the fling, the next animation should be a no-op and 562 // Since we've aborted the fling, the next animation should be a no-op and
563 // should not result in another 563 // should not result in another
564 // frame being requested. 564 // frame being requested.
565 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()).Times(0); 565 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate()).Times(0);
566 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) 566 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_))
567 .Times(0); 567 .Times(0);
568 time += base::TimeDelta::FromMilliseconds(100); 568 time += base::TimeDelta::FromMilliseconds(100);
569 input_handler_->Animate(time); 569 input_handler_->Animate(time);
570 570
571 // Since we've transferred the fling to the main thread, we need to pass the 571 // Since we've transferred the fling to the main thread, we need to pass the
572 // next GestureFlingCancel to the main 572 // next GestureFlingCancel to the main
573 // thread as well. 573 // thread as well.
574 expected_disposition_ = InputHandlerProxy::DID_NOT_HANDLE; 574 expected_disposition_ = InputHandlerProxy::DID_NOT_HANDLE;
575 gesture_.type = WebInputEvent::GestureFlingCancel; 575 gesture_.type = WebInputEvent::GestureFlingCancel;
(...skipping 14 matching lines...) Expand all
590 // special (reserved for zoom), so don't set that here. 590 // special (reserved for zoom), so don't set that here.
591 int modifiers = WebInputEvent::ShiftKey | WebInputEvent::AltKey; 591 int modifiers = WebInputEvent::ShiftKey | WebInputEvent::AltKey;
592 gesture_.data.flingStart.velocityX = fling_delta.x; 592 gesture_.data.flingStart.velocityX = fling_delta.x;
593 gesture_.data.flingStart.velocityY = fling_delta.y; 593 gesture_.data.flingStart.velocityY = fling_delta.y;
594 gesture_.sourceDevice = WebGestureEvent::Touchpad; 594 gesture_.sourceDevice = WebGestureEvent::Touchpad;
595 gesture_.x = fling_point.x; 595 gesture_.x = fling_point.x;
596 gesture_.y = fling_point.y; 596 gesture_.y = fling_point.y;
597 gesture_.globalX = fling_global_point.x; 597 gesture_.globalX = fling_global_point.x;
598 gesture_.globalY = fling_global_point.y; 598 gesture_.globalY = fling_global_point.y;
599 gesture_.modifiers = modifiers; 599 gesture_.modifiers = modifiers;
600 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); 600 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate());
601 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) 601 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_))
602 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); 602 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted));
603 EXPECT_CALL(mock_input_handler_, ScrollEnd()); 603 EXPECT_CALL(mock_input_handler_, ScrollEnd());
604 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 604 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
605 605
606 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); 606 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_);
607 607
608 // Start the fling animation at time 10. This shouldn't actually scroll, just 608 // Start the fling animation at time 10. This shouldn't actually scroll, just
609 // establish a start time. 609 // establish a start time.
610 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); 610 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate());
611 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) 611 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_))
612 .Times(0); 612 .Times(0);
613 base::TimeTicks time = base::TimeTicks() + base::TimeDelta::FromSeconds(10); 613 base::TimeTicks time = base::TimeTicks() + base::TimeDelta::FromSeconds(10);
614 input_handler_->Animate(time); 614 input_handler_->Animate(time);
615 615
616 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); 616 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_);
617 617
618 // The second call should start scrolling in the -X direction. 618 // The second call should start scrolling in the -X direction.
619 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); 619 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate());
620 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) 620 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_))
621 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); 621 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted));
622 EXPECT_CALL(mock_input_handler_, 622 EXPECT_CALL(mock_input_handler_,
623 ScrollBy(testing::_, 623 ScrollBy(testing::_,
624 testing::Property(&gfx::Vector2dF::x, testing::Lt(0)))) 624 testing::Property(&gfx::Vector2dF::x, testing::Lt(0))))
625 .WillOnce(testing::Return(true)); 625 .WillOnce(testing::Return(true));
626 EXPECT_CALL(mock_input_handler_, ScrollEnd()); 626 EXPECT_CALL(mock_input_handler_, ScrollEnd());
627 time += base::TimeDelta::FromMilliseconds(100); 627 time += base::TimeDelta::FromMilliseconds(100);
628 input_handler_->Animate(time); 628 input_handler_->Animate(time);
629 629
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
663 testing::Field(&WebSize::width, testing::Gt(0)))))); 663 testing::Field(&WebSize::width, testing::Gt(0))))));
664 time += base::TimeDelta::FromMilliseconds(100); 664 time += base::TimeDelta::FromMilliseconds(100);
665 input_handler_->Animate(time); 665 input_handler_->Animate(time);
666 666
667 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); 667 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_);
668 testing::Mock::VerifyAndClearExpectations(&mock_client_); 668 testing::Mock::VerifyAndClearExpectations(&mock_client_);
669 669
670 // Since we've aborted the fling, the next animation should be a no-op and 670 // Since we've aborted the fling, the next animation should be a no-op and
671 // should not result in another 671 // should not result in another
672 // frame being requested. 672 // frame being requested.
673 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()).Times(0); 673 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate()).Times(0);
674 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) 674 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_))
675 .Times(0); 675 .Times(0);
676 time += base::TimeDelta::FromMilliseconds(100); 676 time += base::TimeDelta::FromMilliseconds(100);
677 input_handler_->Animate(time); 677 input_handler_->Animate(time);
678 678
679 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); 679 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_);
680 680
681 // Since we've transferred the fling to the main thread, we need to pass the 681 // Since we've transferred the fling to the main thread, we need to pass the
682 // next GestureFlingCancel to the main 682 // next GestureFlingCancel to the main
683 // thread as well. 683 // thread as well.
(...skipping 11 matching lines...) Expand all
695 fling_global_point = WebPoint(32, 71); 695 fling_global_point = WebPoint(32, 71);
696 modifiers = WebInputEvent::AltKey; 696 modifiers = WebInputEvent::AltKey;
697 gesture_.data.flingStart.velocityX = fling_delta.x; 697 gesture_.data.flingStart.velocityX = fling_delta.x;
698 gesture_.data.flingStart.velocityY = fling_delta.y; 698 gesture_.data.flingStart.velocityY = fling_delta.y;
699 gesture_.sourceDevice = WebGestureEvent::Touchpad; 699 gesture_.sourceDevice = WebGestureEvent::Touchpad;
700 gesture_.x = fling_point.x; 700 gesture_.x = fling_point.x;
701 gesture_.y = fling_point.y; 701 gesture_.y = fling_point.y;
702 gesture_.globalX = fling_global_point.x; 702 gesture_.globalX = fling_global_point.x;
703 gesture_.globalY = fling_global_point.y; 703 gesture_.globalY = fling_global_point.y;
704 gesture_.modifiers = modifiers; 704 gesture_.modifiers = modifiers;
705 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); 705 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate());
706 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) 706 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_))
707 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); 707 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted));
708 EXPECT_CALL(mock_input_handler_, ScrollEnd()); 708 EXPECT_CALL(mock_input_handler_, ScrollEnd());
709 expected_disposition_ = InputHandlerProxy::DID_HANDLE; 709 expected_disposition_ = InputHandlerProxy::DID_HANDLE;
710 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 710 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
711 711
712 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); 712 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_);
713 713
714 // Start the second fling animation at time 30. 714 // Start the second fling animation at time 30.
715 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); 715 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate());
716 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) 716 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_))
717 .Times(0); 717 .Times(0);
718 time = base::TimeTicks() + base::TimeDelta::FromSeconds(30); 718 time = base::TimeTicks() + base::TimeDelta::FromSeconds(30);
719 input_handler_->Animate(time); 719 input_handler_->Animate(time);
720 720
721 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); 721 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_);
722 722
723 // Tick the second fling once normally. 723 // Tick the second fling once normally.
724 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); 724 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate());
725 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) 725 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_))
726 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); 726 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted));
727 EXPECT_CALL(mock_input_handler_, 727 EXPECT_CALL(mock_input_handler_,
728 ScrollBy(testing::_, 728 ScrollBy(testing::_,
729 testing::Property(&gfx::Vector2dF::y, testing::Gt(0)))) 729 testing::Property(&gfx::Vector2dF::y, testing::Gt(0))))
730 .WillOnce(testing::Return(true)); 730 .WillOnce(testing::Return(true));
731 EXPECT_CALL(mock_input_handler_, ScrollEnd()); 731 EXPECT_CALL(mock_input_handler_, ScrollEnd());
732 time += base::TimeDelta::FromMilliseconds(100); 732 time += base::TimeDelta::FromMilliseconds(100);
733 input_handler_->Animate(time); 733 input_handler_->Animate(time);
734 734
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
769 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) 769 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_))
770 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); 770 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted));
771 gesture_.type = WebInputEvent::GestureScrollBegin; 771 gesture_.type = WebInputEvent::GestureScrollBegin;
772 gesture_.sourceDevice = WebGestureEvent::Touchscreen; 772 gesture_.sourceDevice = WebGestureEvent::Touchscreen;
773 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 773 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
774 774
775 VERIFY_AND_RESET_MOCKS(); 775 VERIFY_AND_RESET_MOCKS();
776 776
777 EXPECT_CALL(mock_input_handler_, FlingScrollBegin()) 777 EXPECT_CALL(mock_input_handler_, FlingScrollBegin())
778 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); 778 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted));
779 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); 779 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate());
780 780
781 gesture_.type = WebInputEvent::GestureFlingStart; 781 gesture_.type = WebInputEvent::GestureFlingStart;
782 gesture_.data.flingStart.velocityX = 10; 782 gesture_.data.flingStart.velocityX = 10;
783 gesture_.sourceDevice = WebGestureEvent::Touchscreen; 783 gesture_.sourceDevice = WebGestureEvent::Touchscreen;
784 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 784 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
785 785
786 VERIFY_AND_RESET_MOCKS(); 786 VERIFY_AND_RESET_MOCKS();
787 787
788 EXPECT_CALL(mock_input_handler_, ScrollEnd()); 788 EXPECT_CALL(mock_input_handler_, ScrollEnd());
789 789
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
874 // Note that for touchscreen the control modifier is not special. 874 // Note that for touchscreen the control modifier is not special.
875 int modifiers = WebInputEvent::ControlKey; 875 int modifiers = WebInputEvent::ControlKey;
876 gesture_.data.flingStart.velocityX = fling_delta.x; 876 gesture_.data.flingStart.velocityX = fling_delta.x;
877 gesture_.data.flingStart.velocityY = fling_delta.y; 877 gesture_.data.flingStart.velocityY = fling_delta.y;
878 gesture_.sourceDevice = WebGestureEvent::Touchscreen; 878 gesture_.sourceDevice = WebGestureEvent::Touchscreen;
879 gesture_.x = fling_point.x; 879 gesture_.x = fling_point.x;
880 gesture_.y = fling_point.y; 880 gesture_.y = fling_point.y;
881 gesture_.globalX = fling_global_point.x; 881 gesture_.globalX = fling_global_point.x;
882 gesture_.globalY = fling_global_point.y; 882 gesture_.globalY = fling_global_point.y;
883 gesture_.modifiers = modifiers; 883 gesture_.modifiers = modifiers;
884 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); 884 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate());
885 EXPECT_CALL(mock_input_handler_, FlingScrollBegin()) 885 EXPECT_CALL(mock_input_handler_, FlingScrollBegin())
886 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); 886 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted));
887 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 887 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
888 888
889 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); 889 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_);
890 // The first animate call should let us pick up an animation start time, but 890 // The first animate call should let us pick up an animation start time, but
891 // we shouldn't actually move anywhere just yet. The first frame after the 891 // we shouldn't actually move anywhere just yet. The first frame after the
892 // fling start will typically include the last scroll from the gesture that 892 // fling start will typically include the last scroll from the gesture that
893 // lead to the scroll (either wheel or gesture scroll), so there should be no 893 // lead to the scroll (either wheel or gesture scroll), so there should be no
894 // visible hitch. 894 // visible hitch.
895 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); 895 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate());
896 base::TimeTicks time = base::TimeTicks() + base::TimeDelta::FromSeconds(10); 896 base::TimeTicks time = base::TimeTicks() + base::TimeDelta::FromSeconds(10);
897 input_handler_->Animate(time); 897 input_handler_->Animate(time);
898 898
899 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); 899 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_);
900 900
901 // The second call should start scrolling in the -X direction. 901 // The second call should start scrolling in the -X direction.
902 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); 902 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate());
903 EXPECT_CALL(mock_input_handler_, 903 EXPECT_CALL(mock_input_handler_,
904 ScrollBy(testing::_, 904 ScrollBy(testing::_,
905 testing::Property(&gfx::Vector2dF::x, testing::Lt(0)))) 905 testing::Property(&gfx::Vector2dF::x, testing::Lt(0))))
906 .WillOnce(testing::Return(true)); 906 .WillOnce(testing::Return(true));
907 time += base::TimeDelta::FromMilliseconds(100); 907 time += base::TimeDelta::FromMilliseconds(100);
908 input_handler_->Animate(time); 908 input_handler_->Animate(time);
909 909
910 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); 910 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_);
911 911
912 EXPECT_CALL(mock_input_handler_, ScrollEnd()); 912 EXPECT_CALL(mock_input_handler_, ScrollEnd());
(...skipping 25 matching lines...) Expand all
938 int modifiers = WebInputEvent::ControlKey; 938 int modifiers = WebInputEvent::ControlKey;
939 gesture_.timeStampSeconds = startTimeOffset.InSecondsF(); 939 gesture_.timeStampSeconds = startTimeOffset.InSecondsF();
940 gesture_.data.flingStart.velocityX = fling_delta.x; 940 gesture_.data.flingStart.velocityX = fling_delta.x;
941 gesture_.data.flingStart.velocityY = fling_delta.y; 941 gesture_.data.flingStart.velocityY = fling_delta.y;
942 gesture_.sourceDevice = WebGestureEvent::Touchscreen; 942 gesture_.sourceDevice = WebGestureEvent::Touchscreen;
943 gesture_.x = fling_point.x; 943 gesture_.x = fling_point.x;
944 gesture_.y = fling_point.y; 944 gesture_.y = fling_point.y;
945 gesture_.globalX = fling_global_point.x; 945 gesture_.globalX = fling_global_point.x;
946 gesture_.globalY = fling_global_point.y; 946 gesture_.globalY = fling_global_point.y;
947 gesture_.modifiers = modifiers; 947 gesture_.modifiers = modifiers;
948 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); 948 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate());
949 EXPECT_CALL(mock_input_handler_, FlingScrollBegin()) 949 EXPECT_CALL(mock_input_handler_, FlingScrollBegin())
950 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); 950 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted));
951 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 951 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
952 952
953 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); 953 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_);
954 // With a valid time stamp, the first animate call should skip start time 954 // With a valid time stamp, the first animate call should skip start time
955 // initialization and immediately begin scroll update production. This reduces 955 // initialization and immediately begin scroll update production. This reduces
956 // the likelihood of a hitch between the scroll preceding the fling and 956 // the likelihood of a hitch between the scroll preceding the fling and
957 // the first scroll generated by the fling. 957 // the first scroll generated by the fling.
958 // Scrolling should start in the -X direction. 958 // Scrolling should start in the -X direction.
959 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); 959 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate());
960 EXPECT_CALL(mock_input_handler_, 960 EXPECT_CALL(mock_input_handler_,
961 ScrollBy(testing::_, 961 ScrollBy(testing::_,
962 testing::Property(&gfx::Vector2dF::x, testing::Lt(0)))) 962 testing::Property(&gfx::Vector2dF::x, testing::Lt(0))))
963 .WillOnce(testing::Return(true)); 963 .WillOnce(testing::Return(true));
964 base::TimeTicks time = base::TimeTicks() + 2 * startTimeOffset; 964 base::TimeTicks time = base::TimeTicks() + 2 * startTimeOffset;
965 input_handler_->Animate(time); 965 input_handler_->Animate(time);
966 966
967 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); 967 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_);
968 968
969 EXPECT_CALL(mock_input_handler_, ScrollEnd()); 969 EXPECT_CALL(mock_input_handler_, ScrollEnd());
(...skipping 25 matching lines...) Expand all
995 int modifiers = WebInputEvent::ControlKey; 995 int modifiers = WebInputEvent::ControlKey;
996 gesture_.timeStampSeconds = start_time_offset.InSecondsF(); 996 gesture_.timeStampSeconds = start_time_offset.InSecondsF();
997 gesture_.data.flingStart.velocityX = fling_delta.x; 997 gesture_.data.flingStart.velocityX = fling_delta.x;
998 gesture_.data.flingStart.velocityY = fling_delta.y; 998 gesture_.data.flingStart.velocityY = fling_delta.y;
999 gesture_.sourceDevice = WebGestureEvent::Touchscreen; 999 gesture_.sourceDevice = WebGestureEvent::Touchscreen;
1000 gesture_.x = fling_point.x; 1000 gesture_.x = fling_point.x;
1001 gesture_.y = fling_point.y; 1001 gesture_.y = fling_point.y;
1002 gesture_.globalX = fling_global_point.x; 1002 gesture_.globalX = fling_global_point.x;
1003 gesture_.globalY = fling_global_point.y; 1003 gesture_.globalY = fling_global_point.y;
1004 gesture_.modifiers = modifiers; 1004 gesture_.modifiers = modifiers;
1005 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); 1005 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate());
1006 EXPECT_CALL(mock_input_handler_, FlingScrollBegin()) 1006 EXPECT_CALL(mock_input_handler_, FlingScrollBegin())
1007 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); 1007 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted));
1008 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 1008 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
1009 1009
1010 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); 1010 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_);
1011 // Event though a time stamp was provided for the fling event, it will be 1011 // Event though a time stamp was provided for the fling event, it will be
1012 // ignored as its too far in the past relative to the first animate call's 1012 // ignored as its too far in the past relative to the first animate call's
1013 // timestamp. 1013 // timestamp.
1014 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); 1014 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate());
1015 base::TimeTicks time = 1015 base::TimeTicks time =
1016 base::TimeTicks() + start_time_offset + base::TimeDelta::FromSeconds(1); 1016 base::TimeTicks() + start_time_offset + base::TimeDelta::FromSeconds(1);
1017 input_handler_->Animate(time); 1017 input_handler_->Animate(time);
1018 1018
1019 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); 1019 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_);
1020 1020
1021 // Further animation ticks should update the fling as usual. 1021 // Further animation ticks should update the fling as usual.
1022 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); 1022 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate());
1023 EXPECT_CALL(mock_input_handler_, 1023 EXPECT_CALL(mock_input_handler_,
1024 ScrollBy(testing::_, 1024 ScrollBy(testing::_,
1025 testing::Property(&gfx::Vector2dF::x, testing::Lt(0)))) 1025 testing::Property(&gfx::Vector2dF::x, testing::Lt(0))))
1026 .WillOnce(testing::Return(true)); 1026 .WillOnce(testing::Return(true));
1027 time += base::TimeDelta::FromMilliseconds(10); 1027 time += base::TimeDelta::FromMilliseconds(10);
1028 input_handler_->Animate(time); 1028 input_handler_->Animate(time);
1029 1029
1030 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); 1030 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_);
1031 1031
1032 EXPECT_CALL(mock_input_handler_, ScrollEnd()); 1032 EXPECT_CALL(mock_input_handler_, ScrollEnd());
(...skipping 28 matching lines...) Expand all
1061 WebPoint fling_global_point = WebPoint(17, 23); 1061 WebPoint fling_global_point = WebPoint(17, 23);
1062 int modifiers = WebInputEvent::ControlKey | WebInputEvent::AltKey; 1062 int modifiers = WebInputEvent::ControlKey | WebInputEvent::AltKey;
1063 gesture_.data.flingStart.velocityX = fling_delta.x; 1063 gesture_.data.flingStart.velocityX = fling_delta.x;
1064 gesture_.data.flingStart.velocityY = fling_delta.y; 1064 gesture_.data.flingStart.velocityY = fling_delta.y;
1065 gesture_.sourceDevice = WebGestureEvent::Touchscreen; 1065 gesture_.sourceDevice = WebGestureEvent::Touchscreen;
1066 gesture_.x = fling_point.x; 1066 gesture_.x = fling_point.x;
1067 gesture_.y = fling_point.y; 1067 gesture_.y = fling_point.y;
1068 gesture_.globalX = fling_global_point.x; 1068 gesture_.globalX = fling_global_point.x;
1069 gesture_.globalY = fling_global_point.y; 1069 gesture_.globalY = fling_global_point.y;
1070 gesture_.modifiers = modifiers; 1070 gesture_.modifiers = modifiers;
1071 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); 1071 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate());
1072 EXPECT_CALL(mock_input_handler_, FlingScrollBegin()) 1072 EXPECT_CALL(mock_input_handler_, FlingScrollBegin())
1073 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); 1073 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted));
1074 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 1074 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
1075 1075
1076 // |gesture_scroll_on_impl_thread_| should still be true after 1076 // |gesture_scroll_on_impl_thread_| should still be true after
1077 // a GestureFlingStart is sent. 1077 // a GestureFlingStart is sent.
1078 EXPECT_TRUE(input_handler_->gesture_scroll_on_impl_thread_for_testing()); 1078 EXPECT_TRUE(input_handler_->gesture_scroll_on_impl_thread_for_testing());
1079 1079
1080 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); 1080 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_);
1081 // The first animate call should let us pick up an animation start time, but 1081 // The first animate call should let us pick up an animation start time, but
1082 // we shouldn't actually move anywhere just yet. The first frame after the 1082 // we shouldn't actually move anywhere just yet. The first frame after the
1083 // fling start will typically include the last scroll from the gesture that 1083 // fling start will typically include the last scroll from the gesture that
1084 // lead to the scroll (either wheel or gesture scroll), so there should be no 1084 // lead to the scroll (either wheel or gesture scroll), so there should be no
1085 // visible hitch. 1085 // visible hitch.
1086 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); 1086 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate());
1087 base::TimeTicks time = base::TimeTicks() + base::TimeDelta::FromSeconds(10); 1087 base::TimeTicks time = base::TimeTicks() + base::TimeDelta::FromSeconds(10);
1088 input_handler_->Animate(time); 1088 input_handler_->Animate(time);
1089 1089
1090 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); 1090 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_);
1091 1091
1092 // The second call should start scrolling in the -X direction. 1092 // The second call should start scrolling in the -X direction.
1093 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); 1093 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate());
1094 EXPECT_CALL(mock_input_handler_, 1094 EXPECT_CALL(mock_input_handler_,
1095 ScrollBy(testing::_, 1095 ScrollBy(testing::_,
1096 testing::Property(&gfx::Vector2dF::x, testing::Lt(0)))) 1096 testing::Property(&gfx::Vector2dF::x, testing::Lt(0))))
1097 .WillOnce(testing::Return(true)); 1097 .WillOnce(testing::Return(true));
1098 time += base::TimeDelta::FromMilliseconds(100); 1098 time += base::TimeDelta::FromMilliseconds(100);
1099 input_handler_->Animate(time); 1099 input_handler_->Animate(time);
1100 1100
1101 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); 1101 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_);
1102 1102
1103 EXPECT_CALL(mock_input_handler_, ScrollEnd()); 1103 EXPECT_CALL(mock_input_handler_, ScrollEnd());
1104 gesture_.type = WebInputEvent::GestureFlingCancel; 1104 gesture_.type = WebInputEvent::GestureFlingCancel;
1105 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 1105 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
1106 1106
1107 // |gesture_scroll_on_impl_thread_| should be false once 1107 // |gesture_scroll_on_impl_thread_| should be false once
1108 // the fling has finished (note no GestureScrollEnd has been sent). 1108 // the fling has finished (note no GestureScrollEnd has been sent).
1109 EXPECT_TRUE(!input_handler_->gesture_scroll_on_impl_thread_for_testing()); 1109 EXPECT_TRUE(!input_handler_->gesture_scroll_on_impl_thread_for_testing());
1110 } 1110 }
1111 1111
1112 TEST_F(InputHandlerProxyTest, GestureFlingStopsAtContentEdge) { 1112 TEST_F(InputHandlerProxyTest, GestureFlingStopsAtContentEdge) {
1113 // We shouldn't send any events to the widget for this gesture. 1113 // We shouldn't send any events to the widget for this gesture.
1114 expected_disposition_ = InputHandlerProxy::DID_HANDLE; 1114 expected_disposition_ = InputHandlerProxy::DID_HANDLE;
1115 VERIFY_AND_RESET_MOCKS(); 1115 VERIFY_AND_RESET_MOCKS();
1116 1116
1117 // On the fling start, we should schedule an animation but not actually start 1117 // On the fling start, we should schedule an animation but not actually start
1118 // scrolling. 1118 // scrolling.
1119 gesture_.type = WebInputEvent::GestureFlingStart; 1119 gesture_.type = WebInputEvent::GestureFlingStart;
1120 WebFloatPoint fling_delta = WebFloatPoint(1000, 1000); 1120 WebFloatPoint fling_delta = WebFloatPoint(1000, 1000);
1121 gesture_.data.flingStart.velocityX = fling_delta.x; 1121 gesture_.data.flingStart.velocityX = fling_delta.x;
1122 gesture_.data.flingStart.velocityY = fling_delta.y; 1122 gesture_.data.flingStart.velocityY = fling_delta.y;
1123 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); 1123 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate());
1124 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) 1124 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_))
1125 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); 1125 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted));
1126 EXPECT_CALL(mock_input_handler_, ScrollEnd()); 1126 EXPECT_CALL(mock_input_handler_, ScrollEnd());
1127 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 1127 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
1128 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); 1128 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_);
1129 1129
1130 // The first animate doesn't cause any scrolling. 1130 // The first animate doesn't cause any scrolling.
1131 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); 1131 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate());
1132 base::TimeTicks time = base::TimeTicks() + base::TimeDelta::FromSeconds(10); 1132 base::TimeTicks time = base::TimeTicks() + base::TimeDelta::FromSeconds(10);
1133 input_handler_->Animate(time); 1133 input_handler_->Animate(time);
1134 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); 1134 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_);
1135 1135
1136 // The second animate starts scrolling in the positive X and Y directions. 1136 // The second animate starts scrolling in the positive X and Y directions.
1137 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); 1137 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate());
1138 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) 1138 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_))
1139 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); 1139 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted));
1140 EXPECT_CALL(mock_input_handler_, 1140 EXPECT_CALL(mock_input_handler_,
1141 ScrollBy(testing::_, 1141 ScrollBy(testing::_,
1142 testing::Property(&gfx::Vector2dF::y, testing::Lt(0)))) 1142 testing::Property(&gfx::Vector2dF::y, testing::Lt(0))))
1143 .WillOnce(testing::Return(true)); 1143 .WillOnce(testing::Return(true));
1144 EXPECT_CALL(mock_input_handler_, ScrollEnd()); 1144 EXPECT_CALL(mock_input_handler_, ScrollEnd());
1145 time += base::TimeDelta::FromMilliseconds(100); 1145 time += base::TimeDelta::FromMilliseconds(100);
1146 input_handler_->Animate(time); 1146 input_handler_->Animate(time);
1147 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); 1147 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_);
1148 1148
1149 // Simulate hitting the bottom content edge. 1149 // Simulate hitting the bottom content edge.
1150 gfx::Vector2dF accumulated_overscroll(0, 100); 1150 gfx::Vector2dF accumulated_overscroll(0, 100);
1151 gfx::Vector2dF latest_overscroll_delta(0, 10); 1151 gfx::Vector2dF latest_overscroll_delta(0, 10);
1152 EXPECT_CALL(mock_client_, 1152 EXPECT_CALL(mock_client_,
1153 DidOverscroll(testing::AllOf( 1153 DidOverscroll(testing::AllOf(
1154 testing::Field(&DidOverscrollParams::accumulated_overscroll, 1154 testing::Field(&DidOverscrollParams::accumulated_overscroll,
1155 testing::Eq(accumulated_overscroll)), 1155 testing::Eq(accumulated_overscroll)),
1156 testing::Field(&DidOverscrollParams::latest_overscroll_delta, 1156 testing::Field(&DidOverscrollParams::latest_overscroll_delta,
1157 testing::Eq(latest_overscroll_delta)), 1157 testing::Eq(latest_overscroll_delta)),
1158 testing::Field( 1158 testing::Field(
1159 &DidOverscrollParams::current_fling_velocity, 1159 &DidOverscrollParams::current_fling_velocity,
1160 testing::Property(&gfx::Vector2dF::y, testing::Lt(0)))))); 1160 testing::Property(&gfx::Vector2dF::y, testing::Lt(0))))));
1161 input_handler_->DidOverscroll(accumulated_overscroll, 1161 input_handler_->DidOverscroll(accumulated_overscroll,
1162 latest_overscroll_delta); 1162 latest_overscroll_delta);
1163 1163
1164 // The next call to animate will no longer scroll vertically. 1164 // The next call to animate will no longer scroll vertically.
1165 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); 1165 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate());
1166 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) 1166 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_))
1167 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); 1167 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted));
1168 EXPECT_CALL(mock_input_handler_, 1168 EXPECT_CALL(mock_input_handler_,
1169 ScrollBy(testing::_, 1169 ScrollBy(testing::_,
1170 testing::Property(&gfx::Vector2dF::y, testing::Eq(0)))) 1170 testing::Property(&gfx::Vector2dF::y, testing::Eq(0))))
1171 .WillOnce(testing::Return(true)); 1171 .WillOnce(testing::Return(true));
1172 EXPECT_CALL(mock_input_handler_, ScrollEnd()); 1172 EXPECT_CALL(mock_input_handler_, ScrollEnd());
1173 time += base::TimeDelta::FromMilliseconds(100); 1173 time += base::TimeDelta::FromMilliseconds(100);
1174 input_handler_->Animate(time); 1174 input_handler_->Animate(time);
1175 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); 1175 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_);
(...skipping 24 matching lines...) Expand all
1200 int modifiers = WebInputEvent::ControlKey; 1200 int modifiers = WebInputEvent::ControlKey;
1201 gesture_.timeStampSeconds = time_offset.InSecondsF(); 1201 gesture_.timeStampSeconds = time_offset.InSecondsF();
1202 gesture_.data.flingStart.velocityX = fling_delta.x; 1202 gesture_.data.flingStart.velocityX = fling_delta.x;
1203 gesture_.data.flingStart.velocityY = fling_delta.y; 1203 gesture_.data.flingStart.velocityY = fling_delta.y;
1204 gesture_.sourceDevice = WebGestureEvent::Touchscreen; 1204 gesture_.sourceDevice = WebGestureEvent::Touchscreen;
1205 gesture_.x = fling_point.x; 1205 gesture_.x = fling_point.x;
1206 gesture_.y = fling_point.y; 1206 gesture_.y = fling_point.y;
1207 gesture_.globalX = fling_global_point.x; 1207 gesture_.globalX = fling_global_point.x;
1208 gesture_.globalY = fling_global_point.y; 1208 gesture_.globalY = fling_global_point.y;
1209 gesture_.modifiers = modifiers; 1209 gesture_.modifiers = modifiers;
1210 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); 1210 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate());
1211 EXPECT_CALL(mock_input_handler_, FlingScrollBegin()) 1211 EXPECT_CALL(mock_input_handler_, FlingScrollBegin())
1212 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); 1212 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted));
1213 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 1213 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
1214 1214
1215 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); 1215 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_);
1216 // With an animation timestamp equivalent to the starting timestamp, the 1216 // With an animation timestamp equivalent to the starting timestamp, the
1217 // animation will simply be rescheduled. 1217 // animation will simply be rescheduled.
1218 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); 1218 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate());
1219 input_handler_->Animate(time); 1219 input_handler_->Animate(time);
1220 1220
1221 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); 1221 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_);
1222 EXPECT_TRUE(input_handler_->gesture_scroll_on_impl_thread_for_testing()); 1222 EXPECT_TRUE(input_handler_->gesture_scroll_on_impl_thread_for_testing());
1223 1223
1224 // A small time delta should not stop the fling, even if the client 1224 // A small time delta should not stop the fling, even if the client
1225 // reports no scrolling. 1225 // reports no scrolling.
1226 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); 1226 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate());
1227 EXPECT_CALL(mock_input_handler_, 1227 EXPECT_CALL(mock_input_handler_,
1228 ScrollBy(testing::_, 1228 ScrollBy(testing::_,
1229 testing::Property(&gfx::Vector2dF::x, testing::Lt(0)))) 1229 testing::Property(&gfx::Vector2dF::x, testing::Lt(0))))
1230 .WillOnce(testing::Return(false)); 1230 .WillOnce(testing::Return(false));
1231 time += base::TimeDelta::FromMicroseconds(5); 1231 time += base::TimeDelta::FromMicroseconds(5);
1232 input_handler_->Animate(time); 1232 input_handler_->Animate(time);
1233 1233
1234 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); 1234 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_);
1235 EXPECT_TRUE(input_handler_->gesture_scroll_on_impl_thread_for_testing()); 1235 EXPECT_TRUE(input_handler_->gesture_scroll_on_impl_thread_for_testing());
1236 1236
1237 // A time delta of zero should not stop the fling, and neither should it 1237 // A time delta of zero should not stop the fling, and neither should it
1238 // trigger scrolling on the client. 1238 // trigger scrolling on the client.
1239 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); 1239 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate());
1240 input_handler_->Animate(time); 1240 input_handler_->Animate(time);
1241 1241
1242 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); 1242 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_);
1243 EXPECT_TRUE(input_handler_->gesture_scroll_on_impl_thread_for_testing()); 1243 EXPECT_TRUE(input_handler_->gesture_scroll_on_impl_thread_for_testing());
1244 1244
1245 // Lack of movement on the client, with a non-trivial scroll delta, should 1245 // Lack of movement on the client, with a non-trivial scroll delta, should
1246 // terminate the fling. 1246 // terminate the fling.
1247 EXPECT_CALL(mock_input_handler_, ScrollEnd()); 1247 EXPECT_CALL(mock_input_handler_, ScrollEnd());
1248 EXPECT_CALL(mock_input_handler_, 1248 EXPECT_CALL(mock_input_handler_,
1249 ScrollBy(testing::_, 1249 ScrollBy(testing::_,
(...skipping 19 matching lines...) Expand all
1269 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); 1269 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_);
1270 1270
1271 // On the fling start, we should schedule an animation but not actually start 1271 // On the fling start, we should schedule an animation but not actually start
1272 // scrolling. 1272 // scrolling.
1273 gesture_.type = WebInputEvent::GestureFlingStart; 1273 gesture_.type = WebInputEvent::GestureFlingStart;
1274 WebFloatPoint fling_delta = WebFloatPoint(1000, 1000); 1274 WebFloatPoint fling_delta = WebFloatPoint(1000, 1000);
1275 gesture_.data.flingStart.velocityX = fling_delta.x; 1275 gesture_.data.flingStart.velocityX = fling_delta.x;
1276 gesture_.data.flingStart.velocityY = fling_delta.y; 1276 gesture_.data.flingStart.velocityY = fling_delta.y;
1277 EXPECT_CALL(mock_input_handler_, FlingScrollBegin()) 1277 EXPECT_CALL(mock_input_handler_, FlingScrollBegin())
1278 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); 1278 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted));
1279 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); 1279 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate());
1280 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 1280 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
1281 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); 1281 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_);
1282 1282
1283 // The first animate doesn't cause any scrolling. 1283 // The first animate doesn't cause any scrolling.
1284 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); 1284 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate());
1285 base::TimeTicks time = base::TimeTicks() + base::TimeDelta::FromSeconds(10); 1285 base::TimeTicks time = base::TimeTicks() + base::TimeDelta::FromSeconds(10);
1286 input_handler_->Animate(time); 1286 input_handler_->Animate(time);
1287 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); 1287 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_);
1288 1288
1289 // The second animate starts scrolling in the positive X and Y directions. 1289 // The second animate starts scrolling in the positive X and Y directions.
1290 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); 1290 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate());
1291 EXPECT_CALL(mock_input_handler_, 1291 EXPECT_CALL(mock_input_handler_,
1292 ScrollBy(testing::_, 1292 ScrollBy(testing::_,
1293 testing::Property(&gfx::Vector2dF::y, testing::Lt(0)))) 1293 testing::Property(&gfx::Vector2dF::y, testing::Lt(0))))
1294 .WillOnce(testing::Return(true)); 1294 .WillOnce(testing::Return(true));
1295 time += base::TimeDelta::FromMilliseconds(10); 1295 time += base::TimeDelta::FromMilliseconds(10);
1296 input_handler_->Animate(time); 1296 input_handler_->Animate(time);
1297 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); 1297 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_);
1298 1298
1299 // Simulate hitting the bottom content edge. 1299 // Simulate hitting the bottom content edge.
1300 gfx::Vector2dF accumulated_overscroll(0, 100); 1300 gfx::Vector2dF accumulated_overscroll(0, 100);
1301 gfx::Vector2dF latest_overscroll_delta(0, 100); 1301 gfx::Vector2dF latest_overscroll_delta(0, 100);
1302 EXPECT_CALL(mock_client_, 1302 EXPECT_CALL(mock_client_,
1303 DidOverscroll(testing::AllOf( 1303 DidOverscroll(testing::AllOf(
1304 testing::Field(&DidOverscrollParams::accumulated_overscroll, 1304 testing::Field(&DidOverscrollParams::accumulated_overscroll,
1305 testing::Eq(accumulated_overscroll)), 1305 testing::Eq(accumulated_overscroll)),
1306 testing::Field(&DidOverscrollParams::latest_overscroll_delta, 1306 testing::Field(&DidOverscrollParams::latest_overscroll_delta,
1307 testing::Eq(latest_overscroll_delta)), 1307 testing::Eq(latest_overscroll_delta)),
1308 testing::Field( 1308 testing::Field(
1309 &DidOverscrollParams::current_fling_velocity, 1309 &DidOverscrollParams::current_fling_velocity,
1310 testing::Property(&gfx::Vector2dF::y, testing::Lt(0)))))); 1310 testing::Property(&gfx::Vector2dF::y, testing::Lt(0))))));
1311 input_handler_->DidOverscroll(accumulated_overscroll, 1311 input_handler_->DidOverscroll(accumulated_overscroll,
1312 latest_overscroll_delta); 1312 latest_overscroll_delta);
1313 1313
1314 // The next call to animate will no longer scroll vertically. 1314 // The next call to animate will no longer scroll vertically.
1315 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); 1315 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate());
1316 EXPECT_CALL(mock_input_handler_, 1316 EXPECT_CALL(mock_input_handler_,
1317 ScrollBy(testing::_, 1317 ScrollBy(testing::_,
1318 testing::Property(&gfx::Vector2dF::y, testing::Eq(0)))) 1318 testing::Property(&gfx::Vector2dF::y, testing::Eq(0))))
1319 .WillOnce(testing::Return(true)); 1319 .WillOnce(testing::Return(true));
1320 time += base::TimeDelta::FromMilliseconds(10); 1320 time += base::TimeDelta::FromMilliseconds(10);
1321 input_handler_->Animate(time); 1321 input_handler_->Animate(time);
1322 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); 1322 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_);
1323 1323
1324 // Simulate hitting the right content edge. 1324 // Simulate hitting the right content edge.
1325 accumulated_overscroll = gfx::Vector2dF(100, 100); 1325 accumulated_overscroll = gfx::Vector2dF(100, 100);
1326 latest_overscroll_delta = gfx::Vector2dF(100, 0); 1326 latest_overscroll_delta = gfx::Vector2dF(100, 0);
1327 EXPECT_CALL(mock_client_, 1327 EXPECT_CALL(mock_client_,
1328 DidOverscroll(testing::AllOf( 1328 DidOverscroll(testing::AllOf(
1329 testing::Field(&DidOverscrollParams::accumulated_overscroll, 1329 testing::Field(&DidOverscrollParams::accumulated_overscroll,
1330 testing::Eq(accumulated_overscroll)), 1330 testing::Eq(accumulated_overscroll)),
1331 testing::Field(&DidOverscrollParams::latest_overscroll_delta, 1331 testing::Field(&DidOverscrollParams::latest_overscroll_delta,
1332 testing::Eq(latest_overscroll_delta)), 1332 testing::Eq(latest_overscroll_delta)),
1333 testing::Field( 1333 testing::Field(
1334 &DidOverscrollParams::current_fling_velocity, 1334 &DidOverscrollParams::current_fling_velocity,
1335 testing::Property(&gfx::Vector2dF::x, testing::Lt(0)))))); 1335 testing::Property(&gfx::Vector2dF::x, testing::Lt(0))))));
1336 input_handler_->DidOverscroll(accumulated_overscroll, 1336 input_handler_->DidOverscroll(accumulated_overscroll,
1337 latest_overscroll_delta); 1337 latest_overscroll_delta);
1338 // The next call to animate will no longer scroll horizontally or vertically, 1338 // The next call to animate will no longer scroll horizontally or vertically,
1339 // and the fling should be cancelled. 1339 // and the fling should be cancelled.
1340 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()).Times(0); 1340 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate()).Times(0);
1341 EXPECT_CALL(mock_input_handler_, ScrollBy(testing::_, testing::_)).Times(0); 1341 EXPECT_CALL(mock_input_handler_, ScrollBy(testing::_, testing::_)).Times(0);
1342 EXPECT_CALL(mock_input_handler_, ScrollEnd()); 1342 EXPECT_CALL(mock_input_handler_, ScrollEnd());
1343 time += base::TimeDelta::FromMilliseconds(10); 1343 time += base::TimeDelta::FromMilliseconds(10);
1344 input_handler_->Animate(time); 1344 input_handler_->Animate(time);
1345 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); 1345 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_);
1346 EXPECT_FALSE(input_handler_->gesture_scroll_on_impl_thread_for_testing()); 1346 EXPECT_FALSE(input_handler_->gesture_scroll_on_impl_thread_for_testing());
1347 } 1347 }
1348 1348
1349 TEST_F(InputHandlerProxyTest, MultiTouchPointHitTestNegative) { 1349 TEST_F(InputHandlerProxyTest, MultiTouchPointHitTestNegative) {
1350 // None of the three touch points fall in the touch region. So the event 1350 // None of the three touch points fall in the touch region. So the event
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
1419 EXPECT_TRUE(input_handler_->gesture_scroll_on_impl_thread_for_testing()); 1419 EXPECT_TRUE(input_handler_->gesture_scroll_on_impl_thread_for_testing());
1420 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); 1420 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_);
1421 1421
1422 // On the fling start, animation should be scheduled, but no scrolling occurs. 1422 // On the fling start, animation should be scheduled, but no scrolling occurs.
1423 gesture_.type = WebInputEvent::GestureFlingStart; 1423 gesture_.type = WebInputEvent::GestureFlingStart;
1424 WebFloatPoint fling_delta = WebFloatPoint(1000, 1000); 1424 WebFloatPoint fling_delta = WebFloatPoint(1000, 1000);
1425 gesture_.data.flingStart.velocityX = fling_delta.x; 1425 gesture_.data.flingStart.velocityX = fling_delta.x;
1426 gesture_.data.flingStart.velocityY = fling_delta.y; 1426 gesture_.data.flingStart.velocityY = fling_delta.y;
1427 EXPECT_CALL(mock_input_handler_, FlingScrollBegin()) 1427 EXPECT_CALL(mock_input_handler_, FlingScrollBegin())
1428 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); 1428 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted));
1429 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); 1429 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate());
1430 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 1430 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
1431 EXPECT_TRUE(input_handler_->gesture_scroll_on_impl_thread_for_testing()); 1431 EXPECT_TRUE(input_handler_->gesture_scroll_on_impl_thread_for_testing());
1432 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); 1432 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_);
1433 1433
1434 // Keyboard events received during a fling should cancel the active fling. 1434 // Keyboard events received during a fling should cancel the active fling.
1435 EXPECT_CALL(mock_input_handler_, ScrollEnd()); 1435 EXPECT_CALL(mock_input_handler_, ScrollEnd());
1436 EXPECT_EQ(InputHandlerProxy::DID_NOT_HANDLE, 1436 EXPECT_EQ(InputHandlerProxy::DID_NOT_HANDLE,
1437 input_handler_->HandleInputEvent(key_event)); 1437 input_handler_->HandleInputEvent(key_event));
1438 EXPECT_FALSE(input_handler_->gesture_scroll_on_impl_thread_for_testing()); 1438 EXPECT_FALSE(input_handler_->gesture_scroll_on_impl_thread_for_testing());
1439 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); 1439 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_);
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
1474 int modifiers = WebInputEvent::ControlKey; 1474 int modifiers = WebInputEvent::ControlKey;
1475 gesture_.timeStampSeconds = startTimeOffset.InSecondsF(); 1475 gesture_.timeStampSeconds = startTimeOffset.InSecondsF();
1476 gesture_.data.flingStart.velocityX = fling_delta.x; 1476 gesture_.data.flingStart.velocityX = fling_delta.x;
1477 gesture_.data.flingStart.velocityY = fling_delta.y; 1477 gesture_.data.flingStart.velocityY = fling_delta.y;
1478 gesture_.sourceDevice = WebGestureEvent::Touchscreen; 1478 gesture_.sourceDevice = WebGestureEvent::Touchscreen;
1479 gesture_.x = fling_point.x; 1479 gesture_.x = fling_point.x;
1480 gesture_.y = fling_point.y; 1480 gesture_.y = fling_point.y;
1481 gesture_.globalX = fling_global_point.x; 1481 gesture_.globalX = fling_global_point.x;
1482 gesture_.globalY = fling_global_point.y; 1482 gesture_.globalY = fling_global_point.y;
1483 gesture_.modifiers = modifiers; 1483 gesture_.modifiers = modifiers;
1484 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); 1484 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate());
1485 EXPECT_CALL(mock_input_handler_, FlingScrollBegin()) 1485 EXPECT_CALL(mock_input_handler_, FlingScrollBegin())
1486 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); 1486 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted));
1487 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 1487 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
1488 1488
1489 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); 1489 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_);
1490 1490
1491 // If we get a negative time delta, that is, the Animation tick time happens 1491 // If we get a negative time delta, that is, the Animation tick time happens
1492 // before the fling's start time then we should *not* try scrolling and 1492 // before the fling's start time then we should *not* try scrolling and
1493 // instead reset the fling start time. 1493 // instead reset the fling start time.
1494 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); 1494 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate());
1495 EXPECT_CALL(mock_input_handler_, 1495 EXPECT_CALL(mock_input_handler_,
1496 ScrollBy(testing::_, 1496 ScrollBy(testing::_,
1497 testing::_)).Times(0); 1497 testing::_)).Times(0);
1498 base::TimeTicks time = 1498 base::TimeTicks time =
1499 base::TimeTicks() + base::TimeDelta::FromMilliseconds(8); 1499 base::TimeTicks() + base::TimeDelta::FromMilliseconds(8);
1500 input_handler_->Animate(time); 1500 input_handler_->Animate(time);
1501 1501
1502 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); 1502 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_);
1503 1503
1504 // The first call should have reset the start time so subsequent calls should 1504 // The first call should have reset the start time so subsequent calls should
1505 // generate scroll events. 1505 // generate scroll events.
1506 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); 1506 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate());
1507 EXPECT_CALL(mock_input_handler_, 1507 EXPECT_CALL(mock_input_handler_,
1508 ScrollBy(testing::_, 1508 ScrollBy(testing::_,
1509 testing::Property(&gfx::Vector2dF::x, testing::Lt(0)))) 1509 testing::Property(&gfx::Vector2dF::x, testing::Lt(0))))
1510 .WillOnce(testing::Return(true)); 1510 .WillOnce(testing::Return(true));
1511 1511
1512 input_handler_->Animate(time + base::TimeDelta::FromMilliseconds(1)); 1512 input_handler_->Animate(time + base::TimeDelta::FromMilliseconds(1));
1513 1513
1514 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); 1514 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_);
1515 1515
1516 EXPECT_CALL(mock_input_handler_, ScrollEnd()); 1516 EXPECT_CALL(mock_input_handler_, ScrollEnd());
1517 gesture_.type = WebInputEvent::GestureFlingCancel; 1517 gesture_.type = WebInputEvent::GestureFlingCancel;
1518 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 1518 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
1519 } 1519 }
1520 1520
1521 } // namespace 1521 } // namespace
1522 } // namespace content 1522 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/input/input_handler_proxy.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698