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