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

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: removed desired #include 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 194 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
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
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
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
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
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
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698