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

Side by Side Diff: content/browser/renderer_host/input/input_router_impl_unittest.cc

Issue 304793003: use enum to specify deviceSource for fling animation. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebased for parallel breaking changes Created 6 years, 6 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
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 <math.h> 5 #include <math.h>
6 6
7 #include "base/basictypes.h" 7 #include "base/basictypes.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/memory/scoped_ptr.h" 9 #include "base/memory/scoped_ptr.h"
10 #include "base/strings/utf_string_conversions.h" 10 #include "base/strings/utf_string_conversions.h"
(...skipping 14 matching lines...) Expand all
25 #include "content/public/test/test_browser_context.h" 25 #include "content/public/test/test_browser_context.h"
26 #include "testing/gtest/include/gtest/gtest.h" 26 #include "testing/gtest/include/gtest/gtest.h"
27 #include "ui/events/keycodes/keyboard_codes.h" 27 #include "ui/events/keycodes/keyboard_codes.h"
28 28
29 #if defined(USE_AURA) 29 #if defined(USE_AURA)
30 #include "content/browser/renderer_host/ui_events_helper.h" 30 #include "content/browser/renderer_host/ui_events_helper.h"
31 #include "ui/events/event.h" 31 #include "ui/events/event.h"
32 #endif 32 #endif
33 33
34 using base::TimeDelta; 34 using base::TimeDelta;
35 using blink::WebGestureDevice;
35 using blink::WebGestureEvent; 36 using blink::WebGestureEvent;
36 using blink::WebKeyboardEvent; 37 using blink::WebKeyboardEvent;
37 using blink::WebInputEvent; 38 using blink::WebInputEvent;
38 using blink::WebMouseEvent; 39 using blink::WebMouseEvent;
39 using blink::WebMouseWheelEvent; 40 using blink::WebMouseWheelEvent;
40 using blink::WebTouchEvent; 41 using blink::WebTouchEvent;
41 using blink::WebTouchPoint; 42 using blink::WebTouchPoint;
42 43
43 namespace content { 44 namespace content {
44 45
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after
205 input_router_->SendWheelEvent(MouseWheelEventWithLatencyInfo( 206 input_router_->SendWheelEvent(MouseWheelEventWithLatencyInfo(
206 SyntheticWebMouseWheelEventBuilder::Build(phase), ui::LatencyInfo())); 207 SyntheticWebMouseWheelEventBuilder::Build(phase), ui::LatencyInfo()));
207 } 208 }
208 209
209 void SimulateGestureEvent(const WebGestureEvent& gesture) { 210 void SimulateGestureEvent(const WebGestureEvent& gesture) {
210 input_router_->SendGestureEvent( 211 input_router_->SendGestureEvent(
211 GestureEventWithLatencyInfo(gesture, ui::LatencyInfo())); 212 GestureEventWithLatencyInfo(gesture, ui::LatencyInfo()));
212 } 213 }
213 214
214 void SimulateGestureEvent(WebInputEvent::Type type, 215 void SimulateGestureEvent(WebInputEvent::Type type,
215 WebGestureEvent::SourceDevice sourceDevice) { 216 WebGestureDevice sourceDevice) {
216 SimulateGestureEvent( 217 SimulateGestureEvent(
217 SyntheticWebGestureEventBuilder::Build(type, sourceDevice)); 218 SyntheticWebGestureEventBuilder::Build(type, sourceDevice));
218 } 219 }
219 220
220 void SimulateGestureScrollUpdateEvent(float dX, float dY, int modifiers) { 221 void SimulateGestureScrollUpdateEvent(float dX, float dY, int modifiers) {
221 SimulateGestureEvent( 222 SimulateGestureEvent(
222 SyntheticWebGestureEventBuilder::BuildScrollUpdate(dX, dY, modifiers)); 223 SyntheticWebGestureEventBuilder::BuildScrollUpdate(dX, dY, modifiers));
223 } 224 }
224 225
225 void SimulateGesturePinchUpdateEvent( 226 void SimulateGesturePinchUpdateEvent(float scale,
226 float scale, 227 float anchorX,
227 float anchorX, 228 float anchorY,
228 float anchorY, 229 int modifiers,
229 int modifiers, 230 WebGestureDevice sourceDevice) {
230 WebGestureEvent::SourceDevice sourceDevice) {
231 SimulateGestureEvent(SyntheticWebGestureEventBuilder::BuildPinchUpdate( 231 SimulateGestureEvent(SyntheticWebGestureEventBuilder::BuildPinchUpdate(
232 scale, anchorX, anchorY, modifiers, sourceDevice)); 232 scale, anchorX, anchorY, modifiers, sourceDevice));
233 } 233 }
234 234
235 void SimulateGestureFlingStartEvent( 235 void SimulateGestureFlingStartEvent(float velocityX,
236 float velocityX, 236 float velocityY,
237 float velocityY, 237 WebGestureDevice sourceDevice) {
238 WebGestureEvent::SourceDevice sourceDevice) {
239 SimulateGestureEvent( 238 SimulateGestureEvent(
240 SyntheticWebGestureEventBuilder::BuildFling(velocityX, 239 SyntheticWebGestureEventBuilder::BuildFling(velocityX,
241 velocityY, 240 velocityY,
242 sourceDevice)); 241 sourceDevice));
243 } 242 }
244 243
245 void SimulateTouchEvent(WebInputEvent::Type type) { 244 void SimulateTouchEvent(WebInputEvent::Type type) {
246 touch_event_.ResetPoints(); 245 touch_event_.ResetPoints();
247 int index = PressTouchPoint(0, 0); 246 int index = PressTouchPoint(0, 0);
248 switch (type) { 247 switch (type) {
(...skipping 598 matching lines...) Expand 10 before | Expand all | Expand 10 after
847 WebInputEvent::GestureScrollBegin, 846 WebInputEvent::GestureScrollBegin,
848 WebInputEvent::GestureScrollUpdate, 847 WebInputEvent::GestureScrollUpdate,
849 WebInputEvent::GestureScrollUpdateWithoutPropagation, 848 WebInputEvent::GestureScrollUpdateWithoutPropagation,
850 WebInputEvent::GesturePinchBegin, 849 WebInputEvent::GesturePinchBegin,
851 WebInputEvent::GesturePinchUpdate, 850 WebInputEvent::GesturePinchUpdate,
852 WebInputEvent::GesturePinchEnd, 851 WebInputEvent::GesturePinchEnd,
853 WebInputEvent::GestureScrollEnd}; 852 WebInputEvent::GestureScrollEnd};
854 for (int i = 0; i < kEventTypesLength; ++i) { 853 for (int i = 0; i < kEventTypesLength; ++i) {
855 WebInputEvent::Type type = eventTypes[i]; 854 WebInputEvent::Type type = eventTypes[i];
856 if (!WebInputEventTraits::IgnoresAckDisposition(GetEventWithType(type))) { 855 if (!WebInputEventTraits::IgnoresAckDisposition(GetEventWithType(type))) {
857 SimulateGestureEvent(type, WebGestureEvent::Touchscreen); 856 SimulateGestureEvent(type, blink::WebGestureDeviceTouchscreen);
858 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 857 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
859 EXPECT_EQ(0U, ack_handler_->GetAndResetAckCount()); 858 EXPECT_EQ(0U, ack_handler_->GetAndResetAckCount());
860 EXPECT_EQ(1, client_->in_flight_event_count()); 859 EXPECT_EQ(1, client_->in_flight_event_count());
861 EXPECT_TRUE(HasPendingEvents()); 860 EXPECT_TRUE(HasPendingEvents());
862 861
863 SendInputEventACK(type, INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 862 SendInputEventACK(type, INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
864 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); 863 EXPECT_EQ(0U, GetSentMessageCountAndResetSink());
865 EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount()); 864 EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount());
866 EXPECT_EQ(0, client_->in_flight_event_count()); 865 EXPECT_EQ(0, client_->in_flight_event_count());
867 EXPECT_FALSE(HasPendingEvents()); 866 EXPECT_FALSE(HasPendingEvents());
868 continue; 867 continue;
869 } 868 }
870 869
871 SimulateGestureEvent(type, WebGestureEvent::Touchscreen); 870 SimulateGestureEvent(type, blink::WebGestureDeviceTouchscreen);
872 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 871 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
873 EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount()); 872 EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount());
874 EXPECT_EQ(0, client_->in_flight_event_count()); 873 EXPECT_EQ(0, client_->in_flight_event_count());
875 EXPECT_FALSE(HasPendingEvents()); 874 EXPECT_FALSE(HasPendingEvents());
876 } 875 }
877 } 876 }
878 877
879 TEST_F(InputRouterImplTest, MouseTypesIgnoringAck) { 878 TEST_F(InputRouterImplTest, MouseTypesIgnoringAck) {
880 int start_type = static_cast<int>(WebInputEvent::MouseDown); 879 int start_type = static_cast<int>(WebInputEvent::MouseDown);
881 int end_type = static_cast<int>(WebInputEvent::ContextMenu); 880 int end_type = static_cast<int>(WebInputEvent::ContextMenu);
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
926 } 925 }
927 926
928 // Test that GestureShowPress, GestureTapDown and GestureTapCancel events don't 927 // Test that GestureShowPress, GestureTapDown and GestureTapCancel events don't
929 // wait for ACKs. 928 // wait for ACKs.
930 TEST_F(InputRouterImplTest, GestureTypesIgnoringAckInterleaved) { 929 TEST_F(InputRouterImplTest, GestureTypesIgnoringAckInterleaved) {
931 // Interleave a few events that do and do not ignore acks, ensuring that 930 // Interleave a few events that do and do not ignore acks, ensuring that
932 // ack-ignoring events aren't dispatched until all prior events which observe 931 // ack-ignoring events aren't dispatched until all prior events which observe
933 // their ack disposition have been dispatched. 932 // their ack disposition have been dispatched.
934 933
935 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, 934 SimulateGestureEvent(WebInputEvent::GestureScrollBegin,
936 WebGestureEvent::Touchscreen); 935 blink::WebGestureDeviceTouchscreen);
937 ASSERT_EQ(1U, GetSentMessageCountAndResetSink()); 936 ASSERT_EQ(1U, GetSentMessageCountAndResetSink());
938 EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount()); 937 EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount());
939 EXPECT_EQ(0, client_->in_flight_event_count()); 938 EXPECT_EQ(0, client_->in_flight_event_count());
940 939
941 SimulateGestureEvent(WebInputEvent::GestureScrollUpdate, 940 SimulateGestureEvent(WebInputEvent::GestureScrollUpdate,
942 WebGestureEvent::Touchscreen); 941 blink::WebGestureDeviceTouchscreen);
943 ASSERT_EQ(1U, GetSentMessageCountAndResetSink()); 942 ASSERT_EQ(1U, GetSentMessageCountAndResetSink());
944 EXPECT_EQ(0U, ack_handler_->GetAndResetAckCount()); 943 EXPECT_EQ(0U, ack_handler_->GetAndResetAckCount());
945 EXPECT_EQ(1, client_->in_flight_event_count()); 944 EXPECT_EQ(1, client_->in_flight_event_count());
946 945
947 SimulateGestureEvent(WebInputEvent::GestureTapDown, 946 SimulateGestureEvent(WebInputEvent::GestureTapDown,
948 WebGestureEvent::Touchscreen); 947 blink::WebGestureDeviceTouchscreen);
949 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); 948 EXPECT_EQ(0U, GetSentMessageCountAndResetSink());
950 EXPECT_EQ(0U, ack_handler_->GetAndResetAckCount()); 949 EXPECT_EQ(0U, ack_handler_->GetAndResetAckCount());
951 EXPECT_EQ(1, client_->in_flight_event_count()); 950 EXPECT_EQ(1, client_->in_flight_event_count());
952 951
953 SimulateGestureEvent(WebInputEvent::GestureScrollUpdate, 952 SimulateGestureEvent(WebInputEvent::GestureScrollUpdate,
954 WebGestureEvent::Touchscreen); 953 blink::WebGestureDeviceTouchscreen);
955 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); 954 EXPECT_EQ(0U, GetSentMessageCountAndResetSink());
956 EXPECT_EQ(0U, ack_handler_->GetAndResetAckCount()); 955 EXPECT_EQ(0U, ack_handler_->GetAndResetAckCount());
957 956
958 SimulateGestureEvent(WebInputEvent::GestureShowPress, 957 SimulateGestureEvent(WebInputEvent::GestureShowPress,
959 WebGestureEvent::Touchscreen); 958 blink::WebGestureDeviceTouchscreen);
960 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); 959 EXPECT_EQ(0U, GetSentMessageCountAndResetSink());
961 EXPECT_EQ(0U, ack_handler_->GetAndResetAckCount()); 960 EXPECT_EQ(0U, ack_handler_->GetAndResetAckCount());
962 961
963 SimulateGestureEvent(WebInputEvent::GestureScrollUpdate, 962 SimulateGestureEvent(WebInputEvent::GestureScrollUpdate,
964 WebGestureEvent::Touchscreen); 963 blink::WebGestureDeviceTouchscreen);
965 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); 964 EXPECT_EQ(0U, GetSentMessageCountAndResetSink());
966 EXPECT_EQ(0U, ack_handler_->GetAndResetAckCount()); 965 EXPECT_EQ(0U, ack_handler_->GetAndResetAckCount());
967 966
968 SimulateGestureEvent(WebInputEvent::GestureTapCancel, 967 SimulateGestureEvent(WebInputEvent::GestureTapCancel,
969 WebGestureEvent::Touchscreen); 968 blink::WebGestureDeviceTouchscreen);
970 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); 969 EXPECT_EQ(0U, GetSentMessageCountAndResetSink());
971 EXPECT_EQ(0U, ack_handler_->GetAndResetAckCount()); 970 EXPECT_EQ(0U, ack_handler_->GetAndResetAckCount());
972 971
973 // Now ack each ack-respecting event. Ack-ignoring events should not be 972 // Now ack each ack-respecting event. Ack-ignoring events should not be
974 // dispatched until all prior events which observe ack disposition have been 973 // dispatched until all prior events which observe ack disposition have been
975 // fired, at which point they should be sent immediately. They should also 974 // fired, at which point they should be sent immediately. They should also
976 // have no effect on the in-flight event count. 975 // have no effect on the in-flight event count.
977 SendInputEventACK(WebInputEvent::GestureScrollUpdate, 976 SendInputEventACK(WebInputEvent::GestureScrollUpdate,
978 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 977 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
979 EXPECT_EQ(2U, GetSentMessageCountAndResetSink()); 978 EXPECT_EQ(2U, GetSentMessageCountAndResetSink());
(...skipping 10 matching lines...) Expand all
990 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 989 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
991 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 990 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
992 EXPECT_EQ(2U, ack_handler_->GetAndResetAckCount()); 991 EXPECT_EQ(2U, ack_handler_->GetAndResetAckCount());
993 EXPECT_EQ(0, client_->in_flight_event_count()); 992 EXPECT_EQ(0, client_->in_flight_event_count());
994 } 993 }
995 994
996 // Test that GestureShowPress events don't get out of order due to 995 // Test that GestureShowPress events don't get out of order due to
997 // ignoring their acks. 996 // ignoring their acks.
998 TEST_F(InputRouterImplTest, GestureShowPressIsInOrder) { 997 TEST_F(InputRouterImplTest, GestureShowPressIsInOrder) {
999 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, 998 SimulateGestureEvent(WebInputEvent::GestureScrollBegin,
1000 WebGestureEvent::Touchscreen); 999 blink::WebGestureDeviceTouchscreen);
1001 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 1000 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
1002 EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount()); 1001 EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount());
1003 1002
1004 1003
1005 // GesturePinchBegin ignores its ack. 1004 // GesturePinchBegin ignores its ack.
1006 SimulateGestureEvent(WebInputEvent::GesturePinchBegin, 1005 SimulateGestureEvent(WebInputEvent::GesturePinchBegin,
1007 WebGestureEvent::Touchscreen); 1006 blink::WebGestureDeviceTouchscreen);
1008 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 1007 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
1009 EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount()); 1008 EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount());
1010 1009
1011 // GesturePinchUpdate waits for an ack. 1010 // GesturePinchUpdate waits for an ack.
1012 // This also verifies that GesturePinchUpdates for touchscreen are sent 1011 // This also verifies that GesturePinchUpdates for touchscreen are sent
1013 // to the renderer (in contrast to the TrackpadPinchUpdate test). 1012 // to the renderer (in contrast to the TrackpadPinchUpdate test).
1014 SimulateGestureEvent(WebInputEvent::GesturePinchUpdate, 1013 SimulateGestureEvent(WebInputEvent::GesturePinchUpdate,
1015 WebGestureEvent::Touchscreen); 1014 blink::WebGestureDeviceTouchscreen);
1016 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 1015 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
1017 EXPECT_EQ(0U, ack_handler_->GetAndResetAckCount()); 1016 EXPECT_EQ(0U, ack_handler_->GetAndResetAckCount());
1018 1017
1019 SimulateGestureEvent(WebInputEvent::GestureShowPress, 1018 SimulateGestureEvent(WebInputEvent::GestureShowPress,
1020 WebGestureEvent::Touchscreen); 1019 blink::WebGestureDeviceTouchscreen);
1021 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); 1020 EXPECT_EQ(0U, GetSentMessageCountAndResetSink());
1022 // The ShowPress, though it ignores ack, is still stuck in the queue 1021 // The ShowPress, though it ignores ack, is still stuck in the queue
1023 // behind the PinchUpdate which requires an ack. 1022 // behind the PinchUpdate which requires an ack.
1024 EXPECT_EQ(0U, ack_handler_->GetAndResetAckCount()); 1023 EXPECT_EQ(0U, ack_handler_->GetAndResetAckCount());
1025 1024
1026 SimulateGestureEvent(WebInputEvent::GestureShowPress, 1025 SimulateGestureEvent(WebInputEvent::GestureShowPress,
1027 WebGestureEvent::Touchscreen); 1026 blink::WebGestureDeviceTouchscreen);
1028 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); 1027 EXPECT_EQ(0U, GetSentMessageCountAndResetSink());
1029 // ShowPress has entered the queue. 1028 // ShowPress has entered the queue.
1030 EXPECT_EQ(0U, ack_handler_->GetAndResetAckCount()); 1029 EXPECT_EQ(0U, ack_handler_->GetAndResetAckCount());
1031 1030
1032 SendInputEventACK(WebInputEvent::GesturePinchUpdate, 1031 SendInputEventACK(WebInputEvent::GesturePinchUpdate,
1033 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 1032 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
1034 // Now that the Tap has been ACKed, the ShowPress events should receive 1033 // Now that the Tap has been ACKed, the ShowPress events should receive
1035 // synthetic acks, and fire immediately. 1034 // synthetic acks, and fire immediately.
1036 EXPECT_EQ(2U, GetSentMessageCountAndResetSink()); 1035 EXPECT_EQ(2U, GetSentMessageCountAndResetSink());
1037 EXPECT_EQ(3U, ack_handler_->GetAndResetAckCount()); 1036 EXPECT_EQ(3U, ack_handler_->GetAndResetAckCount());
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after
1198 ReleaseTouchPoint(0); 1197 ReleaseTouchPoint(0);
1199 SendTouchEvent(); 1198 SendTouchEvent();
1200 1199
1201 SendInputEventACK(WebInputEvent::TouchStart, INPUT_EVENT_ACK_STATE_CONSUMED); 1200 SendInputEventACK(WebInputEvent::TouchStart, INPUT_EVENT_ACK_STATE_CONSUMED);
1202 SendInputEventACK(WebInputEvent::TouchMove, INPUT_EVENT_ACK_STATE_CONSUMED); 1201 SendInputEventACK(WebInputEvent::TouchMove, INPUT_EVENT_ACK_STATE_CONSUMED);
1203 1202
1204 // Ensure touch action is still none, as the next touch start hasn't been 1203 // Ensure touch action is still none, as the next touch start hasn't been
1205 // acked yet. ScrollBegin and ScrollEnd don't require acks. 1204 // acked yet. ScrollBegin and ScrollEnd don't require acks.
1206 EXPECT_EQ(3U, GetSentMessageCountAndResetSink()); 1205 EXPECT_EQ(3U, GetSentMessageCountAndResetSink());
1207 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, 1206 SimulateGestureEvent(WebInputEvent::GestureScrollBegin,
1208 WebGestureEvent::Touchscreen); 1207 blink::WebGestureDeviceTouchscreen);
1209 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); 1208 EXPECT_EQ(0U, GetSentMessageCountAndResetSink());
1210 SimulateGestureEvent(WebInputEvent::GestureScrollEnd, 1209 SimulateGestureEvent(WebInputEvent::GestureScrollEnd,
1211 WebGestureEvent::Touchscreen); 1210 blink::WebGestureDeviceTouchscreen);
1212 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); 1211 EXPECT_EQ(0U, GetSentMessageCountAndResetSink());
1213 1212
1214 // This allows the next touch sequence to start. 1213 // This allows the next touch sequence to start.
1215 SendInputEventACK(WebInputEvent::TouchEnd, INPUT_EVENT_ACK_STATE_CONSUMED); 1214 SendInputEventACK(WebInputEvent::TouchEnd, INPUT_EVENT_ACK_STATE_CONSUMED);
1216 1215
1217 // Ensure touch action has been set to auto, as a new touch sequence has 1216 // Ensure touch action has been set to auto, as a new touch sequence has
1218 // started. 1217 // started.
1219 SendInputEventACK(WebInputEvent::TouchStart, INPUT_EVENT_ACK_STATE_CONSUMED); 1218 SendInputEventACK(WebInputEvent::TouchStart, INPUT_EVENT_ACK_STATE_CONSUMED);
1220 SendInputEventACK(WebInputEvent::TouchMove, INPUT_EVENT_ACK_STATE_CONSUMED); 1219 SendInputEventACK(WebInputEvent::TouchMove, INPUT_EVENT_ACK_STATE_CONSUMED);
1221 EXPECT_EQ(3U, GetSentMessageCountAndResetSink()); 1220 EXPECT_EQ(3U, GetSentMessageCountAndResetSink());
1222 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, 1221 SimulateGestureEvent(WebInputEvent::GestureScrollBegin,
1223 WebGestureEvent::Touchscreen); 1222 blink::WebGestureDeviceTouchscreen);
1224 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 1223 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
1225 SimulateGestureEvent(WebInputEvent::GestureScrollEnd, 1224 SimulateGestureEvent(WebInputEvent::GestureScrollEnd,
1226 WebGestureEvent::Touchscreen); 1225 blink::WebGestureDeviceTouchscreen);
1227 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 1226 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
1228 SendInputEventACK(WebInputEvent::TouchEnd, INPUT_EVENT_ACK_STATE_CONSUMED); 1227 SendInputEventACK(WebInputEvent::TouchEnd, INPUT_EVENT_ACK_STATE_CONSUMED);
1229 } 1228 }
1230 1229
1231 // Test that TouchActionFilter::ResetTouchAction is called when a new touch 1230 // Test that TouchActionFilter::ResetTouchAction is called when a new touch
1232 // sequence has no consumer. 1231 // sequence has no consumer.
1233 TEST_F(InputRouterImplTest, TouchActionResetWhenTouchHasNoConsumer) { 1232 TEST_F(InputRouterImplTest, TouchActionResetWhenTouchHasNoConsumer) {
1234 OnHasTouchEventHandlers(true); 1233 OnHasTouchEventHandlers(true);
1235 1234
1236 // Sequence 1. 1235 // Sequence 1.
(...skipping 13 matching lines...) Expand all
1250 SendTouchEvent(); 1249 SendTouchEvent();
1251 MoveTouchPoint(0, 50, 50); 1250 MoveTouchPoint(0, 50, 50);
1252 SendTouchEvent(); 1251 SendTouchEvent();
1253 ReleaseTouchPoint(0); 1252 ReleaseTouchPoint(0);
1254 SendTouchEvent(); 1253 SendTouchEvent();
1255 1254
1256 // Ensure we have touch-action:none. ScrollBegin and ScrollEnd don't require 1255 // Ensure we have touch-action:none. ScrollBegin and ScrollEnd don't require
1257 // acks. 1256 // acks.
1258 EXPECT_EQ(3U, GetSentMessageCountAndResetSink()); 1257 EXPECT_EQ(3U, GetSentMessageCountAndResetSink());
1259 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, 1258 SimulateGestureEvent(WebInputEvent::GestureScrollBegin,
1260 WebGestureEvent::Touchscreen); 1259 blink::WebGestureDeviceTouchscreen);
1261 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); 1260 EXPECT_EQ(0U, GetSentMessageCountAndResetSink());
1262 SimulateGestureEvent(WebInputEvent::GestureScrollEnd, 1261 SimulateGestureEvent(WebInputEvent::GestureScrollEnd,
1263 WebGestureEvent::Touchscreen); 1262 blink::WebGestureDeviceTouchscreen);
1264 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); 1263 EXPECT_EQ(0U, GetSentMessageCountAndResetSink());
1265 1264
1266 SendInputEventACK(WebInputEvent::TouchEnd, INPUT_EVENT_ACK_STATE_CONSUMED); 1265 SendInputEventACK(WebInputEvent::TouchEnd, INPUT_EVENT_ACK_STATE_CONSUMED);
1267 SendInputEventACK(WebInputEvent::TouchStart, 1266 SendInputEventACK(WebInputEvent::TouchStart,
1268 INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS); 1267 INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS);
1269 1268
1270 // Ensure touch action has been set to auto, as the touch had no consumer. 1269 // Ensure touch action has been set to auto, as the touch had no consumer.
1271 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 1270 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
1272 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, 1271 SimulateGestureEvent(WebInputEvent::GestureScrollBegin,
1273 WebGestureEvent::Touchscreen); 1272 blink::WebGestureDeviceTouchscreen);
1274 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 1273 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
1275 SimulateGestureEvent(WebInputEvent::GestureScrollEnd, 1274 SimulateGestureEvent(WebInputEvent::GestureScrollEnd,
1276 WebGestureEvent::Touchscreen); 1275 blink::WebGestureDeviceTouchscreen);
1277 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 1276 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
1278 } 1277 }
1279 1278
1280 // Test that TouchActionFilter::ResetTouchAction is called when the touch 1279 // Test that TouchActionFilter::ResetTouchAction is called when the touch
1281 // handler is removed. 1280 // handler is removed.
1282 TEST_F(InputRouterImplTest, TouchActionResetWhenTouchHandlerRemoved) { 1281 TEST_F(InputRouterImplTest, TouchActionResetWhenTouchHandlerRemoved) {
1283 // Touch sequence with touch handler. 1282 // Touch sequence with touch handler.
1284 OnHasTouchEventHandlers(true); 1283 OnHasTouchEventHandlers(true);
1285 PressTouchPoint(1, 1); 1284 PressTouchPoint(1, 1);
1286 SendTouchEvent(); 1285 SendTouchEvent();
1287 MoveTouchPoint(0, 50, 50); 1286 MoveTouchPoint(0, 50, 50);
1288 SendTouchEvent(); 1287 SendTouchEvent();
1289 OnSetTouchAction(TOUCH_ACTION_NONE); 1288 OnSetTouchAction(TOUCH_ACTION_NONE);
1290 ReleaseTouchPoint(0); 1289 ReleaseTouchPoint(0);
1291 SendTouchEvent(); 1290 SendTouchEvent();
1292 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 1291 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
1293 1292
1294 // Ensure we have touch-action:none, suppressing scroll events. 1293 // Ensure we have touch-action:none, suppressing scroll events.
1295 SendInputEventACK(WebInputEvent::TouchStart, INPUT_EVENT_ACK_STATE_CONSUMED); 1294 SendInputEventACK(WebInputEvent::TouchStart, INPUT_EVENT_ACK_STATE_CONSUMED);
1296 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 1295 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
1297 SendInputEventACK(WebInputEvent::TouchMove, 1296 SendInputEventACK(WebInputEvent::TouchMove,
1298 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 1297 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
1299 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 1298 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
1300 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, 1299 SimulateGestureEvent(WebInputEvent::GestureScrollBegin,
1301 WebGestureEvent::Touchscreen); 1300 blink::WebGestureDeviceTouchscreen);
1302 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); 1301 EXPECT_EQ(0U, GetSentMessageCountAndResetSink());
1303 1302
1304 SendInputEventACK(WebInputEvent::TouchEnd, 1303 SendInputEventACK(WebInputEvent::TouchEnd,
1305 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 1304 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
1306 SimulateGestureEvent(WebInputEvent::GestureScrollEnd, 1305 SimulateGestureEvent(WebInputEvent::GestureScrollEnd,
1307 WebGestureEvent::Touchscreen); 1306 blink::WebGestureDeviceTouchscreen);
1308 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); 1307 EXPECT_EQ(0U, GetSentMessageCountAndResetSink());
1309 1308
1310 // Sequence without a touch handler. Note that in this case, the view may not 1309 // Sequence without a touch handler. Note that in this case, the view may not
1311 // necessarily forward touches to the router (as no touch handler exists). 1310 // necessarily forward touches to the router (as no touch handler exists).
1312 OnHasTouchEventHandlers(false); 1311 OnHasTouchEventHandlers(false);
1313 1312
1314 // Ensure touch action has been set to auto, as the touch handler has been 1313 // Ensure touch action has been set to auto, as the touch handler has been
1315 // removed. 1314 // removed.
1316 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, 1315 SimulateGestureEvent(WebInputEvent::GestureScrollBegin,
1317 WebGestureEvent::Touchscreen); 1316 blink::WebGestureDeviceTouchscreen);
1318 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 1317 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
1319 SimulateGestureEvent(WebInputEvent::GestureScrollEnd, 1318 SimulateGestureEvent(WebInputEvent::GestureScrollEnd,
1320 WebGestureEvent::Touchscreen); 1319 blink::WebGestureDeviceTouchscreen);
1321 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 1320 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
1322 } 1321 }
1323 1322
1324 // Test that the double tap gesture depends on the touch action of the first 1323 // Test that the double tap gesture depends on the touch action of the first
1325 // tap. 1324 // tap.
1326 TEST_F(InputRouterImplTest, DoubleTapGestureDependsOnFirstTap) { 1325 TEST_F(InputRouterImplTest, DoubleTapGestureDependsOnFirstTap) {
1327 OnHasTouchEventHandlers(true); 1326 OnHasTouchEventHandlers(true);
1328 1327
1329 // Sequence 1. 1328 // Sequence 1.
1330 PressTouchPoint(1, 1); 1329 PressTouchPoint(1, 1);
1331 SendTouchEvent(); 1330 SendTouchEvent();
1332 OnSetTouchAction(TOUCH_ACTION_NONE); 1331 OnSetTouchAction(TOUCH_ACTION_NONE);
1333 SendInputEventACK(WebInputEvent::TouchStart, INPUT_EVENT_ACK_STATE_CONSUMED); 1332 SendInputEventACK(WebInputEvent::TouchStart, INPUT_EVENT_ACK_STATE_CONSUMED);
1334 1333
1335 ReleaseTouchPoint(0); 1334 ReleaseTouchPoint(0);
1336 SendTouchEvent(); 1335 SendTouchEvent();
1337 1336
1338 // Sequence 2 1337 // Sequence 2
1339 PressTouchPoint(1, 1); 1338 PressTouchPoint(1, 1);
1340 SendTouchEvent(); 1339 SendTouchEvent();
1341 1340
1342 // First tap. 1341 // First tap.
1343 EXPECT_EQ(2U, GetSentMessageCountAndResetSink()); 1342 EXPECT_EQ(2U, GetSentMessageCountAndResetSink());
1344 SimulateGestureEvent(WebInputEvent::GestureTapDown, 1343 SimulateGestureEvent(WebInputEvent::GestureTapDown,
1345 WebGestureEvent::Touchscreen); 1344 blink::WebGestureDeviceTouchscreen);
1346 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 1345 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
1347 1346
1348 // The GestureTapUnconfirmed is converted into a tap, as the touch action is 1347 // The GestureTapUnconfirmed is converted into a tap, as the touch action is
1349 // none. 1348 // none.
1350 SimulateGestureEvent(WebInputEvent::GestureTapUnconfirmed, 1349 SimulateGestureEvent(WebInputEvent::GestureTapUnconfirmed,
1351 WebGestureEvent::Touchscreen); 1350 blink::WebGestureDeviceTouchscreen);
1352 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 1351 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
1353 // This test will become invalid if GestureTap stops requiring an ack. 1352 // This test will become invalid if GestureTap stops requiring an ack.
1354 ASSERT_FALSE(WebInputEventTraits::IgnoresAckDisposition( 1353 ASSERT_FALSE(WebInputEventTraits::IgnoresAckDisposition(
1355 GetEventWithType(WebInputEvent::GestureTap))); 1354 GetEventWithType(WebInputEvent::GestureTap)));
1356 EXPECT_EQ(2, client_->in_flight_event_count()); 1355 EXPECT_EQ(2, client_->in_flight_event_count());
1357 SendInputEventACK(WebInputEvent::GestureTap, 1356 SendInputEventACK(WebInputEvent::GestureTap,
1358 INPUT_EVENT_ACK_STATE_CONSUMED); 1357 INPUT_EVENT_ACK_STATE_CONSUMED);
1359 EXPECT_EQ(1, client_->in_flight_event_count()); 1358 EXPECT_EQ(1, client_->in_flight_event_count());
1360 1359
1361 // This tap gesture is dropped, since the GestureTapUnconfirmed was turned 1360 // This tap gesture is dropped, since the GestureTapUnconfirmed was turned
1362 // into a tap. 1361 // into a tap.
1363 SimulateGestureEvent(WebInputEvent::GestureTap, WebGestureEvent::Touchscreen); 1362 SimulateGestureEvent(WebInputEvent::GestureTap,
1363 blink::WebGestureDeviceTouchscreen);
1364 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); 1364 EXPECT_EQ(0U, GetSentMessageCountAndResetSink());
1365 1365
1366 SendInputEventACK(WebInputEvent::TouchEnd, INPUT_EVENT_ACK_STATE_CONSUMED); 1366 SendInputEventACK(WebInputEvent::TouchEnd, INPUT_EVENT_ACK_STATE_CONSUMED);
1367 SendInputEventACK(WebInputEvent::TouchStart, 1367 SendInputEventACK(WebInputEvent::TouchStart,
1368 INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS); 1368 INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS);
1369 1369
1370 // Second Tap. 1370 // Second Tap.
1371 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 1371 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
1372 SimulateGestureEvent(WebInputEvent::GestureTapDown, 1372 SimulateGestureEvent(WebInputEvent::GestureTapDown,
1373 WebGestureEvent::Touchscreen); 1373 blink::WebGestureDeviceTouchscreen);
1374 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 1374 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
1375 1375
1376 // Although the touch-action is now auto, the double tap still won't be 1376 // Although the touch-action is now auto, the double tap still won't be
1377 // dispatched, because the first tap occured when the touch-action was none. 1377 // dispatched, because the first tap occured when the touch-action was none.
1378 SimulateGestureEvent(WebInputEvent::GestureDoubleTap, 1378 SimulateGestureEvent(WebInputEvent::GestureDoubleTap,
1379 WebGestureEvent::Touchscreen); 1379 blink::WebGestureDeviceTouchscreen);
1380 // This test will become invalid if GestureDoubleTap stops requiring an ack. 1380 // This test will become invalid if GestureDoubleTap stops requiring an ack.
1381 ASSERT_FALSE(WebInputEventTraits::IgnoresAckDisposition( 1381 ASSERT_FALSE(WebInputEventTraits::IgnoresAckDisposition(
1382 GetEventWithType(WebInputEvent::GestureDoubleTap))); 1382 GetEventWithType(WebInputEvent::GestureDoubleTap)));
1383 EXPECT_EQ(1, client_->in_flight_event_count()); 1383 EXPECT_EQ(1, client_->in_flight_event_count());
1384 SendInputEventACK(WebInputEvent::GestureTap, INPUT_EVENT_ACK_STATE_CONSUMED); 1384 SendInputEventACK(WebInputEvent::GestureTap, INPUT_EVENT_ACK_STATE_CONSUMED);
1385 EXPECT_EQ(0, client_->in_flight_event_count()); 1385 EXPECT_EQ(0, client_->in_flight_event_count());
1386 } 1386 }
1387 1387
1388 // Test that the router will call the client's |DidFlush| after all events have 1388 // Test that the router will call the client's |DidFlush| after all events have
1389 // been dispatched following a call to |Flush|. 1389 // been dispatched following a call to |Flush|.
(...skipping 17 matching lines...) Expand all
1407 SendInputEventACK(WebInputEvent::TouchStart, 1407 SendInputEventACK(WebInputEvent::TouchStart,
1408 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 1408 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
1409 EXPECT_EQ(1U, GetAndResetDidFlushCount()); 1409 EXPECT_EQ(1U, GetAndResetDidFlushCount());
1410 1410
1411 // Ensure different types of enqueued events will prevent the DidFlush call 1411 // Ensure different types of enqueued events will prevent the DidFlush call
1412 // until all such events have been fully dispatched. 1412 // until all such events have been fully dispatched.
1413 MoveTouchPoint(0, 50, 50); 1413 MoveTouchPoint(0, 50, 50);
1414 SendTouchEvent(); 1414 SendTouchEvent();
1415 ASSERT_TRUE(HasPendingEvents()); 1415 ASSERT_TRUE(HasPendingEvents());
1416 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, 1416 SimulateGestureEvent(WebInputEvent::GestureScrollBegin,
1417 WebGestureEvent::Touchscreen); 1417 blink::WebGestureDeviceTouchscreen);
1418 SimulateGestureEvent(WebInputEvent::GestureScrollUpdate, 1418 SimulateGestureEvent(WebInputEvent::GestureScrollUpdate,
1419 WebGestureEvent::Touchscreen); 1419 blink::WebGestureDeviceTouchscreen);
1420 SimulateGestureEvent(WebInputEvent::GesturePinchBegin, 1420 SimulateGestureEvent(WebInputEvent::GesturePinchBegin,
1421 WebGestureEvent::Touchscreen); 1421 blink::WebGestureDeviceTouchscreen);
1422 SimulateGestureEvent(WebInputEvent::GesturePinchUpdate, 1422 SimulateGestureEvent(WebInputEvent::GesturePinchUpdate,
1423 WebGestureEvent::Touchscreen); 1423 blink::WebGestureDeviceTouchscreen);
1424 Flush(); 1424 Flush();
1425 EXPECT_EQ(0U, GetAndResetDidFlushCount()); 1425 EXPECT_EQ(0U, GetAndResetDidFlushCount());
1426 1426
1427 // Repeated flush calls should have no effect. 1427 // Repeated flush calls should have no effect.
1428 Flush(); 1428 Flush();
1429 EXPECT_EQ(0U, GetAndResetDidFlushCount()); 1429 EXPECT_EQ(0U, GetAndResetDidFlushCount());
1430 1430
1431 // There are still pending gestures. 1431 // There are still pending gestures.
1432 SendInputEventACK(WebInputEvent::TouchMove, 1432 SendInputEventACK(WebInputEvent::TouchMove,
1433 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 1433 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
(...skipping 12 matching lines...) Expand all
1446 EXPECT_EQ(1U, GetAndResetDidFlushCount()); 1446 EXPECT_EQ(1U, GetAndResetDidFlushCount());
1447 EXPECT_FALSE(HasPendingEvents()); 1447 EXPECT_FALSE(HasPendingEvents());
1448 } 1448 }
1449 1449
1450 // Test that GesturePinchUpdate is handled specially for trackpad 1450 // Test that GesturePinchUpdate is handled specially for trackpad
1451 TEST_F(InputRouterImplTest, TouchpadPinchUpdate) { 1451 TEST_F(InputRouterImplTest, TouchpadPinchUpdate) {
1452 // GesturePinchUpdate for trackpad sends synthetic wheel events. 1452 // GesturePinchUpdate for trackpad sends synthetic wheel events.
1453 // Note that the Touchscreen case is verified as NOT doing this as 1453 // Note that the Touchscreen case is verified as NOT doing this as
1454 // part of the ShowPressIsInOrder test. 1454 // part of the ShowPressIsInOrder test.
1455 1455
1456 SimulateGesturePinchUpdateEvent(1.5f, 20, 25, 0, WebGestureEvent::Touchpad); 1456 SimulateGesturePinchUpdateEvent(
1457 1.5f, 20, 25, 0, blink::WebGestureDeviceTouchpad);
1457 1458
1458 // Verify we actually sent a special wheel event to the renderer. 1459 // Verify we actually sent a special wheel event to the renderer.
1459 const WebInputEvent* input_event = 1460 const WebInputEvent* input_event =
1460 GetInputEventFromMessage(*process_->sink().GetMessageAt(0)); 1461 GetInputEventFromMessage(*process_->sink().GetMessageAt(0));
1461 ASSERT_EQ(WebInputEvent::MouseWheel, input_event->type); 1462 ASSERT_EQ(WebInputEvent::MouseWheel, input_event->type);
1462 const WebMouseWheelEvent* wheel_event = 1463 const WebMouseWheelEvent* wheel_event =
1463 static_cast<const WebMouseWheelEvent*>(input_event); 1464 static_cast<const WebMouseWheelEvent*>(input_event);
1464 EXPECT_EQ(20, wheel_event->x); 1465 EXPECT_EQ(20, wheel_event->x);
1465 EXPECT_EQ(25, wheel_event->y); 1466 EXPECT_EQ(25, wheel_event->y);
1466 EXPECT_EQ(20, wheel_event->globalX); 1467 EXPECT_EQ(20, wheel_event->globalX);
(...skipping 12 matching lines...) Expand all
1479 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 1480 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
1480 1481
1481 // Check that the correct unhandled pinch event was received. 1482 // Check that the correct unhandled pinch event was received.
1482 EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount()); 1483 EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount());
1483 ASSERT_EQ(WebInputEvent::GesturePinchUpdate, ack_handler_->ack_event_type()); 1484 ASSERT_EQ(WebInputEvent::GesturePinchUpdate, ack_handler_->ack_event_type());
1484 EXPECT_EQ(INPUT_EVENT_ACK_STATE_NOT_CONSUMED, ack_handler_->ack_state()); 1485 EXPECT_EQ(INPUT_EVENT_ACK_STATE_NOT_CONSUMED, ack_handler_->ack_state());
1485 EXPECT_EQ(1.5f, ack_handler_->acked_gesture_event().data.pinchUpdate.scale); 1486 EXPECT_EQ(1.5f, ack_handler_->acked_gesture_event().data.pinchUpdate.scale);
1486 EXPECT_EQ(0, client_->in_flight_event_count()); 1487 EXPECT_EQ(0, client_->in_flight_event_count());
1487 1488
1488 // Second a second pinch event. 1489 // Second a second pinch event.
1489 SimulateGesturePinchUpdateEvent(0.3f, 20, 25, 0, WebGestureEvent::Touchpad); 1490 SimulateGesturePinchUpdateEvent(
1491 0.3f, 20, 25, 0, blink::WebGestureDeviceTouchpad);
1490 input_event = GetInputEventFromMessage(*process_->sink().GetMessageAt(0)); 1492 input_event = GetInputEventFromMessage(*process_->sink().GetMessageAt(0));
1491 ASSERT_EQ(WebInputEvent::MouseWheel, input_event->type); 1493 ASSERT_EQ(WebInputEvent::MouseWheel, input_event->type);
1492 wheel_event = static_cast<const WebMouseWheelEvent*>(input_event); 1494 wheel_event = static_cast<const WebMouseWheelEvent*>(input_event);
1493 EXPECT_FLOAT_EQ(PinchScaleToWheelDelta(0.3f), wheel_event->deltaY); 1495 EXPECT_FLOAT_EQ(PinchScaleToWheelDelta(0.3f), wheel_event->deltaY);
1494 EXPECT_EQ(1, wheel_event->hasPreciseScrollingDeltas); 1496 EXPECT_EQ(1, wheel_event->hasPreciseScrollingDeltas);
1495 EXPECT_EQ(-1, wheel_event->wheelTicksY); 1497 EXPECT_EQ(-1, wheel_event->wheelTicksY);
1496 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 1498 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
1497 1499
1498 // Indicate that the wheel event was handled this time. 1500 // Indicate that the wheel event was handled this time.
1499 SendInputEventACK(WebInputEvent::MouseWheel, INPUT_EVENT_ACK_STATE_CONSUMED); 1501 SendInputEventACK(WebInputEvent::MouseWheel, INPUT_EVENT_ACK_STATE_CONSUMED);
1500 1502
1501 // Check that the correct HANDLED pinch event was received. 1503 // Check that the correct HANDLED pinch event was received.
1502 EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount()); 1504 EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount());
1503 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, ack_handler_->ack_event_type()); 1505 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, ack_handler_->ack_event_type());
1504 EXPECT_EQ(INPUT_EVENT_ACK_STATE_CONSUMED, ack_handler_->ack_state()); 1506 EXPECT_EQ(INPUT_EVENT_ACK_STATE_CONSUMED, ack_handler_->ack_state());
1505 EXPECT_FLOAT_EQ(0.3f, 1507 EXPECT_FLOAT_EQ(0.3f,
1506 ack_handler_->acked_gesture_event().data.pinchUpdate.scale); 1508 ack_handler_->acked_gesture_event().data.pinchUpdate.scale);
1507 } 1509 }
1508 1510
1509 // Test that touchpad pinch events are coalesced property, with their synthetic 1511 // Test that touchpad pinch events are coalesced property, with their synthetic
1510 // wheel events getting the right ACKs. 1512 // wheel events getting the right ACKs.
1511 TEST_F(InputRouterImplTest, TouchpadPinchCoalescing) { 1513 TEST_F(InputRouterImplTest, TouchpadPinchCoalescing) {
1512 // Send the first pinch. 1514 // Send the first pinch.
1513 SimulateGesturePinchUpdateEvent(1.5f, 20, 25, 0, WebGestureEvent::Touchpad); 1515 SimulateGesturePinchUpdateEvent(
1516 1.5f, 20, 25, 0, blink::WebGestureDeviceTouchpad);
1514 1517
1515 // Verify we sent the wheel event to the renderer. 1518 // Verify we sent the wheel event to the renderer.
1516 const WebInputEvent* input_event = 1519 const WebInputEvent* input_event =
1517 GetInputEventFromMessage(*process_->sink().GetMessageAt(0)); 1520 GetInputEventFromMessage(*process_->sink().GetMessageAt(0));
1518 ASSERT_EQ(WebInputEvent::MouseWheel, input_event->type); 1521 ASSERT_EQ(WebInputEvent::MouseWheel, input_event->type);
1519 const WebMouseWheelEvent* wheel_event = 1522 const WebMouseWheelEvent* wheel_event =
1520 static_cast<const WebMouseWheelEvent*>(input_event); 1523 static_cast<const WebMouseWheelEvent*>(input_event);
1521 EXPECT_EQ(PinchScaleToWheelDelta(1.5f), wheel_event->deltaY); 1524 EXPECT_EQ(PinchScaleToWheelDelta(1.5f), wheel_event->deltaY);
1522 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 1525 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
1523 EXPECT_EQ(0U, ack_handler_->GetAndResetAckCount()); 1526 EXPECT_EQ(0U, ack_handler_->GetAndResetAckCount());
1524 EXPECT_EQ(1, client_->in_flight_event_count()); 1527 EXPECT_EQ(1, client_->in_flight_event_count());
1525 1528
1526 // Send a second pinch, this should be queued in the GestureEventQueue. 1529 // Send a second pinch, this should be queued in the GestureEventQueue.
1527 SimulateGesturePinchUpdateEvent(1.6f, 20, 25, 0, WebGestureEvent::Touchpad); 1530 SimulateGesturePinchUpdateEvent(
1531 1.6f, 20, 25, 0, blink::WebGestureDeviceTouchpad);
1528 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); 1532 EXPECT_EQ(0U, GetSentMessageCountAndResetSink());
1529 EXPECT_EQ(0U, ack_handler_->GetAndResetAckCount()); 1533 EXPECT_EQ(0U, ack_handler_->GetAndResetAckCount());
1530 1534
1531 // Send a third pinch, this should be coalesced into the second in the 1535 // Send a third pinch, this should be coalesced into the second in the
1532 // GestureEventQueue. 1536 // GestureEventQueue.
1533 SimulateGesturePinchUpdateEvent(1.7f, 20, 25, 0, WebGestureEvent::Touchpad); 1537 SimulateGesturePinchUpdateEvent(
1538 1.7f, 20, 25, 0, blink::WebGestureDeviceTouchpad);
1534 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); 1539 EXPECT_EQ(0U, GetSentMessageCountAndResetSink());
1535 EXPECT_EQ(0U, ack_handler_->GetAndResetAckCount()); 1540 EXPECT_EQ(0U, ack_handler_->GetAndResetAckCount());
1536 1541
1537 // Indicate that the first wheel event was unhandled and verify the ACK. 1542 // Indicate that the first wheel event was unhandled and verify the ACK.
1538 SendInputEventACK(WebInputEvent::MouseWheel, 1543 SendInputEventACK(WebInputEvent::MouseWheel,
1539 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 1544 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
1540 EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount()); 1545 EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount());
1541 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, ack_handler_->ack_event_type()); 1546 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, ack_handler_->ack_event_type());
1542 EXPECT_EQ(INPUT_EVENT_ACK_STATE_NOT_CONSUMED, ack_handler_->ack_state()); 1547 EXPECT_EQ(INPUT_EVENT_ACK_STATE_NOT_CONSUMED, ack_handler_->ack_state());
1543 EXPECT_EQ(1.5f, ack_handler_->acked_gesture_event().data.pinchUpdate.scale); 1548 EXPECT_EQ(1.5f, ack_handler_->acked_gesture_event().data.pinchUpdate.scale);
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
1575 1580
1576 // Event 1: sent directly. 1581 // Event 1: sent directly.
1577 SimulateWheelEvent(0, -5, mod, true); 1582 SimulateWheelEvent(0, -5, mod, true);
1578 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 1583 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
1579 1584
1580 // Event 2: enqueued in InputRouter. 1585 // Event 2: enqueued in InputRouter.
1581 SimulateWheelEvent(0, -10, mod, true); 1586 SimulateWheelEvent(0, -10, mod, true);
1582 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); 1587 EXPECT_EQ(0U, GetSentMessageCountAndResetSink());
1583 1588
1584 // Event 3: enqueued in InputRouter, not coalesced into #2. 1589 // Event 3: enqueued in InputRouter, not coalesced into #2.
1585 SimulateGesturePinchUpdateEvent(1.5f, 20, 25, 0, WebGestureEvent::Touchpad); 1590 SimulateGesturePinchUpdateEvent(
1591 1.5f, 20, 25, 0, blink::WebGestureDeviceTouchpad);
1586 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); 1592 EXPECT_EQ(0U, GetSentMessageCountAndResetSink());
1587 1593
1588 // Event 4: enqueued in GestureEventQueue. 1594 // Event 4: enqueued in GestureEventQueue.
1589 SimulateGesturePinchUpdateEvent(1.2f, 20, 25, 0, WebGestureEvent::Touchpad); 1595 SimulateGesturePinchUpdateEvent(
1596 1.2f, 20, 25, 0, blink::WebGestureDeviceTouchpad);
1590 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); 1597 EXPECT_EQ(0U, GetSentMessageCountAndResetSink());
1591 1598
1592 // Event 5: coalesced into wheel event for #3. 1599 // Event 5: coalesced into wheel event for #3.
1593 SimulateWheelEvent(2, 0, mod, true); 1600 SimulateWheelEvent(2, 0, mod, true);
1594 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); 1601 EXPECT_EQ(0U, GetSentMessageCountAndResetSink());
1595 1602
1596 // Send ack for #1. 1603 // Send ack for #1.
1597 SendInputEventACK(WebInputEvent::MouseWheel, 1604 SendInputEventACK(WebInputEvent::MouseWheel,
1598 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 1605 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
1599 EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount()); 1606 EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount());
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
1647 SendInputEventACK(WebInputEvent::MouseWheel, 1654 SendInputEventACK(WebInputEvent::MouseWheel,
1648 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 1655 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
1649 EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount()); 1656 EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount());
1650 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, ack_handler_->ack_event_type()); 1657 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, ack_handler_->ack_event_type());
1651 } 1658 }
1652 1659
1653 // Test proper handling of touchpad Gesture{Pinch,Scroll}Update sequences. 1660 // Test proper handling of touchpad Gesture{Pinch,Scroll}Update sequences.
1654 TEST_F(InputRouterImplTest, TouchpadPinchAndScrollUpdate) { 1661 TEST_F(InputRouterImplTest, TouchpadPinchAndScrollUpdate) {
1655 // The first scroll should be sent immediately. 1662 // The first scroll should be sent immediately.
1656 SimulateGestureEvent(WebInputEvent::GestureScrollUpdate, 1663 SimulateGestureEvent(WebInputEvent::GestureScrollUpdate,
1657 WebGestureEvent::Touchpad); 1664 blink::WebGestureDeviceTouchpad);
1658 ASSERT_EQ(1U, GetSentMessageCountAndResetSink()); 1665 ASSERT_EQ(1U, GetSentMessageCountAndResetSink());
1659 EXPECT_EQ(1, client_->in_flight_event_count()); 1666 EXPECT_EQ(1, client_->in_flight_event_count());
1660 1667
1661 // Subsequent scroll and pinch events should remain queued, coalescing as 1668 // Subsequent scroll and pinch events should remain queued, coalescing as
1662 // more trackpad events arrive. 1669 // more trackpad events arrive.
1663 SimulateGestureEvent(WebInputEvent::GesturePinchUpdate, 1670 SimulateGestureEvent(WebInputEvent::GesturePinchUpdate,
1664 WebGestureEvent::Touchpad); 1671 blink::WebGestureDeviceTouchpad);
1665 ASSERT_EQ(0U, GetSentMessageCountAndResetSink()); 1672 ASSERT_EQ(0U, GetSentMessageCountAndResetSink());
1666 EXPECT_EQ(1, client_->in_flight_event_count()); 1673 EXPECT_EQ(1, client_->in_flight_event_count());
1667 1674
1668 SimulateGestureEvent(WebInputEvent::GestureScrollUpdate, 1675 SimulateGestureEvent(WebInputEvent::GestureScrollUpdate,
1669 WebGestureEvent::Touchpad); 1676 blink::WebGestureDeviceTouchpad);
1670 ASSERT_EQ(0U, GetSentMessageCountAndResetSink()); 1677 ASSERT_EQ(0U, GetSentMessageCountAndResetSink());
1671 EXPECT_EQ(1, client_->in_flight_event_count()); 1678 EXPECT_EQ(1, client_->in_flight_event_count());
1672 1679
1673 SimulateGestureEvent(WebInputEvent::GesturePinchUpdate, 1680 SimulateGestureEvent(WebInputEvent::GesturePinchUpdate,
1674 WebGestureEvent::Touchpad); 1681 blink::WebGestureDeviceTouchpad);
1675 ASSERT_EQ(0U, GetSentMessageCountAndResetSink()); 1682 ASSERT_EQ(0U, GetSentMessageCountAndResetSink());
1676 EXPECT_EQ(1, client_->in_flight_event_count()); 1683 EXPECT_EQ(1, client_->in_flight_event_count());
1677 1684
1678 SimulateGestureEvent(WebInputEvent::GestureScrollUpdate, 1685 SimulateGestureEvent(WebInputEvent::GestureScrollUpdate,
1679 WebGestureEvent::Touchpad); 1686 blink::WebGestureDeviceTouchpad);
1680 ASSERT_EQ(0U, GetSentMessageCountAndResetSink()); 1687 ASSERT_EQ(0U, GetSentMessageCountAndResetSink());
1681 EXPECT_EQ(1, client_->in_flight_event_count()); 1688 EXPECT_EQ(1, client_->in_flight_event_count());
1682 1689
1683 // Ack'ing the first scroll should trigger both the coalesced scroll and the 1690 // Ack'ing the first scroll should trigger both the coalesced scroll and the
1684 // coalesced pinch events (which is sent to the renderer as a wheel event). 1691 // coalesced pinch events (which is sent to the renderer as a wheel event).
1685 SendInputEventACK(WebInputEvent::GestureScrollUpdate, 1692 SendInputEventACK(WebInputEvent::GestureScrollUpdate,
1686 INPUT_EVENT_ACK_STATE_CONSUMED); 1693 INPUT_EVENT_ACK_STATE_CONSUMED);
1687 EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount()); 1694 EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount());
1688 EXPECT_EQ(2U, GetSentMessageCountAndResetSink()); 1695 EXPECT_EQ(2U, GetSentMessageCountAndResetSink());
1689 EXPECT_EQ(2, client_->in_flight_event_count()); 1696 EXPECT_EQ(2, client_->in_flight_event_count());
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
1734 client_overscroll = client_->GetAndResetOverscroll(); 1741 client_overscroll = client_->GetAndResetOverscroll();
1735 EXPECT_EQ(wheel_overscroll.accumulated_overscroll, 1742 EXPECT_EQ(wheel_overscroll.accumulated_overscroll,
1736 client_overscroll.accumulated_overscroll); 1743 client_overscroll.accumulated_overscroll);
1737 EXPECT_EQ(wheel_overscroll.latest_overscroll_delta, 1744 EXPECT_EQ(wheel_overscroll.latest_overscroll_delta,
1738 client_overscroll.latest_overscroll_delta); 1745 client_overscroll.latest_overscroll_delta);
1739 EXPECT_EQ(wheel_overscroll.current_fling_velocity, 1746 EXPECT_EQ(wheel_overscroll.current_fling_velocity,
1740 client_overscroll.current_fling_velocity); 1747 client_overscroll.current_fling_velocity);
1741 } 1748 }
1742 1749
1743 } // namespace content 1750 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/renderer_host/input/input_router_impl.cc ('k') | content/browser/renderer_host/input/touch_action_filter.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698