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