OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "content/renderer/input/input_handler_proxy.h" | 5 #include "content/renderer/input/input_handler_proxy.h" |
6 | 6 |
7 #include "base/basictypes.h" | 7 #include "base/basictypes.h" |
8 #include "base/memory/scoped_ptr.h" | 8 #include "base/memory/scoped_ptr.h" |
9 #include "cc/base/swap_promise_monitor.h" | 9 #include "cc/base/swap_promise_monitor.h" |
10 #include "content/common/input/did_overscroll_params.h" | 10 #include "content/common/input/did_overscroll_params.h" |
11 #include "content/renderer/input/input_handler_proxy_client.h" | 11 #include "content/renderer/input/input_handler_proxy_client.h" |
12 #include "testing/gmock/include/gmock/gmock.h" | 12 #include "testing/gmock/include/gmock/gmock.h" |
13 #include "testing/gtest/include/gtest/gtest.h" | 13 #include "testing/gtest/include/gtest/gtest.h" |
14 #include "third_party/WebKit/public/platform/WebFloatPoint.h" | 14 #include "third_party/WebKit/public/platform/WebFloatPoint.h" |
15 #include "third_party/WebKit/public/platform/WebFloatSize.h" | 15 #include "third_party/WebKit/public/platform/WebFloatSize.h" |
16 #include "third_party/WebKit/public/platform/WebGestureCurve.h" | 16 #include "third_party/WebKit/public/platform/WebGestureCurve.h" |
17 #include "third_party/WebKit/public/platform/WebPoint.h" | 17 #include "third_party/WebKit/public/platform/WebPoint.h" |
18 #include "third_party/WebKit/public/web/WebInputEvent.h" | 18 #include "third_party/WebKit/public/web/WebInputEvent.h" |
19 #include "ui/events/latency_info.h" | 19 #include "ui/events/latency_info.h" |
20 | 20 |
21 using blink::WebActiveWheelFlingParameters; | 21 using blink::WebActiveWheelFlingParameters; |
22 using blink::WebFloatPoint; | 22 using blink::WebFloatPoint; |
23 using blink::WebFloatSize; | 23 using blink::WebFloatSize; |
| 24 using blink::WebGestureDevice; |
24 using blink::WebGestureEvent; | 25 using blink::WebGestureEvent; |
25 using blink::WebInputEvent; | 26 using blink::WebInputEvent; |
26 using blink::WebKeyboardEvent; | 27 using blink::WebKeyboardEvent; |
27 using blink::WebMouseWheelEvent; | 28 using blink::WebMouseWheelEvent; |
28 using blink::WebPoint; | 29 using blink::WebPoint; |
29 using blink::WebSize; | 30 using blink::WebSize; |
30 using blink::WebTouchEvent; | 31 using blink::WebTouchEvent; |
31 using blink::WebTouchPoint; | 32 using blink::WebTouchPoint; |
32 | 33 |
33 namespace content { | 34 namespace content { |
34 namespace { | 35 namespace { |
35 | 36 |
36 double InSecondsF(const base::TimeTicks& time) { | 37 double InSecondsF(const base::TimeTicks& time) { |
37 return (time - base::TimeTicks()).InSecondsF(); | 38 return (time - base::TimeTicks()).InSecondsF(); |
38 } | 39 } |
39 | 40 |
40 WebGestureEvent CreateFling(base::TimeTicks timestamp, | 41 WebGestureEvent CreateFling(base::TimeTicks timestamp, |
41 WebGestureEvent::SourceDevice source_device, | 42 WebGestureDevice source_device, |
42 WebFloatPoint velocity, | 43 WebFloatPoint velocity, |
43 WebPoint point, | 44 WebPoint point, |
44 WebPoint global_point, | 45 WebPoint global_point, |
45 int modifiers) { | 46 int modifiers) { |
46 WebGestureEvent fling; | 47 WebGestureEvent fling; |
47 fling.type = WebInputEvent::GestureFlingStart; | 48 fling.type = WebInputEvent::GestureFlingStart; |
48 fling.sourceDevice = source_device; | 49 fling.sourceDevice = source_device; |
49 fling.timeStampSeconds = (timestamp - base::TimeTicks()).InSecondsF(); | 50 fling.timeStampSeconds = (timestamp - base::TimeTicks()).InSecondsF(); |
50 fling.data.flingStart.velocityX = velocity.x; | 51 fling.data.flingStart.velocityX = velocity.x; |
51 fling.data.flingStart.velocityY = velocity.y; | 52 fling.data.flingStart.velocityY = velocity.y; |
52 fling.x = point.x; | 53 fling.x = point.x; |
53 fling.y = point.y; | 54 fling.y = point.y; |
54 fling.globalX = global_point.x; | 55 fling.globalX = global_point.x; |
55 fling.globalY = global_point.y; | 56 fling.globalY = global_point.y; |
56 fling.modifiers = modifiers; | 57 fling.modifiers = modifiers; |
57 return fling; | 58 return fling; |
58 } | 59 } |
59 | 60 |
60 WebGestureEvent CreateFling(WebGestureEvent::SourceDevice source_device, | 61 WebGestureEvent CreateFling(WebGestureDevice source_device, |
61 WebFloatPoint velocity, | 62 WebFloatPoint velocity, |
62 WebPoint point, | 63 WebPoint point, |
63 WebPoint global_point, | 64 WebPoint global_point, |
64 int modifiers) { | 65 int modifiers) { |
65 return CreateFling(base::TimeTicks(), | 66 return CreateFling(base::TimeTicks(), |
66 source_device, | 67 source_device, |
67 velocity, | 68 velocity, |
68 point, | 69 point, |
69 global_point, | 70 global_point, |
70 modifiers); | 71 modifiers); |
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
158 public: | 159 public: |
159 MockInputHandlerProxyClient() {} | 160 MockInputHandlerProxyClient() {} |
160 virtual ~MockInputHandlerProxyClient() {} | 161 virtual ~MockInputHandlerProxyClient() {} |
161 | 162 |
162 virtual void WillShutdown() OVERRIDE {} | 163 virtual void WillShutdown() OVERRIDE {} |
163 | 164 |
164 MOCK_METHOD1(TransferActiveWheelFlingAnimation, | 165 MOCK_METHOD1(TransferActiveWheelFlingAnimation, |
165 void(const WebActiveWheelFlingParameters&)); | 166 void(const WebActiveWheelFlingParameters&)); |
166 | 167 |
167 virtual blink::WebGestureCurve* CreateFlingAnimationCurve( | 168 virtual blink::WebGestureCurve* CreateFlingAnimationCurve( |
168 int deviceSource, | 169 WebGestureDevice deviceSource, |
169 const WebFloatPoint& velocity, | 170 const WebFloatPoint& velocity, |
170 const WebSize& cumulative_scroll) OVERRIDE { | 171 const WebSize& cumulative_scroll) OVERRIDE { |
171 return new FakeWebGestureCurve( | 172 return new FakeWebGestureCurve( |
172 blink::WebFloatSize(velocity.x, velocity.y), | 173 blink::WebFloatSize(velocity.x, velocity.y), |
173 blink::WebFloatSize(cumulative_scroll.width, cumulative_scroll.height)); | 174 blink::WebFloatSize(cumulative_scroll.width, cumulative_scroll.height)); |
174 } | 175 } |
175 | 176 |
176 MOCK_METHOD1(DidOverscroll, void(const DidOverscrollParams&)); | 177 MOCK_METHOD1(DidOverscroll, void(const DidOverscrollParams&)); |
177 virtual void DidStopFlinging() OVERRIDE {} | 178 virtual void DidStopFlinging() OVERRIDE {} |
178 | 179 |
(...skipping 25 matching lines...) Expand all Loading... |
204 // This is defined as a macro because when an expectation is not satisfied the | 205 // This is defined as a macro because when an expectation is not satisfied the |
205 // only output you get | 206 // only output you get |
206 // out of gmock is the line number that set the expectation. | 207 // out of gmock is the line number that set the expectation. |
207 #define VERIFY_AND_RESET_MOCKS() \ | 208 #define VERIFY_AND_RESET_MOCKS() \ |
208 do { \ | 209 do { \ |
209 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); \ | 210 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); \ |
210 testing::Mock::VerifyAndClearExpectations(&mock_client_); \ | 211 testing::Mock::VerifyAndClearExpectations(&mock_client_); \ |
211 } while (false) | 212 } while (false) |
212 | 213 |
213 void StartFling(base::TimeTicks timestamp, | 214 void StartFling(base::TimeTicks timestamp, |
214 WebGestureEvent::SourceDevice source_device, | 215 WebGestureDevice source_device, |
215 WebFloatPoint velocity, | 216 WebFloatPoint velocity, |
216 WebPoint position) { | 217 WebPoint position) { |
217 expected_disposition_ = InputHandlerProxy::DID_HANDLE; | 218 expected_disposition_ = InputHandlerProxy::DID_HANDLE; |
218 VERIFY_AND_RESET_MOCKS(); | 219 VERIFY_AND_RESET_MOCKS(); |
219 | 220 |
220 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) | 221 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) |
221 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); | 222 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); |
222 gesture_.type = WebInputEvent::GestureScrollBegin; | 223 gesture_.type = WebInputEvent::GestureScrollBegin; |
223 gesture_.sourceDevice = source_device; | 224 gesture_.sourceDevice = source_device; |
224 EXPECT_EQ(expected_disposition_, | 225 EXPECT_EQ(expected_disposition_, |
(...skipping 254 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
479 expected_disposition_ = InputHandlerProxy::DID_HANDLE; | 480 expected_disposition_ = InputHandlerProxy::DID_HANDLE; |
480 VERIFY_AND_RESET_MOCKS(); | 481 VERIFY_AND_RESET_MOCKS(); |
481 | 482 |
482 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) | 483 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) |
483 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); | 484 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); |
484 EXPECT_CALL(mock_input_handler_, ScrollEnd()); | 485 EXPECT_CALL(mock_input_handler_, ScrollEnd()); |
485 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate()); | 486 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate()); |
486 | 487 |
487 gesture_.type = WebInputEvent::GestureFlingStart; | 488 gesture_.type = WebInputEvent::GestureFlingStart; |
488 gesture_.data.flingStart.velocityX = 10; | 489 gesture_.data.flingStart.velocityX = 10; |
489 gesture_.sourceDevice = WebGestureEvent::Touchpad; | 490 gesture_.sourceDevice = blink::WebGestureDeviceTouchpad; |
490 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); | 491 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); |
491 | 492 |
492 VERIFY_AND_RESET_MOCKS(); | 493 VERIFY_AND_RESET_MOCKS(); |
493 | 494 |
494 // Verify that a GestureFlingCancel during an animation cancels it. | 495 // Verify that a GestureFlingCancel during an animation cancels it. |
495 gesture_.type = WebInputEvent::GestureFlingCancel; | 496 gesture_.type = WebInputEvent::GestureFlingCancel; |
496 gesture_.sourceDevice = WebGestureEvent::Touchpad; | 497 gesture_.sourceDevice = blink::WebGestureDeviceTouchpad; |
497 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); | 498 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); |
498 } | 499 } |
499 | 500 |
500 TEST_F(InputHandlerProxyTest, GestureFlingOnMainThreadTouchpad) { | 501 TEST_F(InputHandlerProxyTest, GestureFlingOnMainThreadTouchpad) { |
501 // We should send all events to the widget for this gesture. | 502 // We should send all events to the widget for this gesture. |
502 expected_disposition_ = InputHandlerProxy::DID_NOT_HANDLE; | 503 expected_disposition_ = InputHandlerProxy::DID_NOT_HANDLE; |
503 VERIFY_AND_RESET_MOCKS(); | 504 VERIFY_AND_RESET_MOCKS(); |
504 | 505 |
505 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) | 506 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) |
506 .WillOnce(testing::Return(cc::InputHandler::ScrollOnMainThread)); | 507 .WillOnce(testing::Return(cc::InputHandler::ScrollOnMainThread)); |
507 | 508 |
508 gesture_.type = WebInputEvent::GestureFlingStart; | 509 gesture_.type = WebInputEvent::GestureFlingStart; |
509 gesture_.sourceDevice = WebGestureEvent::Touchpad; | 510 gesture_.sourceDevice = blink::WebGestureDeviceTouchpad; |
510 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); | 511 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); |
511 | 512 |
512 // Since we returned ScrollStatusOnMainThread from scrollBegin, ensure the | 513 // Since we returned ScrollStatusOnMainThread from scrollBegin, ensure the |
513 // input handler knows it's scrolling off the impl thread | 514 // input handler knows it's scrolling off the impl thread |
514 ASSERT_FALSE(input_handler_->gesture_scroll_on_impl_thread_for_testing()); | 515 ASSERT_FALSE(input_handler_->gesture_scroll_on_impl_thread_for_testing()); |
515 | 516 |
516 VERIFY_AND_RESET_MOCKS(); | 517 VERIFY_AND_RESET_MOCKS(); |
517 | 518 |
518 // Even if we didn't start a fling ourselves, we still need to send the cancel | 519 // Even if we didn't start a fling ourselves, we still need to send the cancel |
519 // event to the widget. | 520 // event to the widget. |
520 gesture_.type = WebInputEvent::GestureFlingCancel; | 521 gesture_.type = WebInputEvent::GestureFlingCancel; |
521 gesture_.sourceDevice = WebGestureEvent::Touchpad; | 522 gesture_.sourceDevice = blink::WebGestureDeviceTouchpad; |
522 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); | 523 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); |
523 } | 524 } |
524 | 525 |
525 TEST_F(InputHandlerProxyTest, GestureFlingIgnoredTouchpad) { | 526 TEST_F(InputHandlerProxyTest, GestureFlingIgnoredTouchpad) { |
526 expected_disposition_ = InputHandlerProxy::DID_NOT_HANDLE; | 527 expected_disposition_ = InputHandlerProxy::DID_NOT_HANDLE; |
527 VERIFY_AND_RESET_MOCKS(); | 528 VERIFY_AND_RESET_MOCKS(); |
528 | 529 |
529 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) | 530 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) |
530 .WillOnce(testing::Return(cc::InputHandler::ScrollIgnored)); | 531 .WillOnce(testing::Return(cc::InputHandler::ScrollIgnored)); |
531 | 532 |
532 gesture_.type = WebInputEvent::GestureFlingStart; | 533 gesture_.type = WebInputEvent::GestureFlingStart; |
533 gesture_.sourceDevice = WebGestureEvent::Touchpad; | 534 gesture_.sourceDevice = blink::WebGestureDeviceTouchpad; |
534 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); | 535 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); |
535 | 536 |
536 expected_disposition_ = InputHandlerProxy::DROP_EVENT; | 537 expected_disposition_ = InputHandlerProxy::DROP_EVENT; |
537 VERIFY_AND_RESET_MOCKS(); | 538 VERIFY_AND_RESET_MOCKS(); |
538 | 539 |
539 // Since the previous fling was ignored, we should also be dropping the next | 540 // Since the previous fling was ignored, we should also be dropping the next |
540 // fling_cancel. | 541 // fling_cancel. |
541 gesture_.type = WebInputEvent::GestureFlingCancel; | 542 gesture_.type = WebInputEvent::GestureFlingCancel; |
542 gesture_.sourceDevice = WebGestureEvent::Touchpad; | 543 gesture_.sourceDevice = blink::WebGestureDeviceTouchpad; |
543 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); | 544 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); |
544 } | 545 } |
545 | 546 |
546 TEST_F(InputHandlerProxyTest, GestureFlingAnimatesTouchpad) { | 547 TEST_F(InputHandlerProxyTest, GestureFlingAnimatesTouchpad) { |
547 // We shouldn't send any events to the widget for this gesture. | 548 // We shouldn't send any events to the widget for this gesture. |
548 expected_disposition_ = InputHandlerProxy::DID_HANDLE; | 549 expected_disposition_ = InputHandlerProxy::DID_HANDLE; |
549 VERIFY_AND_RESET_MOCKS(); | 550 VERIFY_AND_RESET_MOCKS(); |
550 | 551 |
551 // On the fling start, we should schedule an animation but not actually start | 552 // On the fling start, we should schedule an animation but not actually start |
552 // scrolling. | 553 // scrolling. |
553 gesture_.type = WebInputEvent::GestureFlingStart; | 554 gesture_.type = WebInputEvent::GestureFlingStart; |
554 WebFloatPoint fling_delta = WebFloatPoint(1000, 0); | 555 WebFloatPoint fling_delta = WebFloatPoint(1000, 0); |
555 WebPoint fling_point = WebPoint(7, 13); | 556 WebPoint fling_point = WebPoint(7, 13); |
556 WebPoint fling_global_point = WebPoint(17, 23); | 557 WebPoint fling_global_point = WebPoint(17, 23); |
557 // Note that for trackpad, wheel events with the Control modifier are | 558 // Note that for trackpad, wheel events with the Control modifier are |
558 // special (reserved for zoom), so don't set that here. | 559 // special (reserved for zoom), so don't set that here. |
559 int modifiers = WebInputEvent::ShiftKey | WebInputEvent::AltKey; | 560 int modifiers = WebInputEvent::ShiftKey | WebInputEvent::AltKey; |
560 gesture_ = CreateFling(WebGestureEvent::Touchpad, | 561 gesture_ = CreateFling(blink::WebGestureDeviceTouchpad, |
561 fling_delta, | 562 fling_delta, |
562 fling_point, | 563 fling_point, |
563 fling_global_point, | 564 fling_global_point, |
564 modifiers); | 565 modifiers); |
565 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate()); | 566 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate()); |
566 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) | 567 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) |
567 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); | 568 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); |
568 EXPECT_CALL(mock_input_handler_, ScrollEnd()); | 569 EXPECT_CALL(mock_input_handler_, ScrollEnd()); |
569 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); | 570 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); |
570 | 571 |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
655 expected_disposition_ = InputHandlerProxy::DID_HANDLE; | 656 expected_disposition_ = InputHandlerProxy::DID_HANDLE; |
656 VERIFY_AND_RESET_MOCKS(); | 657 VERIFY_AND_RESET_MOCKS(); |
657 | 658 |
658 // Start a gesture fling in the -X direction with zero Y movement. | 659 // Start a gesture fling in the -X direction with zero Y movement. |
659 WebFloatPoint fling_delta = WebFloatPoint(1000, 0); | 660 WebFloatPoint fling_delta = WebFloatPoint(1000, 0); |
660 WebPoint fling_point = WebPoint(7, 13); | 661 WebPoint fling_point = WebPoint(7, 13); |
661 WebPoint fling_global_point = WebPoint(17, 23); | 662 WebPoint fling_global_point = WebPoint(17, 23); |
662 // Note that for trackpad, wheel events with the Control modifier are | 663 // Note that for trackpad, wheel events with the Control modifier are |
663 // special (reserved for zoom), so don't set that here. | 664 // special (reserved for zoom), so don't set that here. |
664 int modifiers = WebInputEvent::ShiftKey | WebInputEvent::AltKey; | 665 int modifiers = WebInputEvent::ShiftKey | WebInputEvent::AltKey; |
665 gesture_ = CreateFling(WebGestureEvent::Touchpad, | 666 gesture_ = CreateFling(blink::WebGestureDeviceTouchpad, |
666 fling_delta, | 667 fling_delta, |
667 fling_point, | 668 fling_point, |
668 fling_global_point, | 669 fling_global_point, |
669 modifiers); | 670 modifiers); |
670 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate()); | 671 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate()); |
671 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) | 672 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) |
672 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); | 673 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); |
673 EXPECT_CALL(mock_input_handler_, ScrollEnd()); | 674 EXPECT_CALL(mock_input_handler_, ScrollEnd()); |
674 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); | 675 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); |
675 | 676 |
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
756 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); | 757 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); |
757 | 758 |
758 VERIFY_AND_RESET_MOCKS(); | 759 VERIFY_AND_RESET_MOCKS(); |
759 input_handler_->MainThreadHasStoppedFlinging(); | 760 input_handler_->MainThreadHasStoppedFlinging(); |
760 | 761 |
761 // Start a second gesture fling, this time in the +Y direction with no X. | 762 // Start a second gesture fling, this time in the +Y direction with no X. |
762 fling_delta = WebFloatPoint(0, -1000); | 763 fling_delta = WebFloatPoint(0, -1000); |
763 fling_point = WebPoint(95, 87); | 764 fling_point = WebPoint(95, 87); |
764 fling_global_point = WebPoint(32, 71); | 765 fling_global_point = WebPoint(32, 71); |
765 modifiers = WebInputEvent::AltKey; | 766 modifiers = WebInputEvent::AltKey; |
766 gesture_ = CreateFling(WebGestureEvent::Touchpad, | 767 gesture_ = CreateFling(blink::WebGestureDeviceTouchpad, |
767 fling_delta, | 768 fling_delta, |
768 fling_point, | 769 fling_point, |
769 fling_global_point, | 770 fling_global_point, |
770 modifiers); | 771 modifiers); |
771 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate()); | 772 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate()); |
772 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) | 773 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) |
773 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); | 774 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); |
774 EXPECT_CALL(mock_input_handler_, ScrollEnd()); | 775 EXPECT_CALL(mock_input_handler_, ScrollEnd()); |
775 expected_disposition_ = InputHandlerProxy::DID_HANDLE; | 776 expected_disposition_ = InputHandlerProxy::DID_HANDLE; |
776 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); | 777 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
828 } | 829 } |
829 | 830 |
830 TEST_F(InputHandlerProxyTest, GestureFlingStartedTouchscreen) { | 831 TEST_F(InputHandlerProxyTest, GestureFlingStartedTouchscreen) { |
831 // We shouldn't send any events to the widget for this gesture. | 832 // We shouldn't send any events to the widget for this gesture. |
832 expected_disposition_ = InputHandlerProxy::DID_HANDLE; | 833 expected_disposition_ = InputHandlerProxy::DID_HANDLE; |
833 VERIFY_AND_RESET_MOCKS(); | 834 VERIFY_AND_RESET_MOCKS(); |
834 | 835 |
835 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) | 836 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) |
836 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); | 837 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); |
837 gesture_.type = WebInputEvent::GestureScrollBegin; | 838 gesture_.type = WebInputEvent::GestureScrollBegin; |
838 gesture_.sourceDevice = WebGestureEvent::Touchscreen; | 839 gesture_.sourceDevice = blink::WebGestureDeviceTouchscreen; |
839 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); | 840 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); |
840 | 841 |
841 VERIFY_AND_RESET_MOCKS(); | 842 VERIFY_AND_RESET_MOCKS(); |
842 | 843 |
843 EXPECT_CALL(mock_input_handler_, FlingScrollBegin()) | 844 EXPECT_CALL(mock_input_handler_, FlingScrollBegin()) |
844 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); | 845 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); |
845 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate()); | 846 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate()); |
846 | 847 |
847 gesture_.type = WebInputEvent::GestureFlingStart; | 848 gesture_.type = WebInputEvent::GestureFlingStart; |
848 gesture_.data.flingStart.velocityX = 10; | 849 gesture_.data.flingStart.velocityX = 10; |
849 gesture_.sourceDevice = WebGestureEvent::Touchscreen; | 850 gesture_.sourceDevice = blink::WebGestureDeviceTouchscreen; |
850 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); | 851 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); |
851 | 852 |
852 VERIFY_AND_RESET_MOCKS(); | 853 VERIFY_AND_RESET_MOCKS(); |
853 | 854 |
854 EXPECT_CALL(mock_input_handler_, ScrollEnd()); | 855 EXPECT_CALL(mock_input_handler_, ScrollEnd()); |
855 | 856 |
856 // Verify that a GestureFlingCancel during an animation cancels it. | 857 // Verify that a GestureFlingCancel during an animation cancels it. |
857 gesture_.type = WebInputEvent::GestureFlingCancel; | 858 gesture_.type = WebInputEvent::GestureFlingCancel; |
858 gesture_.sourceDevice = WebGestureEvent::Touchscreen; | 859 gesture_.sourceDevice = blink::WebGestureDeviceTouchscreen; |
859 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); | 860 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); |
860 } | 861 } |
861 | 862 |
862 TEST_F(InputHandlerProxyTest, GestureFlingOnMainThreadTouchscreen) { | 863 TEST_F(InputHandlerProxyTest, GestureFlingOnMainThreadTouchscreen) { |
863 // We should send all events to the widget for this gesture. | 864 // We should send all events to the widget for this gesture. |
864 expected_disposition_ = InputHandlerProxy::DID_NOT_HANDLE; | 865 expected_disposition_ = InputHandlerProxy::DID_NOT_HANDLE; |
865 VERIFY_AND_RESET_MOCKS(); | 866 VERIFY_AND_RESET_MOCKS(); |
866 | 867 |
867 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) | 868 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) |
868 .WillOnce(testing::Return(cc::InputHandler::ScrollOnMainThread)); | 869 .WillOnce(testing::Return(cc::InputHandler::ScrollOnMainThread)); |
869 | 870 |
870 gesture_.type = WebInputEvent::GestureScrollBegin; | 871 gesture_.type = WebInputEvent::GestureScrollBegin; |
871 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); | 872 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); |
872 | 873 |
873 VERIFY_AND_RESET_MOCKS(); | 874 VERIFY_AND_RESET_MOCKS(); |
874 | 875 |
875 EXPECT_CALL(mock_input_handler_, FlingScrollBegin()).Times(0); | 876 EXPECT_CALL(mock_input_handler_, FlingScrollBegin()).Times(0); |
876 | 877 |
877 gesture_.type = WebInputEvent::GestureFlingStart; | 878 gesture_.type = WebInputEvent::GestureFlingStart; |
878 gesture_.sourceDevice = WebGestureEvent::Touchscreen; | 879 gesture_.sourceDevice = blink::WebGestureDeviceTouchscreen; |
879 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); | 880 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); |
880 | 881 |
881 VERIFY_AND_RESET_MOCKS(); | 882 VERIFY_AND_RESET_MOCKS(); |
882 | 883 |
883 // Even if we didn't start a fling ourselves, we still need to send the cancel | 884 // Even if we didn't start a fling ourselves, we still need to send the cancel |
884 // event to the widget. | 885 // event to the widget. |
885 gesture_.type = WebInputEvent::GestureFlingCancel; | 886 gesture_.type = WebInputEvent::GestureFlingCancel; |
886 gesture_.sourceDevice = WebGestureEvent::Touchscreen; | 887 gesture_.sourceDevice = blink::WebGestureDeviceTouchscreen; |
887 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); | 888 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); |
888 } | 889 } |
889 | 890 |
890 TEST_F(InputHandlerProxyTest, GestureFlingIgnoredTouchscreen) { | 891 TEST_F(InputHandlerProxyTest, GestureFlingIgnoredTouchscreen) { |
891 expected_disposition_ = InputHandlerProxy::DID_HANDLE; | 892 expected_disposition_ = InputHandlerProxy::DID_HANDLE; |
892 VERIFY_AND_RESET_MOCKS(); | 893 VERIFY_AND_RESET_MOCKS(); |
893 | 894 |
894 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) | 895 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) |
895 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); | 896 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); |
896 | 897 |
897 gesture_.type = WebInputEvent::GestureScrollBegin; | 898 gesture_.type = WebInputEvent::GestureScrollBegin; |
898 gesture_.sourceDevice = WebGestureEvent::Touchscreen; | 899 gesture_.sourceDevice = blink::WebGestureDeviceTouchscreen; |
899 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); | 900 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); |
900 | 901 |
901 expected_disposition_ = InputHandlerProxy::DROP_EVENT; | 902 expected_disposition_ = InputHandlerProxy::DROP_EVENT; |
902 VERIFY_AND_RESET_MOCKS(); | 903 VERIFY_AND_RESET_MOCKS(); |
903 | 904 |
904 EXPECT_CALL(mock_input_handler_, FlingScrollBegin()) | 905 EXPECT_CALL(mock_input_handler_, FlingScrollBegin()) |
905 .WillOnce(testing::Return(cc::InputHandler::ScrollIgnored)); | 906 .WillOnce(testing::Return(cc::InputHandler::ScrollIgnored)); |
906 | 907 |
907 gesture_.type = WebInputEvent::GestureFlingStart; | 908 gesture_.type = WebInputEvent::GestureFlingStart; |
908 gesture_.sourceDevice = WebGestureEvent::Touchscreen; | 909 gesture_.sourceDevice = blink::WebGestureDeviceTouchscreen; |
909 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); | 910 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); |
910 | 911 |
911 VERIFY_AND_RESET_MOCKS(); | 912 VERIFY_AND_RESET_MOCKS(); |
912 | 913 |
913 // Even if we didn't start a fling ourselves, we still need to send the cancel | 914 // Even if we didn't start a fling ourselves, we still need to send the cancel |
914 // event to the widget. | 915 // event to the widget. |
915 gesture_.type = WebInputEvent::GestureFlingCancel; | 916 gesture_.type = WebInputEvent::GestureFlingCancel; |
916 gesture_.sourceDevice = WebGestureEvent::Touchscreen; | 917 gesture_.sourceDevice = blink::WebGestureDeviceTouchscreen; |
917 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); | 918 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); |
918 } | 919 } |
919 | 920 |
920 TEST_F(InputHandlerProxyTest, GestureFlingAnimatesTouchscreen) { | 921 TEST_F(InputHandlerProxyTest, GestureFlingAnimatesTouchscreen) { |
921 // We shouldn't send any events to the widget for this gesture. | 922 // We shouldn't send any events to the widget for this gesture. |
922 expected_disposition_ = InputHandlerProxy::DID_HANDLE; | 923 expected_disposition_ = InputHandlerProxy::DID_HANDLE; |
923 VERIFY_AND_RESET_MOCKS(); | 924 VERIFY_AND_RESET_MOCKS(); |
924 | 925 |
925 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) | 926 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) |
926 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); | 927 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); |
927 | 928 |
928 gesture_.type = WebInputEvent::GestureScrollBegin; | 929 gesture_.type = WebInputEvent::GestureScrollBegin; |
929 gesture_.sourceDevice = WebGestureEvent::Touchscreen; | 930 gesture_.sourceDevice = blink::WebGestureDeviceTouchscreen; |
930 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); | 931 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); |
931 | 932 |
932 VERIFY_AND_RESET_MOCKS(); | 933 VERIFY_AND_RESET_MOCKS(); |
933 | 934 |
934 // On the fling start, we should schedule an animation but not actually start | 935 // On the fling start, we should schedule an animation but not actually start |
935 // scrolling. | 936 // scrolling. |
936 WebFloatPoint fling_delta = WebFloatPoint(100, 0); | 937 WebFloatPoint fling_delta = WebFloatPoint(100, 0); |
937 WebPoint fling_point = WebPoint(7, 13); | 938 WebPoint fling_point = WebPoint(7, 13); |
938 WebPoint fling_global_point = WebPoint(17, 23); | 939 WebPoint fling_global_point = WebPoint(17, 23); |
939 // Note that for touchscreen the control modifier is not special. | 940 // Note that for touchscreen the control modifier is not special. |
940 int modifiers = WebInputEvent::ControlKey; | 941 int modifiers = WebInputEvent::ControlKey; |
941 gesture_ = CreateFling(WebGestureEvent::Touchscreen, | 942 gesture_ = CreateFling(blink::WebGestureDeviceTouchscreen, |
942 fling_delta, | 943 fling_delta, |
943 fling_point, | 944 fling_point, |
944 fling_global_point, | 945 fling_global_point, |
945 modifiers); | 946 modifiers); |
946 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate()); | 947 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate()); |
947 EXPECT_CALL(mock_input_handler_, FlingScrollBegin()) | 948 EXPECT_CALL(mock_input_handler_, FlingScrollBegin()) |
948 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); | 949 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); |
949 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); | 950 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); |
950 | 951 |
951 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); | 952 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); |
(...skipping 26 matching lines...) Expand all Loading... |
978 | 979 |
979 TEST_F(InputHandlerProxyTest, GestureFlingWithValidTimestamp) { | 980 TEST_F(InputHandlerProxyTest, GestureFlingWithValidTimestamp) { |
980 // We shouldn't send any events to the widget for this gesture. | 981 // We shouldn't send any events to the widget for this gesture. |
981 expected_disposition_ = InputHandlerProxy::DID_HANDLE; | 982 expected_disposition_ = InputHandlerProxy::DID_HANDLE; |
982 VERIFY_AND_RESET_MOCKS(); | 983 VERIFY_AND_RESET_MOCKS(); |
983 | 984 |
984 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) | 985 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) |
985 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); | 986 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); |
986 | 987 |
987 gesture_.type = WebInputEvent::GestureScrollBegin; | 988 gesture_.type = WebInputEvent::GestureScrollBegin; |
988 gesture_.sourceDevice = WebGestureEvent::Touchscreen; | 989 gesture_.sourceDevice = blink::WebGestureDeviceTouchscreen; |
989 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); | 990 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); |
990 | 991 |
991 VERIFY_AND_RESET_MOCKS(); | 992 VERIFY_AND_RESET_MOCKS(); |
992 | 993 |
993 // On the fling start, we should schedule an animation but not actually start | 994 // On the fling start, we should schedule an animation but not actually start |
994 // scrolling. | 995 // scrolling. |
995 base::TimeDelta dt = base::TimeDelta::FromMilliseconds(10); | 996 base::TimeDelta dt = base::TimeDelta::FromMilliseconds(10); |
996 base::TimeTicks time = base::TimeTicks() + dt; | 997 base::TimeTicks time = base::TimeTicks() + dt; |
997 WebFloatPoint fling_delta = WebFloatPoint(100, 0); | 998 WebFloatPoint fling_delta = WebFloatPoint(100, 0); |
998 WebPoint fling_point = WebPoint(7, 13); | 999 WebPoint fling_point = WebPoint(7, 13); |
999 WebPoint fling_global_point = WebPoint(17, 23); | 1000 WebPoint fling_global_point = WebPoint(17, 23); |
1000 int modifiers = WebInputEvent::ControlKey; | 1001 int modifiers = WebInputEvent::ControlKey; |
1001 gesture_ = CreateFling(time, | 1002 gesture_ = CreateFling(time, |
1002 WebGestureEvent::Touchscreen, | 1003 blink::WebGestureDeviceTouchscreen, |
1003 fling_delta, | 1004 fling_delta, |
1004 fling_point, | 1005 fling_point, |
1005 fling_global_point, | 1006 fling_global_point, |
1006 modifiers); | 1007 modifiers); |
1007 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate()); | 1008 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate()); |
1008 EXPECT_CALL(mock_input_handler_, FlingScrollBegin()) | 1009 EXPECT_CALL(mock_input_handler_, FlingScrollBegin()) |
1009 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); | 1010 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); |
1010 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); | 1011 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); |
1011 | 1012 |
1012 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); | 1013 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); |
(...skipping 19 matching lines...) Expand all Loading... |
1032 | 1033 |
1033 TEST_F(InputHandlerProxyTest, GestureFlingWithInvalidTimestamp) { | 1034 TEST_F(InputHandlerProxyTest, GestureFlingWithInvalidTimestamp) { |
1034 // We shouldn't send any events to the widget for this gesture. | 1035 // We shouldn't send any events to the widget for this gesture. |
1035 expected_disposition_ = InputHandlerProxy::DID_HANDLE; | 1036 expected_disposition_ = InputHandlerProxy::DID_HANDLE; |
1036 VERIFY_AND_RESET_MOCKS(); | 1037 VERIFY_AND_RESET_MOCKS(); |
1037 | 1038 |
1038 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) | 1039 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) |
1039 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); | 1040 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); |
1040 | 1041 |
1041 gesture_.type = WebInputEvent::GestureScrollBegin; | 1042 gesture_.type = WebInputEvent::GestureScrollBegin; |
1042 gesture_.sourceDevice = WebGestureEvent::Touchscreen; | 1043 gesture_.sourceDevice = blink::WebGestureDeviceTouchscreen; |
1043 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); | 1044 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); |
1044 | 1045 |
1045 VERIFY_AND_RESET_MOCKS(); | 1046 VERIFY_AND_RESET_MOCKS(); |
1046 | 1047 |
1047 // On the fling start, we should schedule an animation but not actually start | 1048 // On the fling start, we should schedule an animation but not actually start |
1048 // scrolling. | 1049 // scrolling. |
1049 base::TimeDelta start_time_offset = base::TimeDelta::FromMilliseconds(10); | 1050 base::TimeDelta start_time_offset = base::TimeDelta::FromMilliseconds(10); |
1050 gesture_.type = WebInputEvent::GestureFlingStart; | 1051 gesture_.type = WebInputEvent::GestureFlingStart; |
1051 WebFloatPoint fling_delta = WebFloatPoint(100, 0); | 1052 WebFloatPoint fling_delta = WebFloatPoint(100, 0); |
1052 WebPoint fling_point = WebPoint(7, 13); | 1053 WebPoint fling_point = WebPoint(7, 13); |
1053 WebPoint fling_global_point = WebPoint(17, 23); | 1054 WebPoint fling_global_point = WebPoint(17, 23); |
1054 int modifiers = WebInputEvent::ControlKey; | 1055 int modifiers = WebInputEvent::ControlKey; |
1055 gesture_.timeStampSeconds = start_time_offset.InSecondsF(); | 1056 gesture_.timeStampSeconds = start_time_offset.InSecondsF(); |
1056 gesture_.data.flingStart.velocityX = fling_delta.x; | 1057 gesture_.data.flingStart.velocityX = fling_delta.x; |
1057 gesture_.data.flingStart.velocityY = fling_delta.y; | 1058 gesture_.data.flingStart.velocityY = fling_delta.y; |
1058 gesture_.sourceDevice = WebGestureEvent::Touchscreen; | 1059 gesture_.sourceDevice = blink::WebGestureDeviceTouchscreen; |
1059 gesture_.x = fling_point.x; | 1060 gesture_.x = fling_point.x; |
1060 gesture_.y = fling_point.y; | 1061 gesture_.y = fling_point.y; |
1061 gesture_.globalX = fling_global_point.x; | 1062 gesture_.globalX = fling_global_point.x; |
1062 gesture_.globalY = fling_global_point.y; | 1063 gesture_.globalY = fling_global_point.y; |
1063 gesture_.modifiers = modifiers; | 1064 gesture_.modifiers = modifiers; |
1064 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate()); | 1065 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate()); |
1065 EXPECT_CALL(mock_input_handler_, FlingScrollBegin()) | 1066 EXPECT_CALL(mock_input_handler_, FlingScrollBegin()) |
1066 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); | 1067 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); |
1067 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); | 1068 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); |
1068 | 1069 |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1111 | 1112 |
1112 expected_disposition_ = InputHandlerProxy::DID_HANDLE; | 1113 expected_disposition_ = InputHandlerProxy::DID_HANDLE; |
1113 VERIFY_AND_RESET_MOCKS(); | 1114 VERIFY_AND_RESET_MOCKS(); |
1114 | 1115 |
1115 // On the fling start, we should schedule an animation but not actually start | 1116 // On the fling start, we should schedule an animation but not actually start |
1116 // scrolling. | 1117 // scrolling. |
1117 WebFloatPoint fling_delta = WebFloatPoint(100, 0); | 1118 WebFloatPoint fling_delta = WebFloatPoint(100, 0); |
1118 WebPoint fling_point = WebPoint(7, 13); | 1119 WebPoint fling_point = WebPoint(7, 13); |
1119 WebPoint fling_global_point = WebPoint(17, 23); | 1120 WebPoint fling_global_point = WebPoint(17, 23); |
1120 int modifiers = WebInputEvent::ControlKey | WebInputEvent::AltKey; | 1121 int modifiers = WebInputEvent::ControlKey | WebInputEvent::AltKey; |
1121 gesture_ = CreateFling(WebGestureEvent::Touchscreen, | 1122 gesture_ = CreateFling(blink::WebGestureDeviceTouchscreen, |
1122 fling_delta, | 1123 fling_delta, |
1123 fling_point, | 1124 fling_point, |
1124 fling_global_point, | 1125 fling_global_point, |
1125 modifiers); | 1126 modifiers); |
1126 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate()); | 1127 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate()); |
1127 EXPECT_CALL(mock_input_handler_, FlingScrollBegin()) | 1128 EXPECT_CALL(mock_input_handler_, FlingScrollBegin()) |
1128 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); | 1129 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); |
1129 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); | 1130 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); |
1130 | 1131 |
1131 // |gesture_scroll_on_impl_thread_| should still be true after | 1132 // |gesture_scroll_on_impl_thread_| should still be true after |
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1232 | 1233 |
1233 TEST_F(InputHandlerProxyTest, GestureFlingNotCancelledBySmallTimeDelta) { | 1234 TEST_F(InputHandlerProxyTest, GestureFlingNotCancelledBySmallTimeDelta) { |
1234 // We shouldn't send any events to the widget for this gesture. | 1235 // We shouldn't send any events to the widget for this gesture. |
1235 expected_disposition_ = InputHandlerProxy::DID_HANDLE; | 1236 expected_disposition_ = InputHandlerProxy::DID_HANDLE; |
1236 VERIFY_AND_RESET_MOCKS(); | 1237 VERIFY_AND_RESET_MOCKS(); |
1237 | 1238 |
1238 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) | 1239 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) |
1239 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); | 1240 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); |
1240 | 1241 |
1241 gesture_.type = WebInputEvent::GestureScrollBegin; | 1242 gesture_.type = WebInputEvent::GestureScrollBegin; |
1242 gesture_.sourceDevice = WebGestureEvent::Touchscreen; | 1243 gesture_.sourceDevice = blink::WebGestureDeviceTouchscreen; |
1243 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); | 1244 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); |
1244 | 1245 |
1245 VERIFY_AND_RESET_MOCKS(); | 1246 VERIFY_AND_RESET_MOCKS(); |
1246 | 1247 |
1247 // On the fling start, we should schedule an animation but not actually start | 1248 // On the fling start, we should schedule an animation but not actually start |
1248 // scrolling. | 1249 // scrolling. |
1249 base::TimeDelta dt = base::TimeDelta::FromMilliseconds(10); | 1250 base::TimeDelta dt = base::TimeDelta::FromMilliseconds(10); |
1250 base::TimeTicks time = base::TimeTicks() + dt; | 1251 base::TimeTicks time = base::TimeTicks() + dt; |
1251 WebFloatPoint fling_delta = WebFloatPoint(100, 0); | 1252 WebFloatPoint fling_delta = WebFloatPoint(100, 0); |
1252 WebPoint fling_point = WebPoint(7, 13); | 1253 WebPoint fling_point = WebPoint(7, 13); |
1253 WebPoint fling_global_point = WebPoint(17, 23); | 1254 WebPoint fling_global_point = WebPoint(17, 23); |
1254 int modifiers = WebInputEvent::ControlKey; | 1255 int modifiers = WebInputEvent::ControlKey; |
1255 gesture_ = CreateFling(time, | 1256 gesture_ = CreateFling(time, |
1256 WebGestureEvent::Touchscreen, | 1257 blink::WebGestureDeviceTouchscreen, |
1257 fling_delta, | 1258 fling_delta, |
1258 fling_point, | 1259 fling_point, |
1259 fling_global_point, | 1260 fling_global_point, |
1260 modifiers); | 1261 modifiers); |
1261 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate()); | 1262 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate()); |
1262 EXPECT_CALL(mock_input_handler_, FlingScrollBegin()) | 1263 EXPECT_CALL(mock_input_handler_, FlingScrollBegin()) |
1263 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); | 1264 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); |
1264 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); | 1265 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); |
1265 | 1266 |
1266 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); | 1267 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1308 } | 1309 } |
1309 | 1310 |
1310 TEST_F(InputHandlerProxyTest, GestureFlingCancelledAfterBothAxesStopScrolling) { | 1311 TEST_F(InputHandlerProxyTest, GestureFlingCancelledAfterBothAxesStopScrolling) { |
1311 // We shouldn't send any events to the widget for this gesture. | 1312 // We shouldn't send any events to the widget for this gesture. |
1312 expected_disposition_ = InputHandlerProxy::DID_HANDLE; | 1313 expected_disposition_ = InputHandlerProxy::DID_HANDLE; |
1313 VERIFY_AND_RESET_MOCKS(); | 1314 VERIFY_AND_RESET_MOCKS(); |
1314 | 1315 |
1315 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) | 1316 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) |
1316 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); | 1317 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); |
1317 gesture_.type = WebInputEvent::GestureScrollBegin; | 1318 gesture_.type = WebInputEvent::GestureScrollBegin; |
1318 gesture_.sourceDevice = WebGestureEvent::Touchscreen; | 1319 gesture_.sourceDevice = blink::WebGestureDeviceTouchscreen; |
1319 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); | 1320 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); |
1320 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); | 1321 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); |
1321 | 1322 |
1322 // On the fling start, we should schedule an animation but not actually start | 1323 // On the fling start, we should schedule an animation but not actually start |
1323 // scrolling. | 1324 // scrolling. |
1324 gesture_.type = WebInputEvent::GestureFlingStart; | 1325 gesture_.type = WebInputEvent::GestureFlingStart; |
1325 WebFloatPoint fling_delta = WebFloatPoint(100, 100); | 1326 WebFloatPoint fling_delta = WebFloatPoint(100, 100); |
1326 gesture_.data.flingStart.velocityX = fling_delta.x; | 1327 gesture_.data.flingStart.velocityX = fling_delta.x; |
1327 gesture_.data.flingStart.velocityY = fling_delta.y; | 1328 gesture_.data.flingStart.velocityY = fling_delta.y; |
1328 EXPECT_CALL(mock_input_handler_, FlingScrollBegin()) | 1329 EXPECT_CALL(mock_input_handler_, FlingScrollBegin()) |
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1450 } | 1451 } |
1451 | 1452 |
1452 TEST_F(InputHandlerProxyTest, GestureFlingCancelledByKeyboardEvent) { | 1453 TEST_F(InputHandlerProxyTest, GestureFlingCancelledByKeyboardEvent) { |
1453 // We shouldn't send any events to the widget for this gesture. | 1454 // We shouldn't send any events to the widget for this gesture. |
1454 expected_disposition_ = InputHandlerProxy::DID_HANDLE; | 1455 expected_disposition_ = InputHandlerProxy::DID_HANDLE; |
1455 VERIFY_AND_RESET_MOCKS(); | 1456 VERIFY_AND_RESET_MOCKS(); |
1456 | 1457 |
1457 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) | 1458 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) |
1458 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); | 1459 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); |
1459 gesture_.type = WebInputEvent::GestureScrollBegin; | 1460 gesture_.type = WebInputEvent::GestureScrollBegin; |
1460 gesture_.sourceDevice = WebGestureEvent::Touchscreen; | 1461 gesture_.sourceDevice = blink::WebGestureDeviceTouchscreen; |
1461 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); | 1462 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); |
1462 EXPECT_TRUE(input_handler_->gesture_scroll_on_impl_thread_for_testing()); | 1463 EXPECT_TRUE(input_handler_->gesture_scroll_on_impl_thread_for_testing()); |
1463 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); | 1464 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); |
1464 | 1465 |
1465 // Keyboard events received during a scroll should have no effect. | 1466 // Keyboard events received during a scroll should have no effect. |
1466 WebKeyboardEvent key_event; | 1467 WebKeyboardEvent key_event; |
1467 key_event.type = WebInputEvent::KeyDown; | 1468 key_event.type = WebInputEvent::KeyDown; |
1468 EXPECT_EQ(InputHandlerProxy::DID_NOT_HANDLE, | 1469 EXPECT_EQ(InputHandlerProxy::DID_NOT_HANDLE, |
1469 input_handler_->HandleInputEvent(key_event)); | 1470 input_handler_->HandleInputEvent(key_event)); |
1470 EXPECT_TRUE(input_handler_->gesture_scroll_on_impl_thread_for_testing()); | 1471 EXPECT_TRUE(input_handler_->gesture_scroll_on_impl_thread_for_testing()); |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1503 | 1504 |
1504 TEST_F(InputHandlerProxyTest, GestureFlingWithNegativeTimeDelta) { | 1505 TEST_F(InputHandlerProxyTest, GestureFlingWithNegativeTimeDelta) { |
1505 // We shouldn't send any events to the widget for this gesture. | 1506 // We shouldn't send any events to the widget for this gesture. |
1506 expected_disposition_ = InputHandlerProxy::DID_HANDLE; | 1507 expected_disposition_ = InputHandlerProxy::DID_HANDLE; |
1507 VERIFY_AND_RESET_MOCKS(); | 1508 VERIFY_AND_RESET_MOCKS(); |
1508 | 1509 |
1509 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) | 1510 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) |
1510 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); | 1511 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); |
1511 | 1512 |
1512 gesture_.type = WebInputEvent::GestureScrollBegin; | 1513 gesture_.type = WebInputEvent::GestureScrollBegin; |
1513 gesture_.sourceDevice = WebGestureEvent::Touchscreen; | 1514 gesture_.sourceDevice = blink::WebGestureDeviceTouchscreen; |
1514 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); | 1515 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); |
1515 | 1516 |
1516 VERIFY_AND_RESET_MOCKS(); | 1517 VERIFY_AND_RESET_MOCKS(); |
1517 | 1518 |
1518 // On the fling start, we should schedule an animation but not actually start | 1519 // On the fling start, we should schedule an animation but not actually start |
1519 // scrolling. | 1520 // scrolling. |
1520 base::TimeDelta dt = base::TimeDelta::FromMilliseconds(10); | 1521 base::TimeDelta dt = base::TimeDelta::FromMilliseconds(10); |
1521 base::TimeTicks time = base::TimeTicks() + dt; | 1522 base::TimeTicks time = base::TimeTicks() + dt; |
1522 WebFloatPoint fling_delta = WebFloatPoint(100, 0); | 1523 WebFloatPoint fling_delta = WebFloatPoint(100, 0); |
1523 WebPoint fling_point = WebPoint(7, 13); | 1524 WebPoint fling_point = WebPoint(7, 13); |
1524 WebPoint fling_global_point = WebPoint(17, 23); | 1525 WebPoint fling_global_point = WebPoint(17, 23); |
1525 int modifiers = WebInputEvent::ControlKey; | 1526 int modifiers = WebInputEvent::ControlKey; |
1526 gesture_ = CreateFling(time, | 1527 gesture_ = CreateFling(time, |
1527 WebGestureEvent::Touchscreen, | 1528 blink::WebGestureDeviceTouchscreen, |
1528 fling_delta, | 1529 fling_delta, |
1529 fling_point, | 1530 fling_point, |
1530 fling_global_point, | 1531 fling_global_point, |
1531 modifiers); | 1532 modifiers); |
1532 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate()); | 1533 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate()); |
1533 EXPECT_CALL(mock_input_handler_, FlingScrollBegin()) | 1534 EXPECT_CALL(mock_input_handler_, FlingScrollBegin()) |
1534 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); | 1535 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); |
1535 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); | 1536 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); |
1536 | 1537 |
1537 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); | 1538 testing::Mock::VerifyAndClearExpectations(&mock_input_handler_); |
(...skipping 26 matching lines...) Expand all Loading... |
1564 gesture_.type = WebInputEvent::GestureFlingCancel; | 1565 gesture_.type = WebInputEvent::GestureFlingCancel; |
1565 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); | 1566 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); |
1566 } | 1567 } |
1567 | 1568 |
1568 TEST_F(InputHandlerProxyTest, FlingBoost) { | 1569 TEST_F(InputHandlerProxyTest, FlingBoost) { |
1569 base::TimeDelta dt = base::TimeDelta::FromMilliseconds(10); | 1570 base::TimeDelta dt = base::TimeDelta::FromMilliseconds(10); |
1570 base::TimeTicks time = base::TimeTicks() + dt; | 1571 base::TimeTicks time = base::TimeTicks() + dt; |
1571 base::TimeTicks last_animate_time = time; | 1572 base::TimeTicks last_animate_time = time; |
1572 WebFloatPoint fling_delta = WebFloatPoint(1000, 0); | 1573 WebFloatPoint fling_delta = WebFloatPoint(1000, 0); |
1573 WebPoint fling_point = WebPoint(7, 13); | 1574 WebPoint fling_point = WebPoint(7, 13); |
1574 StartFling(time, WebGestureEvent::Touchscreen, fling_delta, fling_point); | 1575 StartFling( |
| 1576 time, blink::WebGestureDeviceTouchscreen, fling_delta, fling_point); |
1575 | 1577 |
1576 // Now cancel the fling. The fling cancellation should be deferred to allow | 1578 // Now cancel the fling. The fling cancellation should be deferred to allow |
1577 // fling boosting events to arrive. | 1579 // fling boosting events to arrive. |
1578 time += dt; | 1580 time += dt; |
1579 CancelFling(time); | 1581 CancelFling(time); |
1580 | 1582 |
1581 // The GestureScrollBegin should be swallowed by the fling if it hits the same | 1583 // The GestureScrollBegin should be swallowed by the fling if it hits the same |
1582 // scrolling layer. | 1584 // scrolling layer. |
1583 EXPECT_CALL(mock_input_handler_, | 1585 EXPECT_CALL(mock_input_handler_, |
1584 IsCurrentlyScrollingLayerAt(testing::_, testing::_)) | 1586 IsCurrentlyScrollingLayerAt(testing::_, testing::_)) |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1627 .WillOnce(testing::Return(true)); | 1629 .WillOnce(testing::Return(true)); |
1628 input_handler_->Animate(time); | 1630 input_handler_->Animate(time); |
1629 last_animate_time = time; | 1631 last_animate_time = time; |
1630 | 1632 |
1631 VERIFY_AND_RESET_MOCKS(); | 1633 VERIFY_AND_RESET_MOCKS(); |
1632 | 1634 |
1633 // GestureFlingStart in the same direction and at sufficient speed should | 1635 // GestureFlingStart in the same direction and at sufficient speed should |
1634 // boost the active fling. | 1636 // boost the active fling. |
1635 | 1637 |
1636 gesture_ = CreateFling(time, | 1638 gesture_ = CreateFling(time, |
1637 WebGestureEvent::Touchscreen, | 1639 blink::WebGestureDeviceTouchscreen, |
1638 fling_delta, | 1640 fling_delta, |
1639 fling_point, | 1641 fling_point, |
1640 fling_point, | 1642 fling_point, |
1641 0); | 1643 0); |
1642 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); | 1644 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); |
1643 VERIFY_AND_RESET_MOCKS(); | 1645 VERIFY_AND_RESET_MOCKS(); |
1644 | 1646 |
1645 time += dt; | 1647 time += dt; |
1646 // Note we get *2x* as much delta because 2 flings have combined. | 1648 // Note we get *2x* as much delta because 2 flings have combined. |
1647 expected_delta = 2 * (time - last_animate_time).InSecondsF() * -fling_delta.x; | 1649 expected_delta = 2 * (time - last_animate_time).InSecondsF() * -fling_delta.x; |
1648 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate()); | 1650 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate()); |
1649 EXPECT_CALL(mock_input_handler_, | 1651 EXPECT_CALL(mock_input_handler_, |
1650 ScrollBy(testing::_, | 1652 ScrollBy(testing::_, |
1651 testing::Property(&gfx::Vector2dF::x, | 1653 testing::Property(&gfx::Vector2dF::x, |
1652 testing::Eq(expected_delta)))) | 1654 testing::Eq(expected_delta)))) |
1653 .WillOnce(testing::Return(true)); | 1655 .WillOnce(testing::Return(true)); |
1654 input_handler_->Animate(time); | 1656 input_handler_->Animate(time); |
1655 last_animate_time = time; | 1657 last_animate_time = time; |
1656 | 1658 |
1657 VERIFY_AND_RESET_MOCKS(); | 1659 VERIFY_AND_RESET_MOCKS(); |
1658 | 1660 |
1659 // Repeated GestureFlingStarts should accumulate. | 1661 // Repeated GestureFlingStarts should accumulate. |
1660 | 1662 |
1661 CancelFling(time); | 1663 CancelFling(time); |
1662 gesture_ = CreateFling(time, | 1664 gesture_ = CreateFling(time, |
1663 WebGestureEvent::Touchscreen, | 1665 blink::WebGestureDeviceTouchscreen, |
1664 fling_delta, | 1666 fling_delta, |
1665 fling_point, | 1667 fling_point, |
1666 fling_point, | 1668 fling_point, |
1667 0); | 1669 0); |
1668 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); | 1670 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); |
1669 VERIFY_AND_RESET_MOCKS(); | 1671 VERIFY_AND_RESET_MOCKS(); |
1670 | 1672 |
1671 time += dt; | 1673 time += dt; |
1672 // Note we get *3x* as much delta because 3 flings have combined. | 1674 // Note we get *3x* as much delta because 3 flings have combined. |
1673 expected_delta = 3 * (time - last_animate_time).InSecondsF() * -fling_delta.x; | 1675 expected_delta = 3 * (time - last_animate_time).InSecondsF() * -fling_delta.x; |
(...skipping 23 matching lines...) Expand all Loading... |
1697 input_handler_->Animate(time); | 1699 input_handler_->Animate(time); |
1698 | 1700 |
1699 VERIFY_AND_RESET_MOCKS(); | 1701 VERIFY_AND_RESET_MOCKS(); |
1700 } | 1702 } |
1701 | 1703 |
1702 TEST_F(InputHandlerProxyTest, NoFlingBoostIfScrollTargetsDifferentLayer) { | 1704 TEST_F(InputHandlerProxyTest, NoFlingBoostIfScrollTargetsDifferentLayer) { |
1703 base::TimeDelta dt = base::TimeDelta::FromMilliseconds(10); | 1705 base::TimeDelta dt = base::TimeDelta::FromMilliseconds(10); |
1704 base::TimeTicks time = base::TimeTicks() + dt; | 1706 base::TimeTicks time = base::TimeTicks() + dt; |
1705 WebFloatPoint fling_delta = WebFloatPoint(1000, 0); | 1707 WebFloatPoint fling_delta = WebFloatPoint(1000, 0); |
1706 WebPoint fling_point = WebPoint(7, 13); | 1708 WebPoint fling_point = WebPoint(7, 13); |
1707 StartFling(time, WebGestureEvent::Touchscreen, fling_delta, fling_point); | 1709 StartFling( |
| 1710 time, blink::WebGestureDeviceTouchscreen, fling_delta, fling_point); |
1708 | 1711 |
1709 // Cancel the fling. The fling cancellation should be deferred to allow | 1712 // Cancel the fling. The fling cancellation should be deferred to allow |
1710 // fling boosting events to arrive. | 1713 // fling boosting events to arrive. |
1711 time += dt; | 1714 time += dt; |
1712 CancelFling(time); | 1715 CancelFling(time); |
1713 | 1716 |
1714 // If the GestureScrollBegin targets a different layer, the fling should be | 1717 // If the GestureScrollBegin targets a different layer, the fling should be |
1715 // cancelled and the scroll should be handled as usual. | 1718 // cancelled and the scroll should be handled as usual. |
1716 EXPECT_CALL(mock_input_handler_, | 1719 EXPECT_CALL(mock_input_handler_, |
1717 IsCurrentlyScrollingLayerAt(testing::_, testing::_)) | 1720 IsCurrentlyScrollingLayerAt(testing::_, testing::_)) |
1718 .WillOnce(testing::Return(false)); | 1721 .WillOnce(testing::Return(false)); |
1719 EXPECT_CALL(mock_input_handler_, ScrollEnd()); | 1722 EXPECT_CALL(mock_input_handler_, ScrollEnd()); |
1720 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) | 1723 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) |
1721 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); | 1724 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); |
1722 | 1725 |
1723 time += dt; | 1726 time += dt; |
1724 gesture_.timeStampSeconds = InSecondsF(time); | 1727 gesture_.timeStampSeconds = InSecondsF(time); |
1725 gesture_.type = WebInputEvent::GestureScrollBegin; | 1728 gesture_.type = WebInputEvent::GestureScrollBegin; |
1726 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); | 1729 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); |
1727 | 1730 |
1728 VERIFY_AND_RESET_MOCKS(); | 1731 VERIFY_AND_RESET_MOCKS(); |
1729 } | 1732 } |
1730 | 1733 |
1731 TEST_F(InputHandlerProxyTest, NoFlingBoostIfScrollDelayed) { | 1734 TEST_F(InputHandlerProxyTest, NoFlingBoostIfScrollDelayed) { |
1732 base::TimeDelta dt = base::TimeDelta::FromMilliseconds(10); | 1735 base::TimeDelta dt = base::TimeDelta::FromMilliseconds(10); |
1733 base::TimeTicks time = base::TimeTicks() + dt; | 1736 base::TimeTicks time = base::TimeTicks() + dt; |
1734 WebFloatPoint fling_delta = WebFloatPoint(1000, 0); | 1737 WebFloatPoint fling_delta = WebFloatPoint(1000, 0); |
1735 WebPoint fling_point = WebPoint(7, 13); | 1738 WebPoint fling_point = WebPoint(7, 13); |
1736 StartFling(time, WebGestureEvent::Touchscreen, fling_delta, fling_point); | 1739 StartFling( |
| 1740 time, blink::WebGestureDeviceTouchscreen, fling_delta, fling_point); |
1737 | 1741 |
1738 // Cancel the fling. The fling cancellation should be deferred to allow | 1742 // Cancel the fling. The fling cancellation should be deferred to allow |
1739 // fling boosting events to arrive. | 1743 // fling boosting events to arrive. |
1740 time += dt; | 1744 time += dt; |
1741 CancelFling(time); | 1745 CancelFling(time); |
1742 | 1746 |
1743 // The GestureScrollBegin should be swallowed by the fling if it hits the same | 1747 // The GestureScrollBegin should be swallowed by the fling if it hits the same |
1744 // scrolling layer. | 1748 // scrolling layer. |
1745 EXPECT_CALL(mock_input_handler_, | 1749 EXPECT_CALL(mock_input_handler_, |
1746 IsCurrentlyScrollingLayerAt(testing::_, testing::_)) | 1750 IsCurrentlyScrollingLayerAt(testing::_, testing::_)) |
(...skipping 15 matching lines...) Expand all Loading... |
1762 input_handler_->Animate(time); | 1766 input_handler_->Animate(time); |
1763 | 1767 |
1764 VERIFY_AND_RESET_MOCKS(); | 1768 VERIFY_AND_RESET_MOCKS(); |
1765 } | 1769 } |
1766 | 1770 |
1767 TEST_F(InputHandlerProxyTest, NoFlingBoostIfScrollInDifferentDirection) { | 1771 TEST_F(InputHandlerProxyTest, NoFlingBoostIfScrollInDifferentDirection) { |
1768 base::TimeDelta dt = base::TimeDelta::FromMilliseconds(10); | 1772 base::TimeDelta dt = base::TimeDelta::FromMilliseconds(10); |
1769 base::TimeTicks time = base::TimeTicks() + dt; | 1773 base::TimeTicks time = base::TimeTicks() + dt; |
1770 WebFloatPoint fling_delta = WebFloatPoint(1000, 0); | 1774 WebFloatPoint fling_delta = WebFloatPoint(1000, 0); |
1771 WebPoint fling_point = WebPoint(7, 13); | 1775 WebPoint fling_point = WebPoint(7, 13); |
1772 StartFling(time, WebGestureEvent::Touchscreen, fling_delta, fling_point); | 1776 StartFling( |
| 1777 time, blink::WebGestureDeviceTouchscreen, fling_delta, fling_point); |
1773 | 1778 |
1774 // Cancel the fling. The fling cancellation should be deferred to allow | 1779 // Cancel the fling. The fling cancellation should be deferred to allow |
1775 // fling boosting events to arrive. | 1780 // fling boosting events to arrive. |
1776 time += dt; | 1781 time += dt; |
1777 CancelFling(time); | 1782 CancelFling(time); |
1778 | 1783 |
1779 // The GestureScrollBegin should be swallowed by the fling if it hits the same | 1784 // The GestureScrollBegin should be swallowed by the fling if it hits the same |
1780 // scrolling layer. | 1785 // scrolling layer. |
1781 EXPECT_CALL(mock_input_handler_, | 1786 EXPECT_CALL(mock_input_handler_, |
1782 IsCurrentlyScrollingLayerAt(testing::_, testing::_)) | 1787 IsCurrentlyScrollingLayerAt(testing::_, testing::_)) |
(...skipping 23 matching lines...) Expand all Loading... |
1806 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); | 1811 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); |
1807 | 1812 |
1808 VERIFY_AND_RESET_MOCKS(); | 1813 VERIFY_AND_RESET_MOCKS(); |
1809 } | 1814 } |
1810 | 1815 |
1811 TEST_F(InputHandlerProxyTest, NoFlingBoostIfFlingTooSlow) { | 1816 TEST_F(InputHandlerProxyTest, NoFlingBoostIfFlingTooSlow) { |
1812 base::TimeDelta dt = base::TimeDelta::FromMilliseconds(10); | 1817 base::TimeDelta dt = base::TimeDelta::FromMilliseconds(10); |
1813 base::TimeTicks time = base::TimeTicks() + dt; | 1818 base::TimeTicks time = base::TimeTicks() + dt; |
1814 WebFloatPoint fling_delta = WebFloatPoint(1000, 0); | 1819 WebFloatPoint fling_delta = WebFloatPoint(1000, 0); |
1815 WebPoint fling_point = WebPoint(7, 13); | 1820 WebPoint fling_point = WebPoint(7, 13); |
1816 StartFling(time, WebGestureEvent::Touchscreen, fling_delta, fling_point); | 1821 StartFling( |
| 1822 time, blink::WebGestureDeviceTouchscreen, fling_delta, fling_point); |
1817 | 1823 |
1818 // Cancel the fling. The fling cancellation should be deferred to allow | 1824 // Cancel the fling. The fling cancellation should be deferred to allow |
1819 // fling boosting events to arrive. | 1825 // fling boosting events to arrive. |
1820 time += dt; | 1826 time += dt; |
1821 CancelFling(time); | 1827 CancelFling(time); |
1822 | 1828 |
1823 // If the new fling is too slow, no boosting should take place, with the new | 1829 // If the new fling is too slow, no boosting should take place, with the new |
1824 // fling replacing the old. | 1830 // fling replacing the old. |
1825 WebFloatPoint small_fling_delta = WebFloatPoint(100, 0); | 1831 WebFloatPoint small_fling_delta = WebFloatPoint(100, 0); |
1826 gesture_ = CreateFling(time, | 1832 gesture_ = CreateFling(time, |
1827 WebGestureEvent::Touchscreen, | 1833 blink::WebGestureDeviceTouchscreen, |
1828 small_fling_delta, | 1834 small_fling_delta, |
1829 fling_point, | 1835 fling_point, |
1830 fling_point, | 1836 fling_point, |
1831 0); | 1837 0); |
1832 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); | 1838 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); |
1833 | 1839 |
1834 VERIFY_AND_RESET_MOCKS(); | 1840 VERIFY_AND_RESET_MOCKS(); |
1835 | 1841 |
1836 // Note that the new fling delta uses the *slow*, unboosted fling velocity. | 1842 // Note that the new fling delta uses the *slow*, unboosted fling velocity. |
1837 time += dt; | 1843 time += dt; |
1838 float expected_delta = dt.InSecondsF() * -small_fling_delta.x; | 1844 float expected_delta = dt.InSecondsF() * -small_fling_delta.x; |
1839 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate()); | 1845 EXPECT_CALL(mock_input_handler_, SetNeedsAnimate()); |
1840 EXPECT_CALL(mock_input_handler_, | 1846 EXPECT_CALL(mock_input_handler_, |
1841 ScrollBy(testing::_, | 1847 ScrollBy(testing::_, |
1842 testing::Property(&gfx::Vector2dF::x, | 1848 testing::Property(&gfx::Vector2dF::x, |
1843 testing::Eq(expected_delta)))) | 1849 testing::Eq(expected_delta)))) |
1844 .WillOnce(testing::Return(true)); | 1850 .WillOnce(testing::Return(true)); |
1845 input_handler_->Animate(time); | 1851 input_handler_->Animate(time); |
1846 | 1852 |
1847 VERIFY_AND_RESET_MOCKS(); | 1853 VERIFY_AND_RESET_MOCKS(); |
1848 } | 1854 } |
1849 | 1855 |
1850 } // namespace | 1856 } // namespace |
1851 } // namespace content | 1857 } // namespace content |
OLD | NEW |