| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "content/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 Loading... |
| 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(SetNeedsAnimate, void()); | 46 MOCK_METHOD0(ScheduleAnimation, 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 Loading... |
| 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_, SetNeedsAnimate()); | 408 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); |
| 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 Loading... |
| 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_, SetNeedsAnimate()); | 491 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); |
| 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_, SetNeedsAnimate()); | 503 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); |
| 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_, SetNeedsAnimate()); | 512 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); |
| 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 Loading... |
| 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_, SetNeedsAnimate()).Times(0); | 565 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()).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 Loading... |
| 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_, SetNeedsAnimate()); | 600 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); |
| 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_, SetNeedsAnimate()); | 610 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); |
| 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_, SetNeedsAnimate()); | 619 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); |
| 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 Loading... |
| 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_, SetNeedsAnimate()).Times(0); | 673 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()).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 Loading... |
| 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_, SetNeedsAnimate()); | 705 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); |
| 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_, SetNeedsAnimate()); | 715 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); |
| 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_, SetNeedsAnimate()); | 724 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); |
| 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 Loading... |
| 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_, SetNeedsAnimate()); | 779 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); |
| 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 Loading... |
| 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_, SetNeedsAnimate()); | 884 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); |
| 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_, SetNeedsAnimate()); | 895 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); |
| 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_, SetNeedsAnimate()); | 902 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); |
| 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 Loading... |
| 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_, SetNeedsAnimate()); | 948 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); |
| 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_, SetNeedsAnimate()); | 959 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); |
| 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 28 matching lines...) Expand all Loading... |
| 998 WebPoint fling_global_point = WebPoint(17, 23); | 998 WebPoint fling_global_point = WebPoint(17, 23); |
| 999 int modifiers = WebInputEvent::ControlKey | WebInputEvent::AltKey; | 999 int modifiers = WebInputEvent::ControlKey | WebInputEvent::AltKey; |
| 1000 gesture_.data.flingStart.velocityX = fling_delta.x; | 1000 gesture_.data.flingStart.velocityX = fling_delta.x; |
| 1001 gesture_.data.flingStart.velocityY = fling_delta.y; | 1001 gesture_.data.flingStart.velocityY = fling_delta.y; |
| 1002 gesture_.sourceDevice = WebGestureEvent::Touchscreen; | 1002 gesture_.sourceDevice = WebGestureEvent::Touchscreen; |
| 1003 gesture_.x = fling_point.x; | 1003 gesture_.x = fling_point.x; |
| 1004 gesture_.y = fling_point.y; | 1004 gesture_.y = fling_point.y; |
| 1005 gesture_.globalX = fling_global_point.x; | 1005 gesture_.globalX = fling_global_point.x; |
| 1006 gesture_.globalY = fling_global_point.y; | 1006 gesture_.globalY = fling_global_point.y; |
| 1007 gesture_.modifiers = modifiers; | 1007 gesture_.modifiers = modifiers; |
| 1008 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate()); | 1008 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); |
| 1009 EXPECT_CALL(mock_input_handler_, FlingScrollBegin()) | 1009 EXPECT_CALL(mock_input_handler_, FlingScrollBegin()) |
| 1010 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); | 1010 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); |
| 1011 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); | 1011 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); |
| 1012 | 1012 |
| 1013 // |gesture_scroll_on_impl_thread_| should still be true after | 1013 // |gesture_scroll_on_impl_thread_| should still be true after |
| 1014 // a GestureFlingStart is sent. | 1014 // a GestureFlingStart is sent. |
| 1015 EXPECT_TRUE(input_handler_->gesture_scroll_on_impl_thread_for_testing()); | 1015 EXPECT_TRUE(input_handler_->gesture_scroll_on_impl_thread_for_testing()); |
| 1016 | 1016 |
| 1017 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); | 1017 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); |
| 1018 // The first animate call should let us pick up an animation start time, but | 1018 // The first animate call should let us pick up an animation start time, but |
| 1019 // we shouldn't actually move anywhere just yet. The first frame after the | 1019 // we shouldn't actually move anywhere just yet. The first frame after the |
| 1020 // fling start will typically include the last scroll from the gesture that | 1020 // fling start will typically include the last scroll from the gesture that |
| 1021 // lead to the scroll (either wheel or gesture scroll), so there should be no | 1021 // lead to the scroll (either wheel or gesture scroll), so there should be no |
| 1022 // visible hitch. | 1022 // visible hitch. |
| 1023 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate()); | 1023 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); |
| 1024 base::TimeTicks time = base::TimeTicks() + base::TimeDelta::FromSeconds(10); | 1024 base::TimeTicks time = base::TimeTicks() + base::TimeDelta::FromSeconds(10); |
| 1025 input_handler_->Animate(time); | 1025 input_handler_->Animate(time); |
| 1026 | 1026 |
| 1027 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); | 1027 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); |
| 1028 | 1028 |
| 1029 // The second call should start scrolling in the -X direction. | 1029 // The second call should start scrolling in the -X direction. |
| 1030 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate()); | 1030 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); |
| 1031 EXPECT_CALL(mock_input_handler_, | 1031 EXPECT_CALL(mock_input_handler_, |
| 1032 ScrollBy(testing::_, | 1032 ScrollBy(testing::_, |
| 1033 testing::Property(&gfx::Vector2dF::x, testing::Lt(0)))) | 1033 testing::Property(&gfx::Vector2dF::x, testing::Lt(0)))) |
| 1034 .WillOnce(testing::Return(true)); | 1034 .WillOnce(testing::Return(true)); |
| 1035 time += base::TimeDelta::FromMilliseconds(100); | 1035 time += base::TimeDelta::FromMilliseconds(100); |
| 1036 input_handler_->Animate(time); | 1036 input_handler_->Animate(time); |
| 1037 | 1037 |
| 1038 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); | 1038 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); |
| 1039 | 1039 |
| 1040 EXPECT_CALL(mock_input_handler_, ScrollEnd()); | 1040 EXPECT_CALL(mock_input_handler_, ScrollEnd()); |
| 1041 gesture_.type = WebInputEvent::GestureFlingCancel; | 1041 gesture_.type = WebInputEvent::GestureFlingCancel; |
| 1042 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); | 1042 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); |
| 1043 | 1043 |
| 1044 // |gesture_scroll_on_impl_thread_| should be false once | 1044 // |gesture_scroll_on_impl_thread_| should be false once |
| 1045 // the fling has finished (note no GestureScrollEnd has been sent). | 1045 // the fling has finished (note no GestureScrollEnd has been sent). |
| 1046 EXPECT_TRUE(!input_handler_->gesture_scroll_on_impl_thread_for_testing()); | 1046 EXPECT_TRUE(!input_handler_->gesture_scroll_on_impl_thread_for_testing()); |
| 1047 } | 1047 } |
| 1048 | 1048 |
| 1049 TEST_F(InputHandlerProxyTest, GestureFlingStopsAtContentEdge) { | 1049 TEST_F(InputHandlerProxyTest, GestureFlingStopsAtContentEdge) { |
| 1050 // We shouldn't send any events to the widget for this gesture. | 1050 // We shouldn't send any events to the widget for this gesture. |
| 1051 expected_disposition_ = InputHandlerProxy::DID_HANDLE; | 1051 expected_disposition_ = InputHandlerProxy::DID_HANDLE; |
| 1052 VERIFY_AND_RESET_MOCKS(); | 1052 VERIFY_AND_RESET_MOCKS(); |
| 1053 | 1053 |
| 1054 // On the fling start, we should schedule an animation but not actually start | 1054 // On the fling start, we should schedule an animation but not actually start |
| 1055 // scrolling. | 1055 // scrolling. |
| 1056 gesture_.type = WebInputEvent::GestureFlingStart; | 1056 gesture_.type = WebInputEvent::GestureFlingStart; |
| 1057 WebFloatPoint fling_delta = WebFloatPoint(1000, 1000); | 1057 WebFloatPoint fling_delta = WebFloatPoint(1000, 1000); |
| 1058 gesture_.data.flingStart.velocityX = fling_delta.x; | 1058 gesture_.data.flingStart.velocityX = fling_delta.x; |
| 1059 gesture_.data.flingStart.velocityY = fling_delta.y; | 1059 gesture_.data.flingStart.velocityY = fling_delta.y; |
| 1060 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate()); | 1060 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); |
| 1061 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) | 1061 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) |
| 1062 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); | 1062 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); |
| 1063 EXPECT_CALL(mock_input_handler_, ScrollEnd()); | 1063 EXPECT_CALL(mock_input_handler_, ScrollEnd()); |
| 1064 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); | 1064 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); |
| 1065 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); | 1065 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); |
| 1066 | 1066 |
| 1067 // The first animate doesn't cause any scrolling. | 1067 // The first animate doesn't cause any scrolling. |
| 1068 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate()); | 1068 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); |
| 1069 base::TimeTicks time = base::TimeTicks() + base::TimeDelta::FromSeconds(10); | 1069 base::TimeTicks time = base::TimeTicks() + base::TimeDelta::FromSeconds(10); |
| 1070 input_handler_->Animate(time); | 1070 input_handler_->Animate(time); |
| 1071 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); | 1071 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); |
| 1072 | 1072 |
| 1073 // The second animate starts scrolling in the positive X and Y directions. | 1073 // The second animate starts scrolling in the positive X and Y directions. |
| 1074 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate()); | 1074 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); |
| 1075 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) | 1075 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) |
| 1076 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); | 1076 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); |
| 1077 EXPECT_CALL(mock_input_handler_, | 1077 EXPECT_CALL(mock_input_handler_, |
| 1078 ScrollBy(testing::_, | 1078 ScrollBy(testing::_, |
| 1079 testing::Property(&gfx::Vector2dF::y, testing::Lt(0)))) | 1079 testing::Property(&gfx::Vector2dF::y, testing::Lt(0)))) |
| 1080 .WillOnce(testing::Return(true)); | 1080 .WillOnce(testing::Return(true)); |
| 1081 EXPECT_CALL(mock_input_handler_, ScrollEnd()); | 1081 EXPECT_CALL(mock_input_handler_, ScrollEnd()); |
| 1082 time += base::TimeDelta::FromMilliseconds(100); | 1082 time += base::TimeDelta::FromMilliseconds(100); |
| 1083 input_handler_->Animate(time); | 1083 input_handler_->Animate(time); |
| 1084 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); | 1084 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); |
| 1085 | 1085 |
| 1086 // Simulate hitting the bottom content edge. | 1086 // Simulate hitting the bottom content edge. |
| 1087 gfx::Vector2dF accumulated_overscroll(0, 100); | 1087 gfx::Vector2dF accumulated_overscroll(0, 100); |
| 1088 gfx::Vector2dF latest_overscroll_delta(0, 10); | 1088 gfx::Vector2dF latest_overscroll_delta(0, 10); |
| 1089 EXPECT_CALL(mock_client_, | 1089 EXPECT_CALL(mock_client_, |
| 1090 DidOverscroll(testing::AllOf( | 1090 DidOverscroll(testing::AllOf( |
| 1091 testing::Field(&DidOverscrollParams::accumulated_overscroll, | 1091 testing::Field(&DidOverscrollParams::accumulated_overscroll, |
| 1092 testing::Eq(accumulated_overscroll)), | 1092 testing::Eq(accumulated_overscroll)), |
| 1093 testing::Field(&DidOverscrollParams::latest_overscroll_delta, | 1093 testing::Field(&DidOverscrollParams::latest_overscroll_delta, |
| 1094 testing::Eq(latest_overscroll_delta)), | 1094 testing::Eq(latest_overscroll_delta)), |
| 1095 testing::Field( | 1095 testing::Field( |
| 1096 &DidOverscrollParams::current_fling_velocity, | 1096 &DidOverscrollParams::current_fling_velocity, |
| 1097 testing::Property(&gfx::Vector2dF::y, testing::Lt(0)))))); | 1097 testing::Property(&gfx::Vector2dF::y, testing::Lt(0)))))); |
| 1098 input_handler_->DidOverscroll(accumulated_overscroll, | 1098 input_handler_->DidOverscroll(accumulated_overscroll, |
| 1099 latest_overscroll_delta); | 1099 latest_overscroll_delta); |
| 1100 | 1100 |
| 1101 // The next call to animate will no longer scroll vertically. | 1101 // The next call to animate will no longer scroll vertically. |
| 1102 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate()); | 1102 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); |
| 1103 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) | 1103 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) |
| 1104 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); | 1104 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); |
| 1105 EXPECT_CALL(mock_input_handler_, | 1105 EXPECT_CALL(mock_input_handler_, |
| 1106 ScrollBy(testing::_, | 1106 ScrollBy(testing::_, |
| 1107 testing::Property(&gfx::Vector2dF::y, testing::Eq(0)))) | 1107 testing::Property(&gfx::Vector2dF::y, testing::Eq(0)))) |
| 1108 .WillOnce(testing::Return(true)); | 1108 .WillOnce(testing::Return(true)); |
| 1109 EXPECT_CALL(mock_input_handler_, ScrollEnd()); | 1109 EXPECT_CALL(mock_input_handler_, ScrollEnd()); |
| 1110 time += base::TimeDelta::FromMilliseconds(100); | 1110 time += base::TimeDelta::FromMilliseconds(100); |
| 1111 input_handler_->Animate(time); | 1111 input_handler_->Animate(time); |
| 1112 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); | 1112 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); |
| (...skipping 24 matching lines...) Expand all Loading... |
| 1137 int modifiers = WebInputEvent::ControlKey; | 1137 int modifiers = WebInputEvent::ControlKey; |
| 1138 gesture_.timeStampSeconds = time_offset.InSecondsF(); | 1138 gesture_.timeStampSeconds = time_offset.InSecondsF(); |
| 1139 gesture_.data.flingStart.velocityX = fling_delta.x; | 1139 gesture_.data.flingStart.velocityX = fling_delta.x; |
| 1140 gesture_.data.flingStart.velocityY = fling_delta.y; | 1140 gesture_.data.flingStart.velocityY = fling_delta.y; |
| 1141 gesture_.sourceDevice = WebGestureEvent::Touchscreen; | 1141 gesture_.sourceDevice = WebGestureEvent::Touchscreen; |
| 1142 gesture_.x = fling_point.x; | 1142 gesture_.x = fling_point.x; |
| 1143 gesture_.y = fling_point.y; | 1143 gesture_.y = fling_point.y; |
| 1144 gesture_.globalX = fling_global_point.x; | 1144 gesture_.globalX = fling_global_point.x; |
| 1145 gesture_.globalY = fling_global_point.y; | 1145 gesture_.globalY = fling_global_point.y; |
| 1146 gesture_.modifiers = modifiers; | 1146 gesture_.modifiers = modifiers; |
| 1147 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate()); | 1147 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); |
| 1148 EXPECT_CALL(mock_input_handler_, FlingScrollBegin()) | 1148 EXPECT_CALL(mock_input_handler_, FlingScrollBegin()) |
| 1149 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); | 1149 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); |
| 1150 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); | 1150 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); |
| 1151 | 1151 |
| 1152 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); | 1152 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); |
| 1153 // With an animation timestamp equivalent to the starting timestamp, the | 1153 // With an animation timestamp equivalent to the starting timestamp, the |
| 1154 // animation will simply be rescheduled. | 1154 // animation will simply be rescheduled. |
| 1155 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate()); | 1155 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); |
| 1156 input_handler_->Animate(time); | 1156 input_handler_->Animate(time); |
| 1157 | 1157 |
| 1158 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); | 1158 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); |
| 1159 EXPECT_TRUE(input_handler_->gesture_scroll_on_impl_thread_for_testing()); | 1159 EXPECT_TRUE(input_handler_->gesture_scroll_on_impl_thread_for_testing()); |
| 1160 | 1160 |
| 1161 // A small time delta should not stop the fling, even if the client | 1161 // A small time delta should not stop the fling, even if the client |
| 1162 // reports no scrolling. | 1162 // reports no scrolling. |
| 1163 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate()); | 1163 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); |
| 1164 EXPECT_CALL(mock_input_handler_, | 1164 EXPECT_CALL(mock_input_handler_, |
| 1165 ScrollBy(testing::_, | 1165 ScrollBy(testing::_, |
| 1166 testing::Property(&gfx::Vector2dF::x, testing::Lt(0)))) | 1166 testing::Property(&gfx::Vector2dF::x, testing::Lt(0)))) |
| 1167 .WillOnce(testing::Return(false)); | 1167 .WillOnce(testing::Return(false)); |
| 1168 time += base::TimeDelta::FromMicroseconds(5); | 1168 time += base::TimeDelta::FromMicroseconds(5); |
| 1169 input_handler_->Animate(time); | 1169 input_handler_->Animate(time); |
| 1170 | 1170 |
| 1171 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); | 1171 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); |
| 1172 EXPECT_TRUE(input_handler_->gesture_scroll_on_impl_thread_for_testing()); | 1172 EXPECT_TRUE(input_handler_->gesture_scroll_on_impl_thread_for_testing()); |
| 1173 | 1173 |
| 1174 // A time delta of zero should not stop the fling, and neither should it | 1174 // A time delta of zero should not stop the fling, and neither should it |
| 1175 // trigger scrolling on the client. | 1175 // trigger scrolling on the client. |
| 1176 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate()); | 1176 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); |
| 1177 input_handler_->Animate(time); | 1177 input_handler_->Animate(time); |
| 1178 | 1178 |
| 1179 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); | 1179 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); |
| 1180 EXPECT_TRUE(input_handler_->gesture_scroll_on_impl_thread_for_testing()); | 1180 EXPECT_TRUE(input_handler_->gesture_scroll_on_impl_thread_for_testing()); |
| 1181 | 1181 |
| 1182 // Lack of movement on the client, with a non-trivial scroll delta, should | 1182 // Lack of movement on the client, with a non-trivial scroll delta, should |
| 1183 // terminate the fling. | 1183 // terminate the fling. |
| 1184 EXPECT_CALL(mock_input_handler_, ScrollEnd()); | 1184 EXPECT_CALL(mock_input_handler_, ScrollEnd()); |
| 1185 EXPECT_CALL(mock_input_handler_, | 1185 EXPECT_CALL(mock_input_handler_, |
| 1186 ScrollBy(testing::_, | 1186 ScrollBy(testing::_, |
| (...skipping 19 matching lines...) Expand all Loading... |
| 1206 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); | 1206 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); |
| 1207 | 1207 |
| 1208 // On the fling start, we should schedule an animation but not actually start | 1208 // On the fling start, we should schedule an animation but not actually start |
| 1209 // scrolling. | 1209 // scrolling. |
| 1210 gesture_.type = WebInputEvent::GestureFlingStart; | 1210 gesture_.type = WebInputEvent::GestureFlingStart; |
| 1211 WebFloatPoint fling_delta = WebFloatPoint(1000, 1000); | 1211 WebFloatPoint fling_delta = WebFloatPoint(1000, 1000); |
| 1212 gesture_.data.flingStart.velocityX = fling_delta.x; | 1212 gesture_.data.flingStart.velocityX = fling_delta.x; |
| 1213 gesture_.data.flingStart.velocityY = fling_delta.y; | 1213 gesture_.data.flingStart.velocityY = fling_delta.y; |
| 1214 EXPECT_CALL(mock_input_handler_, FlingScrollBegin()) | 1214 EXPECT_CALL(mock_input_handler_, FlingScrollBegin()) |
| 1215 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); | 1215 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); |
| 1216 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate()); | 1216 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); |
| 1217 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); | 1217 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); |
| 1218 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); | 1218 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); |
| 1219 | 1219 |
| 1220 // The first animate doesn't cause any scrolling. | 1220 // The first animate doesn't cause any scrolling. |
| 1221 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate()); | 1221 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); |
| 1222 base::TimeTicks time = base::TimeTicks() + base::TimeDelta::FromSeconds(10); | 1222 base::TimeTicks time = base::TimeTicks() + base::TimeDelta::FromSeconds(10); |
| 1223 input_handler_->Animate(time); | 1223 input_handler_->Animate(time); |
| 1224 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); | 1224 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); |
| 1225 | 1225 |
| 1226 // The second animate starts scrolling in the positive X and Y directions. | 1226 // The second animate starts scrolling in the positive X and Y directions. |
| 1227 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate()); | 1227 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); |
| 1228 EXPECT_CALL(mock_input_handler_, | 1228 EXPECT_CALL(mock_input_handler_, |
| 1229 ScrollBy(testing::_, | 1229 ScrollBy(testing::_, |
| 1230 testing::Property(&gfx::Vector2dF::y, testing::Lt(0)))) | 1230 testing::Property(&gfx::Vector2dF::y, testing::Lt(0)))) |
| 1231 .WillOnce(testing::Return(true)); | 1231 .WillOnce(testing::Return(true)); |
| 1232 time += base::TimeDelta::FromMilliseconds(10); | 1232 time += base::TimeDelta::FromMilliseconds(10); |
| 1233 input_handler_->Animate(time); | 1233 input_handler_->Animate(time); |
| 1234 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); | 1234 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); |
| 1235 | 1235 |
| 1236 // Simulate hitting the bottom content edge. | 1236 // Simulate hitting the bottom content edge. |
| 1237 gfx::Vector2dF accumulated_overscroll(0, 100); | 1237 gfx::Vector2dF accumulated_overscroll(0, 100); |
| 1238 gfx::Vector2dF latest_overscroll_delta(0, 100); | 1238 gfx::Vector2dF latest_overscroll_delta(0, 100); |
| 1239 EXPECT_CALL(mock_client_, | 1239 EXPECT_CALL(mock_client_, |
| 1240 DidOverscroll(testing::AllOf( | 1240 DidOverscroll(testing::AllOf( |
| 1241 testing::Field(&DidOverscrollParams::accumulated_overscroll, | 1241 testing::Field(&DidOverscrollParams::accumulated_overscroll, |
| 1242 testing::Eq(accumulated_overscroll)), | 1242 testing::Eq(accumulated_overscroll)), |
| 1243 testing::Field(&DidOverscrollParams::latest_overscroll_delta, | 1243 testing::Field(&DidOverscrollParams::latest_overscroll_delta, |
| 1244 testing::Eq(latest_overscroll_delta)), | 1244 testing::Eq(latest_overscroll_delta)), |
| 1245 testing::Field( | 1245 testing::Field( |
| 1246 &DidOverscrollParams::current_fling_velocity, | 1246 &DidOverscrollParams::current_fling_velocity, |
| 1247 testing::Property(&gfx::Vector2dF::y, testing::Lt(0)))))); | 1247 testing::Property(&gfx::Vector2dF::y, testing::Lt(0)))))); |
| 1248 input_handler_->DidOverscroll(accumulated_overscroll, | 1248 input_handler_->DidOverscroll(accumulated_overscroll, |
| 1249 latest_overscroll_delta); | 1249 latest_overscroll_delta); |
| 1250 | 1250 |
| 1251 // The next call to animate will no longer scroll vertically. | 1251 // The next call to animate will no longer scroll vertically. |
| 1252 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate()); | 1252 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); |
| 1253 EXPECT_CALL(mock_input_handler_, | 1253 EXPECT_CALL(mock_input_handler_, |
| 1254 ScrollBy(testing::_, | 1254 ScrollBy(testing::_, |
| 1255 testing::Property(&gfx::Vector2dF::y, testing::Eq(0)))) | 1255 testing::Property(&gfx::Vector2dF::y, testing::Eq(0)))) |
| 1256 .WillOnce(testing::Return(true)); | 1256 .WillOnce(testing::Return(true)); |
| 1257 time += base::TimeDelta::FromMilliseconds(10); | 1257 time += base::TimeDelta::FromMilliseconds(10); |
| 1258 input_handler_->Animate(time); | 1258 input_handler_->Animate(time); |
| 1259 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); | 1259 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); |
| 1260 | 1260 |
| 1261 // Simulate hitting the right content edge. | 1261 // Simulate hitting the right content edge. |
| 1262 accumulated_overscroll = gfx::Vector2dF(100, 100); | 1262 accumulated_overscroll = gfx::Vector2dF(100, 100); |
| 1263 latest_overscroll_delta = gfx::Vector2dF(100, 0); | 1263 latest_overscroll_delta = gfx::Vector2dF(100, 0); |
| 1264 EXPECT_CALL(mock_client_, | 1264 EXPECT_CALL(mock_client_, |
| 1265 DidOverscroll(testing::AllOf( | 1265 DidOverscroll(testing::AllOf( |
| 1266 testing::Field(&DidOverscrollParams::accumulated_overscroll, | 1266 testing::Field(&DidOverscrollParams::accumulated_overscroll, |
| 1267 testing::Eq(accumulated_overscroll)), | 1267 testing::Eq(accumulated_overscroll)), |
| 1268 testing::Field(&DidOverscrollParams::latest_overscroll_delta, | 1268 testing::Field(&DidOverscrollParams::latest_overscroll_delta, |
| 1269 testing::Eq(latest_overscroll_delta)), | 1269 testing::Eq(latest_overscroll_delta)), |
| 1270 testing::Field( | 1270 testing::Field( |
| 1271 &DidOverscrollParams::current_fling_velocity, | 1271 &DidOverscrollParams::current_fling_velocity, |
| 1272 testing::Property(&gfx::Vector2dF::x, testing::Lt(0)))))); | 1272 testing::Property(&gfx::Vector2dF::x, testing::Lt(0)))))); |
| 1273 input_handler_->DidOverscroll(accumulated_overscroll, | 1273 input_handler_->DidOverscroll(accumulated_overscroll, |
| 1274 latest_overscroll_delta); | 1274 latest_overscroll_delta); |
| 1275 // The next call to animate will no longer scroll horizontally or vertically, | 1275 // The next call to animate will no longer scroll horizontally or vertically, |
| 1276 // and the fling should be cancelled. | 1276 // and the fling should be cancelled. |
| 1277 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate()).Times(0); | 1277 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()).Times(0); |
| 1278 EXPECT_CALL(mock_input_handler_, ScrollBy(testing::_, testing::_)).Times(0); | 1278 EXPECT_CALL(mock_input_handler_, ScrollBy(testing::_, testing::_)).Times(0); |
| 1279 EXPECT_CALL(mock_input_handler_, ScrollEnd()); | 1279 EXPECT_CALL(mock_input_handler_, ScrollEnd()); |
| 1280 time += base::TimeDelta::FromMilliseconds(10); | 1280 time += base::TimeDelta::FromMilliseconds(10); |
| 1281 input_handler_->Animate(time); | 1281 input_handler_->Animate(time); |
| 1282 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); | 1282 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); |
| 1283 EXPECT_FALSE(input_handler_->gesture_scroll_on_impl_thread_for_testing()); | 1283 EXPECT_FALSE(input_handler_->gesture_scroll_on_impl_thread_for_testing()); |
| 1284 } | 1284 } |
| 1285 | 1285 |
| 1286 TEST_F(InputHandlerProxyTest, MultiTouchPointHitTestNegative) { | 1286 TEST_F(InputHandlerProxyTest, MultiTouchPointHitTestNegative) { |
| 1287 // None of the three touch points fall in the touch region. So the event | 1287 // 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 Loading... |
| 1356 EXPECT_TRUE(input_handler_->gesture_scroll_on_impl_thread_for_testing()); | 1356 EXPECT_TRUE(input_handler_->gesture_scroll_on_impl_thread_for_testing()); |
| 1357 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); | 1357 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); |
| 1358 | 1358 |
| 1359 // On the fling start, animation should be scheduled, but no scrolling occurs. | 1359 // On the fling start, animation should be scheduled, but no scrolling occurs. |
| 1360 gesture_.type = WebInputEvent::GestureFlingStart; | 1360 gesture_.type = WebInputEvent::GestureFlingStart; |
| 1361 WebFloatPoint fling_delta = WebFloatPoint(1000, 1000); | 1361 WebFloatPoint fling_delta = WebFloatPoint(1000, 1000); |
| 1362 gesture_.data.flingStart.velocityX = fling_delta.x; | 1362 gesture_.data.flingStart.velocityX = fling_delta.x; |
| 1363 gesture_.data.flingStart.velocityY = fling_delta.y; | 1363 gesture_.data.flingStart.velocityY = fling_delta.y; |
| 1364 EXPECT_CALL(mock_input_handler_, FlingScrollBegin()) | 1364 EXPECT_CALL(mock_input_handler_, FlingScrollBegin()) |
| 1365 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); | 1365 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); |
| 1366 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate()); | 1366 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); |
| 1367 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); | 1367 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); |
| 1368 EXPECT_TRUE(input_handler_->gesture_scroll_on_impl_thread_for_testing()); | 1368 EXPECT_TRUE(input_handler_->gesture_scroll_on_impl_thread_for_testing()); |
| 1369 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); | 1369 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); |
| 1370 | 1370 |
| 1371 // Keyboard events received during a fling should cancel the active fling. | 1371 // Keyboard events received during a fling should cancel the active fling. |
| 1372 EXPECT_CALL(mock_input_handler_, ScrollEnd()); | 1372 EXPECT_CALL(mock_input_handler_, ScrollEnd()); |
| 1373 EXPECT_EQ(InputHandlerProxy::DID_NOT_HANDLE, | 1373 EXPECT_EQ(InputHandlerProxy::DID_NOT_HANDLE, |
| 1374 input_handler_->HandleInputEvent(key_event)); | 1374 input_handler_->HandleInputEvent(key_event)); |
| 1375 EXPECT_FALSE(input_handler_->gesture_scroll_on_impl_thread_for_testing()); | 1375 EXPECT_FALSE(input_handler_->gesture_scroll_on_impl_thread_for_testing()); |
| 1376 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); | 1376 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1411 int modifiers = WebInputEvent::ControlKey; | 1411 int modifiers = WebInputEvent::ControlKey; |
| 1412 gesture_.timeStampSeconds = startTimeOffset.InSecondsF(); | 1412 gesture_.timeStampSeconds = startTimeOffset.InSecondsF(); |
| 1413 gesture_.data.flingStart.velocityX = fling_delta.x; | 1413 gesture_.data.flingStart.velocityX = fling_delta.x; |
| 1414 gesture_.data.flingStart.velocityY = fling_delta.y; | 1414 gesture_.data.flingStart.velocityY = fling_delta.y; |
| 1415 gesture_.sourceDevice = WebGestureEvent::Touchscreen; | 1415 gesture_.sourceDevice = WebGestureEvent::Touchscreen; |
| 1416 gesture_.x = fling_point.x; | 1416 gesture_.x = fling_point.x; |
| 1417 gesture_.y = fling_point.y; | 1417 gesture_.y = fling_point.y; |
| 1418 gesture_.globalX = fling_global_point.x; | 1418 gesture_.globalX = fling_global_point.x; |
| 1419 gesture_.globalY = fling_global_point.y; | 1419 gesture_.globalY = fling_global_point.y; |
| 1420 gesture_.modifiers = modifiers; | 1420 gesture_.modifiers = modifiers; |
| 1421 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate()); | 1421 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); |
| 1422 EXPECT_CALL(mock_input_handler_, FlingScrollBegin()) | 1422 EXPECT_CALL(mock_input_handler_, FlingScrollBegin()) |
| 1423 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); | 1423 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); |
| 1424 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); | 1424 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); |
| 1425 | 1425 |
| 1426 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); | 1426 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); |
| 1427 | 1427 |
| 1428 // If we get a negative time delta, that is, the Animation tick time happens | 1428 // If we get a negative time delta, that is, the Animation tick time happens |
| 1429 // before the fling's start time then we should *not* try scrolling and | 1429 // before the fling's start time then we should *not* try scrolling and |
| 1430 // instead reset the fling start time. | 1430 // instead reset the fling start time. |
| 1431 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate()); | 1431 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); |
| 1432 EXPECT_CALL(mock_input_handler_, | 1432 EXPECT_CALL(mock_input_handler_, |
| 1433 ScrollBy(testing::_, | 1433 ScrollBy(testing::_, |
| 1434 testing::_)).Times(0); | 1434 testing::_)).Times(0); |
| 1435 base::TimeTicks time = | 1435 base::TimeTicks time = |
| 1436 base::TimeTicks() + base::TimeDelta::FromMilliseconds(8); | 1436 base::TimeTicks() + base::TimeDelta::FromMilliseconds(8); |
| 1437 input_handler_->Animate(time); | 1437 input_handler_->Animate(time); |
| 1438 | 1438 |
| 1439 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); | 1439 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); |
| 1440 | 1440 |
| 1441 // The first call should have reset the start time so subsequent calls should | 1441 // The first call should have reset the start time so subsequent calls should |
| 1442 // generate scroll events. | 1442 // generate scroll events. |
| 1443 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate()); | 1443 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); |
| 1444 EXPECT_CALL(mock_input_handler_, | 1444 EXPECT_CALL(mock_input_handler_, |
| 1445 ScrollBy(testing::_, | 1445 ScrollBy(testing::_, |
| 1446 testing::Property(&gfx::Vector2dF::x, testing::Lt(0)))) | 1446 testing::Property(&gfx::Vector2dF::x, testing::Lt(0)))) |
| 1447 .WillOnce(testing::Return(true)); | 1447 .WillOnce(testing::Return(true)); |
| 1448 | 1448 |
| 1449 input_handler_->Animate(time + base::TimeDelta::FromMilliseconds(1)); | 1449 input_handler_->Animate(time + base::TimeDelta::FromMilliseconds(1)); |
| 1450 | 1450 |
| 1451 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); | 1451 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); |
| 1452 | 1452 |
| 1453 EXPECT_CALL(mock_input_handler_, ScrollEnd()); | 1453 EXPECT_CALL(mock_input_handler_, ScrollEnd()); |
| 1454 gesture_.type = WebInputEvent::GestureFlingCancel; | 1454 gesture_.type = WebInputEvent::GestureFlingCancel; |
| 1455 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); | 1455 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); |
| 1456 } | 1456 } |
| 1457 | 1457 |
| 1458 } // namespace | 1458 } // namespace |
| 1459 } // namespace content | 1459 } // namespace content |
| OLD | NEW |