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

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

Issue 177213016: Give blink a chance to consume ctrl+wheel events before zooming (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Merge with trunk (no changes) Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « content/renderer/input/input_handler_proxy.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/renderer/input/input_handler_proxy.h" 5 #include "content/renderer/input/input_handler_proxy.h"
6 6
7 #include "base/basictypes.h" 7 #include "base/basictypes.h"
8 #include "base/memory/scoped_ptr.h" 8 #include "base/memory/scoped_ptr.h"
9 #include "cc/base/swap_promise_monitor.h" 9 #include "cc/base/swap_promise_monitor.h"
10 #include "content/renderer/input/input_handler_proxy_client.h" 10 #include "content/renderer/input/input_handler_proxy_client.h"
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after
183 TEST_F(InputHandlerProxyTest, MouseWheelByPageMainThread) { 183 TEST_F(InputHandlerProxyTest, MouseWheelByPageMainThread) {
184 expected_disposition_ = InputHandlerProxy::DID_NOT_HANDLE; 184 expected_disposition_ = InputHandlerProxy::DID_NOT_HANDLE;
185 WebMouseWheelEvent wheel; 185 WebMouseWheelEvent wheel;
186 wheel.type = WebInputEvent::MouseWheel; 186 wheel.type = WebInputEvent::MouseWheel;
187 wheel.scrollByPage = true; 187 wheel.scrollByPage = true;
188 188
189 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(wheel)); 189 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(wheel));
190 testing::Mock::VerifyAndClearExpectations(&mock_client_); 190 testing::Mock::VerifyAndClearExpectations(&mock_client_);
191 } 191 }
192 192
193 TEST_F(InputHandlerProxyTest, MouseWheelWithCtrl) {
194 expected_disposition_ = InputHandlerProxy::DID_NOT_HANDLE;
195 WebMouseWheelEvent wheel;
196 wheel.type = WebInputEvent::MouseWheel;
197 wheel.modifiers = WebInputEvent::ControlKey;
198
199 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(wheel));
200 testing::Mock::VerifyAndClearExpectations(&mock_client_);
201 }
202
193 TEST_F(InputHandlerProxyTest, GestureScrollStarted) { 203 TEST_F(InputHandlerProxyTest, GestureScrollStarted) {
194 // We shouldn't send any events to the widget for this gesture. 204 // We shouldn't send any events to the widget for this gesture.
195 expected_disposition_ = InputHandlerProxy::DID_HANDLE; 205 expected_disposition_ = InputHandlerProxy::DID_HANDLE;
196 VERIFY_AND_RESET_MOCKS(); 206 VERIFY_AND_RESET_MOCKS();
197 207
198 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) 208 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_))
199 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted)); 209 .WillOnce(testing::Return(cc::InputHandler::ScrollStarted));
200 210
201 gesture_.type = WebInputEvent::GestureScrollBegin; 211 gesture_.type = WebInputEvent::GestureScrollBegin;
202 EXPECT_EQ(expected_disposition_,input_handler_->HandleInputEvent(gesture_)); 212 EXPECT_EQ(expected_disposition_,input_handler_->HandleInputEvent(gesture_));
(...skipping 258 matching lines...) Expand 10 before | Expand all | Expand 10 after
461 // We shouldn't send any events to the widget for this gesture. 471 // We shouldn't send any events to the widget for this gesture.
462 expected_disposition_ = InputHandlerProxy::DID_HANDLE; 472 expected_disposition_ = InputHandlerProxy::DID_HANDLE;
463 VERIFY_AND_RESET_MOCKS(); 473 VERIFY_AND_RESET_MOCKS();
464 474
465 // On the fling start, we should schedule an animation but not actually start 475 // On the fling start, we should schedule an animation but not actually start
466 // scrolling. 476 // scrolling.
467 gesture_.type = WebInputEvent::GestureFlingStart; 477 gesture_.type = WebInputEvent::GestureFlingStart;
468 WebFloatPoint fling_delta = WebFloatPoint(1000, 0); 478 WebFloatPoint fling_delta = WebFloatPoint(1000, 0);
469 WebPoint fling_point = WebPoint(7, 13); 479 WebPoint fling_point = WebPoint(7, 13);
470 WebPoint fling_global_point = WebPoint(17, 23); 480 WebPoint fling_global_point = WebPoint(17, 23);
471 int modifiers = 7; 481 // Note that for trackpad, wheel events with the Control modifier are
482 // special (reserved for zoom), so don't set that here.
483 int modifiers = WebInputEvent::ShiftKey | WebInputEvent::AltKey;
472 gesture_.data.flingStart.velocityX = fling_delta.x; 484 gesture_.data.flingStart.velocityX = fling_delta.x;
473 gesture_.data.flingStart.velocityY = fling_delta.y; 485 gesture_.data.flingStart.velocityY = fling_delta.y;
474 gesture_.sourceDevice = WebGestureEvent::Touchpad; 486 gesture_.sourceDevice = WebGestureEvent::Touchpad;
475 gesture_.x = fling_point.x; 487 gesture_.x = fling_point.x;
476 gesture_.y = fling_point.y; 488 gesture_.y = fling_point.y;
477 gesture_.globalX = fling_global_point.x; 489 gesture_.globalX = fling_global_point.x;
478 gesture_.globalY = fling_global_point.y; 490 gesture_.globalY = fling_global_point.y;
479 gesture_.modifiers = modifiers; 491 gesture_.modifiers = modifiers;
480 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); 492 EXPECT_CALL(mock_input_handler_, ScheduleAnimation());
481 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) 493 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_))
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
569 TEST_F(InputHandlerProxyTest, GestureFlingTransferResetsTouchpad) { 581 TEST_F(InputHandlerProxyTest, GestureFlingTransferResetsTouchpad) {
570 // We shouldn't send any events to the widget for this gesture. 582 // We shouldn't send any events to the widget for this gesture.
571 expected_disposition_ = InputHandlerProxy::DID_HANDLE; 583 expected_disposition_ = InputHandlerProxy::DID_HANDLE;
572 VERIFY_AND_RESET_MOCKS(); 584 VERIFY_AND_RESET_MOCKS();
573 585
574 // Start a gesture fling in the -X direction with zero Y movement. 586 // Start a gesture fling in the -X direction with zero Y movement.
575 gesture_.type = WebInputEvent::GestureFlingStart; 587 gesture_.type = WebInputEvent::GestureFlingStart;
576 WebFloatPoint fling_delta = WebFloatPoint(1000, 0); 588 WebFloatPoint fling_delta = WebFloatPoint(1000, 0);
577 WebPoint fling_point = WebPoint(7, 13); 589 WebPoint fling_point = WebPoint(7, 13);
578 WebPoint fling_global_point = WebPoint(17, 23); 590 WebPoint fling_global_point = WebPoint(17, 23);
579 int modifiers = 1; 591 // Note that for trackpad, wheel events with the Control modifier are
592 // special (reserved for zoom), so don't set that here.
593 int modifiers = WebInputEvent::ShiftKey | WebInputEvent::AltKey;
580 gesture_.data.flingStart.velocityX = fling_delta.x; 594 gesture_.data.flingStart.velocityX = fling_delta.x;
581 gesture_.data.flingStart.velocityY = fling_delta.y; 595 gesture_.data.flingStart.velocityY = fling_delta.y;
582 gesture_.sourceDevice = WebGestureEvent::Touchpad; 596 gesture_.sourceDevice = WebGestureEvent::Touchpad;
583 gesture_.x = fling_point.x; 597 gesture_.x = fling_point.x;
584 gesture_.y = fling_point.y; 598 gesture_.y = fling_point.y;
585 gesture_.globalX = fling_global_point.x; 599 gesture_.globalX = fling_global_point.x;
586 gesture_.globalY = fling_global_point.y; 600 gesture_.globalY = fling_global_point.y;
587 gesture_.modifiers = modifiers; 601 gesture_.modifiers = modifiers;
588 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); 602 EXPECT_CALL(mock_input_handler_, ScheduleAnimation());
589 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) 603 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_))
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
675 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 689 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
676 690
677 VERIFY_AND_RESET_MOCKS(); 691 VERIFY_AND_RESET_MOCKS();
678 input_handler_->MainThreadHasStoppedFlinging(); 692 input_handler_->MainThreadHasStoppedFlinging();
679 693
680 // Start a second gesture fling, this time in the +Y direction with no X. 694 // Start a second gesture fling, this time in the +Y direction with no X.
681 gesture_.type = WebInputEvent::GestureFlingStart; 695 gesture_.type = WebInputEvent::GestureFlingStart;
682 fling_delta = WebFloatPoint(0, -1000); 696 fling_delta = WebFloatPoint(0, -1000);
683 fling_point = WebPoint(95, 87); 697 fling_point = WebPoint(95, 87);
684 fling_global_point = WebPoint(32, 71); 698 fling_global_point = WebPoint(32, 71);
685 modifiers = 2; 699 modifiers = WebInputEvent::AltKey;
686 gesture_.data.flingStart.velocityX = fling_delta.x; 700 gesture_.data.flingStart.velocityX = fling_delta.x;
687 gesture_.data.flingStart.velocityY = fling_delta.y; 701 gesture_.data.flingStart.velocityY = fling_delta.y;
688 gesture_.sourceDevice = WebGestureEvent::Touchpad; 702 gesture_.sourceDevice = WebGestureEvent::Touchpad;
689 gesture_.x = fling_point.x; 703 gesture_.x = fling_point.x;
690 gesture_.y = fling_point.y; 704 gesture_.y = fling_point.y;
691 gesture_.globalX = fling_global_point.x; 705 gesture_.globalX = fling_global_point.x;
692 gesture_.globalY = fling_global_point.y; 706 gesture_.globalY = fling_global_point.y;
693 gesture_.modifiers = modifiers; 707 gesture_.modifiers = modifiers;
694 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); 708 EXPECT_CALL(mock_input_handler_, ScheduleAnimation());
695 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_)) 709 EXPECT_CALL(mock_input_handler_, ScrollBegin(testing::_, testing::_))
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after
854 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_)); 868 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(gesture_));
855 869
856 VERIFY_AND_RESET_MOCKS(); 870 VERIFY_AND_RESET_MOCKS();
857 871
858 // On the fling start, we should schedule an animation but not actually start 872 // On the fling start, we should schedule an animation but not actually start
859 // scrolling. 873 // scrolling.
860 gesture_.type = WebInputEvent::GestureFlingStart; 874 gesture_.type = WebInputEvent::GestureFlingStart;
861 WebFloatPoint fling_delta = WebFloatPoint(1000, 0); 875 WebFloatPoint fling_delta = WebFloatPoint(1000, 0);
862 WebPoint fling_point = WebPoint(7, 13); 876 WebPoint fling_point = WebPoint(7, 13);
863 WebPoint fling_global_point = WebPoint(17, 23); 877 WebPoint fling_global_point = WebPoint(17, 23);
864 int modifiers = 7; 878 // Note that for touchscreen the control modifier is not special.
879 int modifiers = WebInputEvent::ControlKey;
865 gesture_.data.flingStart.velocityX = fling_delta.x; 880 gesture_.data.flingStart.velocityX = fling_delta.x;
866 gesture_.data.flingStart.velocityY = fling_delta.y; 881 gesture_.data.flingStart.velocityY = fling_delta.y;
867 gesture_.sourceDevice = WebGestureEvent::Touchscreen; 882 gesture_.sourceDevice = WebGestureEvent::Touchscreen;
868 gesture_.x = fling_point.x; 883 gesture_.x = fling_point.x;
869 gesture_.y = fling_point.y; 884 gesture_.y = fling_point.y;
870 gesture_.globalX = fling_global_point.x; 885 gesture_.globalX = fling_global_point.x;
871 gesture_.globalY = fling_global_point.y; 886 gesture_.globalY = fling_global_point.y;
872 gesture_.modifiers = modifiers; 887 gesture_.modifiers = modifiers;
873 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); 888 EXPECT_CALL(mock_input_handler_, ScheduleAnimation());
874 EXPECT_CALL(mock_input_handler_, FlingScrollBegin()) 889 EXPECT_CALL(mock_input_handler_, FlingScrollBegin())
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
917 932
918 VERIFY_AND_RESET_MOCKS(); 933 VERIFY_AND_RESET_MOCKS();
919 934
920 // 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
921 // scrolling. 936 // scrolling.
922 base::TimeDelta startTimeOffset = base::TimeDelta::FromMilliseconds(10); 937 base::TimeDelta startTimeOffset = base::TimeDelta::FromMilliseconds(10);
923 gesture_.type = WebInputEvent::GestureFlingStart; 938 gesture_.type = WebInputEvent::GestureFlingStart;
924 WebFloatPoint fling_delta = WebFloatPoint(1000, 0); 939 WebFloatPoint fling_delta = WebFloatPoint(1000, 0);
925 WebPoint fling_point = WebPoint(7, 13); 940 WebPoint fling_point = WebPoint(7, 13);
926 WebPoint fling_global_point = WebPoint(17, 23); 941 WebPoint fling_global_point = WebPoint(17, 23);
927 int modifiers = 7; 942 int modifiers = WebInputEvent::ControlKey;
928 gesture_.timeStampSeconds = startTimeOffset.InSecondsF(); 943 gesture_.timeStampSeconds = startTimeOffset.InSecondsF();
929 gesture_.data.flingStart.velocityX = fling_delta.x; 944 gesture_.data.flingStart.velocityX = fling_delta.x;
930 gesture_.data.flingStart.velocityY = fling_delta.y; 945 gesture_.data.flingStart.velocityY = fling_delta.y;
931 gesture_.sourceDevice = WebGestureEvent::Touchscreen; 946 gesture_.sourceDevice = WebGestureEvent::Touchscreen;
932 gesture_.x = fling_point.x; 947 gesture_.x = fling_point.x;
933 gesture_.y = fling_point.y; 948 gesture_.y = fling_point.y;
934 gesture_.globalX = fling_global_point.x; 949 gesture_.globalX = fling_global_point.x;
935 gesture_.globalY = fling_global_point.y; 950 gesture_.globalY = fling_global_point.y;
936 gesture_.modifiers = modifiers; 951 gesture_.modifiers = modifiers;
937 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); 952 EXPECT_CALL(mock_input_handler_, ScheduleAnimation());
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
978 993
979 expected_disposition_ = InputHandlerProxy::DID_HANDLE; 994 expected_disposition_ = InputHandlerProxy::DID_HANDLE;
980 VERIFY_AND_RESET_MOCKS(); 995 VERIFY_AND_RESET_MOCKS();
981 996
982 // On the fling start, we should schedule an animation but not actually start 997 // On the fling start, we should schedule an animation but not actually start
983 // scrolling. 998 // scrolling.
984 gesture_.type = WebInputEvent::GestureFlingStart; 999 gesture_.type = WebInputEvent::GestureFlingStart;
985 WebFloatPoint fling_delta = WebFloatPoint(1000, 0); 1000 WebFloatPoint fling_delta = WebFloatPoint(1000, 0);
986 WebPoint fling_point = WebPoint(7, 13); 1001 WebPoint fling_point = WebPoint(7, 13);
987 WebPoint fling_global_point = WebPoint(17, 23); 1002 WebPoint fling_global_point = WebPoint(17, 23);
988 int modifiers = 7; 1003 int modifiers = WebInputEvent::ControlKey | WebInputEvent::AltKey;
989 gesture_.data.flingStart.velocityX = fling_delta.x; 1004 gesture_.data.flingStart.velocityX = fling_delta.x;
990 gesture_.data.flingStart.velocityY = fling_delta.y; 1005 gesture_.data.flingStart.velocityY = fling_delta.y;
991 gesture_.sourceDevice = WebGestureEvent::Touchscreen; 1006 gesture_.sourceDevice = WebGestureEvent::Touchscreen;
992 gesture_.x = fling_point.x; 1007 gesture_.x = fling_point.x;
993 gesture_.y = fling_point.y; 1008 gesture_.y = fling_point.y;
994 gesture_.globalX = fling_global_point.x; 1009 gesture_.globalX = fling_global_point.x;
995 gesture_.globalY = fling_global_point.y; 1010 gesture_.globalY = fling_global_point.y;
996 gesture_.modifiers = modifiers; 1011 gesture_.modifiers = modifiers;
997 EXPECT_CALL(mock_input_handler_, ScheduleAnimation()); 1012 EXPECT_CALL(mock_input_handler_, ScheduleAnimation());
998 EXPECT_CALL(mock_input_handler_, FlingScrollBegin()) 1013 EXPECT_CALL(mock_input_handler_, FlingScrollBegin())
(...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after
1209 1224
1210 touch.touchesLength = 3; 1225 touch.touchesLength = 3;
1211 touch.touches[0] = CreateWebTouchPoint(WebTouchPoint::StatePressed, 0, 0); 1226 touch.touches[0] = CreateWebTouchPoint(WebTouchPoint::StatePressed, 0, 0);
1212 touch.touches[1] = CreateWebTouchPoint(WebTouchPoint::StatePressed, 10, 10); 1227 touch.touches[1] = CreateWebTouchPoint(WebTouchPoint::StatePressed, 10, 10);
1213 touch.touches[2] = CreateWebTouchPoint(WebTouchPoint::StatePressed, -10, 10); 1228 touch.touches[2] = CreateWebTouchPoint(WebTouchPoint::StatePressed, -10, 10);
1214 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(touch)); 1229 EXPECT_EQ(expected_disposition_, input_handler_->HandleInputEvent(touch));
1215 } 1230 }
1216 1231
1217 } // namespace 1232 } // namespace
1218 } // namespace content 1233 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/input/input_handler_proxy.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698