OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 <vector> | 5 #include <vector> |
6 | 6 |
7 #include "base/basictypes.h" | 7 #include "base/basictypes.h" |
8 #include "base/logging.h" | 8 #include "base/logging.h" |
9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
10 #include "base/message_loop/message_loop.h" | 10 #include "base/message_loop/message_loop.h" |
11 #include "base/time/time.h" | 11 #include "base/time/time.h" |
12 #include "content/browser/renderer_host/input/gesture_event_queue.h" | 12 #include "content/browser/renderer_host/input/gesture_event_queue.h" |
13 #include "content/browser/renderer_host/input/touchpad_tap_suppression_controlle
r.h" | 13 #include "content/browser/renderer_host/input/touchpad_tap_suppression_controlle
r.h" |
14 #include "content/common/input/input_event_ack_state.h" | 14 #include "content/common/input/input_event_ack_state.h" |
15 #include "content/common/input/synthetic_web_input_event_builders.h" | 15 #include "content/common/input/synthetic_web_input_event_builders.h" |
16 #include "testing/gtest/include/gtest/gtest.h" | 16 #include "testing/gtest/include/gtest/gtest.h" |
17 #include "third_party/WebKit/public/web/WebInputEvent.h" | 17 #include "third_party/WebKit/public/web/WebInputEvent.h" |
18 | 18 |
19 using base::TimeDelta; | 19 using base::TimeDelta; |
| 20 using blink::WebGestureDevice; |
20 using blink::WebGestureEvent; | 21 using blink::WebGestureEvent; |
21 using blink::WebInputEvent; | 22 using blink::WebInputEvent; |
22 | 23 |
23 namespace content { | 24 namespace content { |
24 | 25 |
25 class GestureEventQueueTest : public testing::Test, | 26 class GestureEventQueueTest : public testing::Test, |
26 public GestureEventQueueClient, | 27 public GestureEventQueueClient, |
27 public TouchpadTapSuppressionControllerClient { | 28 public TouchpadTapSuppressionControllerClient { |
28 public: | 29 public: |
29 GestureEventQueueTest() | 30 GestureEventQueueTest() |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
81 GestureEventWithLatencyInfo gesture_with_latency(gesture, | 82 GestureEventWithLatencyInfo gesture_with_latency(gesture, |
82 ui::LatencyInfo()); | 83 ui::LatencyInfo()); |
83 if (queue()->ShouldForward(gesture_with_latency)) { | 84 if (queue()->ShouldForward(gesture_with_latency)) { |
84 SendGestureEventImmediately(gesture_with_latency); | 85 SendGestureEventImmediately(gesture_with_latency); |
85 return true; | 86 return true; |
86 } | 87 } |
87 return false; | 88 return false; |
88 } | 89 } |
89 | 90 |
90 void SimulateGestureEvent(WebInputEvent::Type type, | 91 void SimulateGestureEvent(WebInputEvent::Type type, |
91 WebGestureEvent::SourceDevice sourceDevice) { | 92 WebGestureDevice sourceDevice) { |
92 SimulateGestureEvent( | 93 SimulateGestureEvent( |
93 SyntheticWebGestureEventBuilder::Build(type, sourceDevice)); | 94 SyntheticWebGestureEventBuilder::Build(type, sourceDevice)); |
94 } | 95 } |
95 | 96 |
96 void SimulateGestureScrollUpdateEvent(float dX, float dY, int modifiers) { | 97 void SimulateGestureScrollUpdateEvent(float dX, float dY, int modifiers) { |
97 SimulateGestureEvent( | 98 SimulateGestureEvent( |
98 SyntheticWebGestureEventBuilder::BuildScrollUpdate(dX, dY, modifiers)); | 99 SyntheticWebGestureEventBuilder::BuildScrollUpdate(dX, dY, modifiers)); |
99 } | 100 } |
100 | 101 |
101 void SimulateGesturePinchUpdateEvent(float scale, | 102 void SimulateGesturePinchUpdateEvent(float scale, |
102 float anchorX, | 103 float anchorX, |
103 float anchorY, | 104 float anchorY, |
104 int modifiers) { | 105 int modifiers) { |
105 SimulateGestureEvent(SyntheticWebGestureEventBuilder::BuildPinchUpdate( | 106 SimulateGestureEvent(SyntheticWebGestureEventBuilder::BuildPinchUpdate( |
106 scale, anchorX, anchorY, modifiers, WebGestureEvent::Touchscreen)); | 107 scale, |
| 108 anchorX, |
| 109 anchorY, |
| 110 modifiers, |
| 111 blink::WebGestureDeviceTouchscreen)); |
107 } | 112 } |
108 | 113 |
109 void SimulateGestureFlingStartEvent( | 114 void SimulateGestureFlingStartEvent(float velocityX, |
110 float velocityX, | 115 float velocityY, |
111 float velocityY, | 116 WebGestureDevice sourceDevice) { |
112 WebGestureEvent::SourceDevice sourceDevice) { | |
113 SimulateGestureEvent( | 117 SimulateGestureEvent( |
114 SyntheticWebGestureEventBuilder::BuildFling(velocityX, | 118 SyntheticWebGestureEventBuilder::BuildFling(velocityX, |
115 velocityY, | 119 velocityY, |
116 sourceDevice)); | 120 sourceDevice)); |
117 } | 121 } |
118 | 122 |
119 void SendInputEventACK(WebInputEvent::Type type, | 123 void SendInputEventACK(WebInputEvent::Type type, |
120 InputEventAckState ack) { | 124 InputEventAckState ack) { |
121 queue()->ProcessGestureAck(ack, type, ui::LatencyInfo()); | 125 queue()->ProcessGestureAck(ack, type, ui::LatencyInfo()); |
122 } | 126 } |
(...skipping 16 matching lines...) Expand all Loading... |
139 | 143 |
140 const WebGestureEvent& last_acked_event() const { | 144 const WebGestureEvent& last_acked_event() const { |
141 return last_acked_event_; | 145 return last_acked_event_; |
142 } | 146 } |
143 | 147 |
144 void set_synchronous_ack(InputEventAckState ack_result) { | 148 void set_synchronous_ack(InputEventAckState ack_result) { |
145 sync_ack_result_.reset(new InputEventAckState(ack_result)); | 149 sync_ack_result_.reset(new InputEventAckState(ack_result)); |
146 } | 150 } |
147 | 151 |
148 void set_sync_followup_event(WebInputEvent::Type type, | 152 void set_sync_followup_event(WebInputEvent::Type type, |
149 WebGestureEvent::SourceDevice sourceDevice) { | 153 WebGestureDevice sourceDevice) { |
150 sync_followup_event_.reset(new WebGestureEvent( | 154 sync_followup_event_.reset(new WebGestureEvent( |
151 SyntheticWebGestureEventBuilder::Build(type, sourceDevice))); | 155 SyntheticWebGestureEventBuilder::Build(type, sourceDevice))); |
152 } | 156 } |
153 | 157 |
154 unsigned GestureEventQueueSize() { | 158 unsigned GestureEventQueueSize() { |
155 return queue()->coalesced_gesture_events_.size(); | 159 return queue()->coalesced_gesture_events_.size(); |
156 } | 160 } |
157 | 161 |
158 WebGestureEvent GestureEventSecondFromLastQueueEvent() { | 162 WebGestureEvent GestureEventSecondFromLastQueueEvent() { |
159 return queue()->coalesced_gesture_events_.at( | 163 return queue()->coalesced_gesture_events_.at( |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
195 WebGestureEvent last_acked_event_; | 199 WebGestureEvent last_acked_event_; |
196 scoped_ptr<InputEventAckState> sync_ack_result_; | 200 scoped_ptr<InputEventAckState> sync_ack_result_; |
197 scoped_ptr<WebGestureEvent> sync_followup_event_; | 201 scoped_ptr<WebGestureEvent> sync_followup_event_; |
198 base::MessageLoopForUI message_loop_; | 202 base::MessageLoopForUI message_loop_; |
199 }; | 203 }; |
200 | 204 |
201 #if GTEST_HAS_PARAM_TEST | 205 #if GTEST_HAS_PARAM_TEST |
202 // This is for tests that are to be run for all source devices. | 206 // This is for tests that are to be run for all source devices. |
203 class GestureEventQueueWithSourceTest | 207 class GestureEventQueueWithSourceTest |
204 : public GestureEventQueueTest, | 208 : public GestureEventQueueTest, |
205 public testing::WithParamInterface<WebGestureEvent::SourceDevice> { | 209 public testing::WithParamInterface<WebGestureDevice> {}; |
206 }; | |
207 #endif // GTEST_HAS_PARAM_TEST | 210 #endif // GTEST_HAS_PARAM_TEST |
208 | 211 |
209 TEST_F(GestureEventQueueTest, CoalescesScrollGestureEvents) { | 212 TEST_F(GestureEventQueueTest, CoalescesScrollGestureEvents) { |
210 // Test coalescing of only GestureScrollUpdate events. | 213 // Test coalescing of only GestureScrollUpdate events. |
211 // Simulate gesture events. | 214 // Simulate gesture events. |
212 | 215 |
213 // Sent. | 216 // Sent. |
214 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, | 217 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, |
215 WebGestureEvent::Touchscreen); | 218 blink::WebGestureDeviceTouchscreen); |
216 EXPECT_EQ(1U, GetAndResetSentGestureEventCount()); | 219 EXPECT_EQ(1U, GetAndResetSentGestureEventCount()); |
217 | 220 |
218 // Enqueued. | 221 // Enqueued. |
219 SimulateGestureScrollUpdateEvent(8, -5, 0); | 222 SimulateGestureScrollUpdateEvent(8, -5, 0); |
220 | 223 |
221 // Make sure that the queue contains what we think it should. | 224 // Make sure that the queue contains what we think it should. |
222 WebGestureEvent merged_event = GestureEventLastQueueEvent(); | 225 WebGestureEvent merged_event = GestureEventLastQueueEvent(); |
223 EXPECT_EQ(2U, GestureEventQueueSize()); | 226 EXPECT_EQ(2U, GestureEventQueueSize()); |
224 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); | 227 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); |
225 EXPECT_EQ(WebGestureEvent::Touchscreen, merged_event.sourceDevice); | 228 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice); |
226 | 229 |
227 // Coalesced. | 230 // Coalesced. |
228 SimulateGestureScrollUpdateEvent(8, -6, 0); | 231 SimulateGestureScrollUpdateEvent(8, -6, 0); |
229 | 232 |
230 // Check that coalescing updated the correct values. | 233 // Check that coalescing updated the correct values. |
231 merged_event = GestureEventLastQueueEvent(); | 234 merged_event = GestureEventLastQueueEvent(); |
232 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); | 235 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); |
233 EXPECT_EQ(0, merged_event.modifiers); | 236 EXPECT_EQ(0, merged_event.modifiers); |
234 EXPECT_EQ(16, merged_event.data.scrollUpdate.deltaX); | 237 EXPECT_EQ(16, merged_event.data.scrollUpdate.deltaX); |
235 EXPECT_EQ(-11, merged_event.data.scrollUpdate.deltaY); | 238 EXPECT_EQ(-11, merged_event.data.scrollUpdate.deltaY); |
236 EXPECT_EQ(WebGestureEvent::Touchscreen, merged_event.sourceDevice); | 239 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice); |
237 | 240 |
238 // Enqueued. | 241 // Enqueued. |
239 SimulateGestureScrollUpdateEvent(8, -7, 1); | 242 SimulateGestureScrollUpdateEvent(8, -7, 1); |
240 | 243 |
241 // Check that we didn't wrongly coalesce. | 244 // Check that we didn't wrongly coalesce. |
242 merged_event = GestureEventLastQueueEvent(); | 245 merged_event = GestureEventLastQueueEvent(); |
243 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); | 246 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); |
244 EXPECT_EQ(1, merged_event.modifiers); | 247 EXPECT_EQ(1, merged_event.modifiers); |
245 EXPECT_EQ(WebGestureEvent::Touchscreen, merged_event.sourceDevice); | 248 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice); |
246 | 249 |
247 // Different. | 250 // Different. |
248 SimulateGestureEvent(WebInputEvent::GestureScrollEnd, | 251 SimulateGestureEvent(WebInputEvent::GestureScrollEnd, |
249 WebGestureEvent::Touchscreen); | 252 blink::WebGestureDeviceTouchscreen); |
250 | 253 |
251 // Check that only the first event was sent. | 254 // Check that only the first event was sent. |
252 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); | 255 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); |
253 | 256 |
254 // Check that the ACK sends the second message. | 257 // Check that the ACK sends the second message. |
255 SendInputEventACK(WebInputEvent::GestureScrollBegin, | 258 SendInputEventACK(WebInputEvent::GestureScrollBegin, |
256 INPUT_EVENT_ACK_STATE_CONSUMED); | 259 INPUT_EVENT_ACK_STATE_CONSUMED); |
257 RunUntilIdle(); | 260 RunUntilIdle(); |
258 EXPECT_EQ(1U, GetAndResetAckedGestureEventCount()); | 261 EXPECT_EQ(1U, GetAndResetAckedGestureEventCount()); |
259 EXPECT_EQ(1U, GetAndResetSentGestureEventCount()); | 262 EXPECT_EQ(1U, GetAndResetSentGestureEventCount()); |
(...skipping 20 matching lines...) Expand all Loading... |
280 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); | 283 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); |
281 } | 284 } |
282 | 285 |
283 TEST_F(GestureEventQueueTest, | 286 TEST_F(GestureEventQueueTest, |
284 DoesNotCoalesceScrollGestureEventsFromDifferentDevices) { | 287 DoesNotCoalesceScrollGestureEventsFromDifferentDevices) { |
285 // Test that GestureScrollUpdate events from Touchscreen and Touchpad do not | 288 // Test that GestureScrollUpdate events from Touchscreen and Touchpad do not |
286 // coalesce. | 289 // coalesce. |
287 | 290 |
288 // Sent. | 291 // Sent. |
289 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, | 292 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, |
290 WebGestureEvent::Touchscreen); | 293 blink::WebGestureDeviceTouchscreen); |
291 EXPECT_EQ(1U, GetAndResetSentGestureEventCount()); | 294 EXPECT_EQ(1U, GetAndResetSentGestureEventCount()); |
292 | 295 |
293 // Enqueued. | 296 // Enqueued. |
294 SimulateGestureScrollUpdateEvent(8, -5, 0); | 297 SimulateGestureScrollUpdateEvent(8, -5, 0); |
295 | 298 |
296 // Make sure that the queue contains what we think it should. | 299 // Make sure that the queue contains what we think it should. |
297 EXPECT_EQ(2U, GestureEventQueueSize()); | 300 EXPECT_EQ(2U, GestureEventQueueSize()); |
298 EXPECT_EQ(WebGestureEvent::Touchscreen, | 301 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, |
299 GestureEventLastQueueEvent().sourceDevice); | 302 GestureEventLastQueueEvent().sourceDevice); |
300 | 303 |
301 // Coalesced. | 304 // Coalesced. |
302 SimulateGestureScrollUpdateEvent(8, -6, 0); | 305 SimulateGestureScrollUpdateEvent(8, -6, 0); |
303 EXPECT_EQ(2U, GestureEventQueueSize()); | 306 EXPECT_EQ(2U, GestureEventQueueSize()); |
304 EXPECT_EQ(WebGestureEvent::Touchscreen, | 307 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, |
305 GestureEventLastQueueEvent().sourceDevice); | 308 GestureEventLastQueueEvent().sourceDevice); |
306 | 309 |
307 // Enqueued. | 310 // Enqueued. |
308 SimulateGestureEvent(WebInputEvent::GestureScrollUpdate, | 311 SimulateGestureEvent(WebInputEvent::GestureScrollUpdate, |
309 WebGestureEvent::Touchpad); | 312 blink::WebGestureDeviceTouchpad); |
310 EXPECT_EQ(3U, GestureEventQueueSize()); | 313 EXPECT_EQ(3U, GestureEventQueueSize()); |
311 EXPECT_EQ(WebGestureEvent::Touchpad, | 314 EXPECT_EQ(blink::WebGestureDeviceTouchpad, |
312 GestureEventLastQueueEvent().sourceDevice); | 315 GestureEventLastQueueEvent().sourceDevice); |
313 | 316 |
314 // Coalesced. | 317 // Coalesced. |
315 SimulateGestureEvent(WebInputEvent::GestureScrollUpdate, | 318 SimulateGestureEvent(WebInputEvent::GestureScrollUpdate, |
316 WebGestureEvent::Touchpad); | 319 blink::WebGestureDeviceTouchpad); |
317 EXPECT_EQ(3U, GestureEventQueueSize()); | 320 EXPECT_EQ(3U, GestureEventQueueSize()); |
318 EXPECT_EQ(WebGestureEvent::Touchpad, | 321 EXPECT_EQ(blink::WebGestureDeviceTouchpad, |
319 GestureEventLastQueueEvent().sourceDevice); | 322 GestureEventLastQueueEvent().sourceDevice); |
320 | 323 |
321 // Enqueued. | 324 // Enqueued. |
322 SimulateGestureScrollUpdateEvent(8, -7, 0); | 325 SimulateGestureScrollUpdateEvent(8, -7, 0); |
323 EXPECT_EQ(4U, GestureEventQueueSize()); | 326 EXPECT_EQ(4U, GestureEventQueueSize()); |
324 EXPECT_EQ(WebGestureEvent::Touchscreen, | 327 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, |
325 GestureEventLastQueueEvent().sourceDevice); | 328 GestureEventLastQueueEvent().sourceDevice); |
326 } | 329 } |
327 | 330 |
328 TEST_F(GestureEventQueueTest, CoalescesScrollAndPinchEvents) { | 331 TEST_F(GestureEventQueueTest, CoalescesScrollAndPinchEvents) { |
329 // Test coalescing of only GestureScrollUpdate events. | 332 // Test coalescing of only GestureScrollUpdate events. |
330 // Simulate gesture events. | 333 // Simulate gesture events. |
331 | 334 |
332 // Sent. | 335 // Sent. |
333 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, | 336 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, |
334 WebGestureEvent::Touchscreen); | 337 blink::WebGestureDeviceTouchscreen); |
335 | 338 |
336 // Sent. | 339 // Sent. |
337 SimulateGestureEvent(WebInputEvent::GesturePinchBegin, | 340 SimulateGestureEvent(WebInputEvent::GesturePinchBegin, |
338 WebGestureEvent::Touchscreen); | 341 blink::WebGestureDeviceTouchscreen); |
339 | 342 |
340 // Enqueued. | 343 // Enqueued. |
341 SimulateGestureScrollUpdateEvent(8, -4, 1); | 344 SimulateGestureScrollUpdateEvent(8, -4, 1); |
342 | 345 |
343 // Make sure that the queue contains what we think it should. | 346 // Make sure that the queue contains what we think it should. |
344 WebGestureEvent merged_event = GestureEventLastQueueEvent(); | 347 WebGestureEvent merged_event = GestureEventLastQueueEvent(); |
345 EXPECT_EQ(3U, GestureEventQueueSize()); | 348 EXPECT_EQ(3U, GestureEventQueueSize()); |
346 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); | 349 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); |
347 | 350 |
348 // Coalesced without changing event order. Note anchor at (60, 60). Anchoring | 351 // Coalesced without changing event order. Note anchor at (60, 60). Anchoring |
349 // from a point that is not the origin should still give us the right scroll. | 352 // from a point that is not the origin should still give us the right scroll. |
350 SimulateGesturePinchUpdateEvent(1.5, 60, 60, 1); | 353 SimulateGesturePinchUpdateEvent(1.5, 60, 60, 1); |
351 EXPECT_EQ(4U, GestureEventQueueSize()); | 354 EXPECT_EQ(4U, GestureEventQueueSize()); |
352 merged_event = GestureEventLastQueueEvent(); | 355 merged_event = GestureEventLastQueueEvent(); |
353 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, merged_event.type); | 356 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, merged_event.type); |
354 EXPECT_EQ(1.5, merged_event.data.pinchUpdate.scale); | 357 EXPECT_EQ(1.5, merged_event.data.pinchUpdate.scale); |
355 EXPECT_EQ(1, merged_event.modifiers); | 358 EXPECT_EQ(1, merged_event.modifiers); |
356 EXPECT_EQ(WebGestureEvent::Touchscreen, merged_event.sourceDevice); | 359 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice); |
357 merged_event = GestureEventSecondFromLastQueueEvent(); | 360 merged_event = GestureEventSecondFromLastQueueEvent(); |
358 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); | 361 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); |
359 EXPECT_EQ(8, merged_event.data.scrollUpdate.deltaX); | 362 EXPECT_EQ(8, merged_event.data.scrollUpdate.deltaX); |
360 EXPECT_EQ(-4, merged_event.data.scrollUpdate.deltaY); | 363 EXPECT_EQ(-4, merged_event.data.scrollUpdate.deltaY); |
361 EXPECT_EQ(1, merged_event.modifiers); | 364 EXPECT_EQ(1, merged_event.modifiers); |
362 EXPECT_EQ(WebGestureEvent::Touchscreen, merged_event.sourceDevice); | 365 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice); |
363 | 366 |
364 // Enqueued. | 367 // Enqueued. |
365 SimulateGestureScrollUpdateEvent(6, -3, 1); | 368 SimulateGestureScrollUpdateEvent(6, -3, 1); |
366 | 369 |
367 // Check whether coalesced correctly. | 370 // Check whether coalesced correctly. |
368 EXPECT_EQ(4U, GestureEventQueueSize()); | 371 EXPECT_EQ(4U, GestureEventQueueSize()); |
369 merged_event = GestureEventLastQueueEvent(); | 372 merged_event = GestureEventLastQueueEvent(); |
370 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, merged_event.type); | 373 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, merged_event.type); |
371 EXPECT_EQ(1.5, merged_event.data.pinchUpdate.scale); | 374 EXPECT_EQ(1.5, merged_event.data.pinchUpdate.scale); |
372 EXPECT_EQ(1, merged_event.modifiers); | 375 EXPECT_EQ(1, merged_event.modifiers); |
373 EXPECT_EQ(WebGestureEvent::Touchscreen, merged_event.sourceDevice); | 376 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice); |
374 merged_event = GestureEventSecondFromLastQueueEvent(); | 377 merged_event = GestureEventSecondFromLastQueueEvent(); |
375 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); | 378 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); |
376 EXPECT_EQ(12, merged_event.data.scrollUpdate.deltaX); | 379 EXPECT_EQ(12, merged_event.data.scrollUpdate.deltaX); |
377 EXPECT_EQ(-6, merged_event.data.scrollUpdate.deltaY); | 380 EXPECT_EQ(-6, merged_event.data.scrollUpdate.deltaY); |
378 EXPECT_EQ(1, merged_event.modifiers); | 381 EXPECT_EQ(1, merged_event.modifiers); |
379 EXPECT_EQ(WebGestureEvent::Touchscreen, merged_event.sourceDevice); | 382 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice); |
380 | 383 |
381 // Enqueued. | 384 // Enqueued. |
382 SimulateGesturePinchUpdateEvent(2, 60, 60, 1); | 385 SimulateGesturePinchUpdateEvent(2, 60, 60, 1); |
383 | 386 |
384 // Check whether coalesced correctly. | 387 // Check whether coalesced correctly. |
385 EXPECT_EQ(4U, GestureEventQueueSize()); | 388 EXPECT_EQ(4U, GestureEventQueueSize()); |
386 merged_event = GestureEventLastQueueEvent(); | 389 merged_event = GestureEventLastQueueEvent(); |
387 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, merged_event.type); | 390 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, merged_event.type); |
388 EXPECT_EQ(3, merged_event.data.pinchUpdate.scale); | 391 EXPECT_EQ(3, merged_event.data.pinchUpdate.scale); |
389 EXPECT_EQ(1, merged_event.modifiers); | 392 EXPECT_EQ(1, merged_event.modifiers); |
390 EXPECT_EQ(WebGestureEvent::Touchscreen, merged_event.sourceDevice); | 393 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice); |
391 merged_event = GestureEventSecondFromLastQueueEvent(); | 394 merged_event = GestureEventSecondFromLastQueueEvent(); |
392 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); | 395 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); |
393 EXPECT_EQ(12, merged_event.data.scrollUpdate.deltaX); | 396 EXPECT_EQ(12, merged_event.data.scrollUpdate.deltaX); |
394 EXPECT_EQ(-6, merged_event.data.scrollUpdate.deltaY); | 397 EXPECT_EQ(-6, merged_event.data.scrollUpdate.deltaY); |
395 EXPECT_EQ(1, merged_event.modifiers); | 398 EXPECT_EQ(1, merged_event.modifiers); |
396 EXPECT_EQ(WebGestureEvent::Touchscreen, merged_event.sourceDevice); | 399 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice); |
397 | 400 |
398 // Enqueued. | 401 // Enqueued. |
399 SimulateGesturePinchUpdateEvent(2, 60, 60, 1); | 402 SimulateGesturePinchUpdateEvent(2, 60, 60, 1); |
400 | 403 |
401 // Check whether coalesced correctly. | 404 // Check whether coalesced correctly. |
402 EXPECT_EQ(4U, GestureEventQueueSize()); | 405 EXPECT_EQ(4U, GestureEventQueueSize()); |
403 merged_event = GestureEventLastQueueEvent(); | 406 merged_event = GestureEventLastQueueEvent(); |
404 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, merged_event.type); | 407 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, merged_event.type); |
405 EXPECT_EQ(6, merged_event.data.pinchUpdate.scale); | 408 EXPECT_EQ(6, merged_event.data.pinchUpdate.scale); |
406 EXPECT_EQ(1, merged_event.modifiers); | 409 EXPECT_EQ(1, merged_event.modifiers); |
407 EXPECT_EQ(WebGestureEvent::Touchscreen, merged_event.sourceDevice); | 410 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice); |
408 merged_event = GestureEventSecondFromLastQueueEvent(); | 411 merged_event = GestureEventSecondFromLastQueueEvent(); |
409 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); | 412 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); |
410 EXPECT_EQ(12, merged_event.data.scrollUpdate.deltaX); | 413 EXPECT_EQ(12, merged_event.data.scrollUpdate.deltaX); |
411 EXPECT_EQ(-6, merged_event.data.scrollUpdate.deltaY); | 414 EXPECT_EQ(-6, merged_event.data.scrollUpdate.deltaY); |
412 EXPECT_EQ(1, merged_event.modifiers); | 415 EXPECT_EQ(1, merged_event.modifiers); |
413 EXPECT_EQ(WebGestureEvent::Touchscreen, merged_event.sourceDevice); | 416 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice); |
414 | 417 |
415 // Check that only the first event was sent. | 418 // Check that only the first event was sent. |
416 EXPECT_EQ(1U, GetAndResetSentGestureEventCount()); | 419 EXPECT_EQ(1U, GetAndResetSentGestureEventCount()); |
417 | 420 |
418 // Check that the ACK sends the second message. | 421 // Check that the ACK sends the second message. |
419 SendInputEventACK(WebInputEvent::GestureScrollBegin, | 422 SendInputEventACK(WebInputEvent::GestureScrollBegin, |
420 INPUT_EVENT_ACK_STATE_CONSUMED); | 423 INPUT_EVENT_ACK_STATE_CONSUMED); |
421 RunUntilIdle(); | 424 RunUntilIdle(); |
422 EXPECT_EQ(1U, GetAndResetSentGestureEventCount()); | 425 EXPECT_EQ(1U, GetAndResetSentGestureEventCount()); |
423 | 426 |
424 // Enqueued. | 427 // Enqueued. |
425 SimulateGestureScrollUpdateEvent(6, -6, 1); | 428 SimulateGestureScrollUpdateEvent(6, -6, 1); |
426 | 429 |
427 // Check whether coalesced correctly. | 430 // Check whether coalesced correctly. |
428 EXPECT_EQ(3U, GestureEventQueueSize()); | 431 EXPECT_EQ(3U, GestureEventQueueSize()); |
429 merged_event = GestureEventLastQueueEvent(); | 432 merged_event = GestureEventLastQueueEvent(); |
430 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, merged_event.type); | 433 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, merged_event.type); |
431 EXPECT_EQ(6, merged_event.data.pinchUpdate.scale); | 434 EXPECT_EQ(6, merged_event.data.pinchUpdate.scale); |
432 EXPECT_EQ(1, merged_event.modifiers); | 435 EXPECT_EQ(1, merged_event.modifiers); |
433 EXPECT_EQ(WebGestureEvent::Touchscreen, merged_event.sourceDevice); | 436 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice); |
434 merged_event = GestureEventSecondFromLastQueueEvent(); | 437 merged_event = GestureEventSecondFromLastQueueEvent(); |
435 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); | 438 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); |
436 EXPECT_EQ(13, merged_event.data.scrollUpdate.deltaX); | 439 EXPECT_EQ(13, merged_event.data.scrollUpdate.deltaX); |
437 EXPECT_EQ(-7, merged_event.data.scrollUpdate.deltaY); | 440 EXPECT_EQ(-7, merged_event.data.scrollUpdate.deltaY); |
438 EXPECT_EQ(1, merged_event.modifiers); | 441 EXPECT_EQ(1, merged_event.modifiers); |
439 EXPECT_EQ(WebGestureEvent::Touchscreen, merged_event.sourceDevice); | 442 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice); |
440 | 443 |
441 // At this point ACKs shouldn't be getting ignored. | 444 // At this point ACKs shouldn't be getting ignored. |
442 EXPECT_FALSE(WillIgnoreNextACK()); | 445 EXPECT_FALSE(WillIgnoreNextACK()); |
443 | 446 |
444 // Check that the ACK sends both scroll and pinch updates. | 447 // Check that the ACK sends both scroll and pinch updates. |
445 SendInputEventACK(WebInputEvent::GesturePinchBegin, | 448 SendInputEventACK(WebInputEvent::GesturePinchBegin, |
446 INPUT_EVENT_ACK_STATE_CONSUMED); | 449 INPUT_EVENT_ACK_STATE_CONSUMED); |
447 RunUntilIdle(); | 450 RunUntilIdle(); |
448 EXPECT_EQ(2U, GetAndResetSentGestureEventCount()); | 451 EXPECT_EQ(2U, GetAndResetSentGestureEventCount()); |
449 | 452 |
450 // The next ACK should be getting ignored. | 453 // The next ACK should be getting ignored. |
451 EXPECT_TRUE(WillIgnoreNextACK()); | 454 EXPECT_TRUE(WillIgnoreNextACK()); |
452 | 455 |
453 // Enqueued. | 456 // Enqueued. |
454 SimulateGestureScrollUpdateEvent(1, -1, 1); | 457 SimulateGestureScrollUpdateEvent(1, -1, 1); |
455 | 458 |
456 // Check whether coalesced correctly. | 459 // Check whether coalesced correctly. |
457 EXPECT_EQ(3U, GestureEventQueueSize()); | 460 EXPECT_EQ(3U, GestureEventQueueSize()); |
458 merged_event = GestureEventLastQueueEvent(); | 461 merged_event = GestureEventLastQueueEvent(); |
459 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); | 462 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); |
460 EXPECT_EQ(1, merged_event.data.scrollUpdate.deltaX); | 463 EXPECT_EQ(1, merged_event.data.scrollUpdate.deltaX); |
461 EXPECT_EQ(-1, merged_event.data.scrollUpdate.deltaY); | 464 EXPECT_EQ(-1, merged_event.data.scrollUpdate.deltaY); |
462 EXPECT_EQ(1, merged_event.modifiers); | 465 EXPECT_EQ(1, merged_event.modifiers); |
463 EXPECT_EQ(WebGestureEvent::Touchscreen, merged_event.sourceDevice); | 466 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice); |
464 merged_event = GestureEventSecondFromLastQueueEvent(); | 467 merged_event = GestureEventSecondFromLastQueueEvent(); |
465 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, merged_event.type); | 468 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, merged_event.type); |
466 EXPECT_EQ(6, merged_event.data.pinchUpdate.scale); | 469 EXPECT_EQ(6, merged_event.data.pinchUpdate.scale); |
467 EXPECT_EQ(1, merged_event.modifiers); | 470 EXPECT_EQ(1, merged_event.modifiers); |
468 EXPECT_EQ(WebGestureEvent::Touchscreen, merged_event.sourceDevice); | 471 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice); |
469 | 472 |
470 // Enqueued. | 473 // Enqueued. |
471 SimulateGestureScrollUpdateEvent(2, -2, 1); | 474 SimulateGestureScrollUpdateEvent(2, -2, 1); |
472 | 475 |
473 // Coalescing scrolls should still work. | 476 // Coalescing scrolls should still work. |
474 EXPECT_EQ(3U, GestureEventQueueSize()); | 477 EXPECT_EQ(3U, GestureEventQueueSize()); |
475 merged_event = GestureEventLastQueueEvent(); | 478 merged_event = GestureEventLastQueueEvent(); |
476 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); | 479 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); |
477 EXPECT_EQ(3, merged_event.data.scrollUpdate.deltaX); | 480 EXPECT_EQ(3, merged_event.data.scrollUpdate.deltaX); |
478 EXPECT_EQ(-3, merged_event.data.scrollUpdate.deltaY); | 481 EXPECT_EQ(-3, merged_event.data.scrollUpdate.deltaY); |
479 EXPECT_EQ(1, merged_event.modifiers); | 482 EXPECT_EQ(1, merged_event.modifiers); |
480 EXPECT_EQ(WebGestureEvent::Touchscreen, merged_event.sourceDevice); | 483 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice); |
481 merged_event = GestureEventSecondFromLastQueueEvent(); | 484 merged_event = GestureEventSecondFromLastQueueEvent(); |
482 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, merged_event.type); | 485 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, merged_event.type); |
483 EXPECT_EQ(6, merged_event.data.pinchUpdate.scale); | 486 EXPECT_EQ(6, merged_event.data.pinchUpdate.scale); |
484 EXPECT_EQ(1, merged_event.modifiers); | 487 EXPECT_EQ(1, merged_event.modifiers); |
485 EXPECT_EQ(WebGestureEvent::Touchscreen, merged_event.sourceDevice); | 488 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice); |
486 | 489 |
487 // Enqueued. | 490 // Enqueued. |
488 SimulateGesturePinchUpdateEvent(0.5, 60, 60, 1); | 491 SimulateGesturePinchUpdateEvent(0.5, 60, 60, 1); |
489 | 492 |
490 // Check whether coalesced correctly. | 493 // Check whether coalesced correctly. |
491 EXPECT_EQ(4U, GestureEventQueueSize()); | 494 EXPECT_EQ(4U, GestureEventQueueSize()); |
492 merged_event = GestureEventLastQueueEvent(); | 495 merged_event = GestureEventLastQueueEvent(); |
493 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, merged_event.type); | 496 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, merged_event.type); |
494 EXPECT_EQ(0.5, merged_event.data.pinchUpdate.scale); | 497 EXPECT_EQ(0.5, merged_event.data.pinchUpdate.scale); |
495 EXPECT_EQ(1, merged_event.modifiers); | 498 EXPECT_EQ(1, merged_event.modifiers); |
496 EXPECT_EQ(WebGestureEvent::Touchscreen, merged_event.sourceDevice); | 499 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice); |
497 merged_event = GestureEventSecondFromLastQueueEvent(); | 500 merged_event = GestureEventSecondFromLastQueueEvent(); |
498 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); | 501 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); |
499 EXPECT_EQ(3, merged_event.data.scrollUpdate.deltaX); | 502 EXPECT_EQ(3, merged_event.data.scrollUpdate.deltaX); |
500 EXPECT_EQ(-3, merged_event.data.scrollUpdate.deltaY); | 503 EXPECT_EQ(-3, merged_event.data.scrollUpdate.deltaY); |
501 EXPECT_EQ(1, merged_event.modifiers); | 504 EXPECT_EQ(1, merged_event.modifiers); |
502 EXPECT_EQ(WebGestureEvent::Touchscreen, merged_event.sourceDevice); | 505 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice); |
503 | 506 |
504 // Check that the ACK gets ignored. | 507 // Check that the ACK gets ignored. |
505 SendInputEventACK(WebInputEvent::GestureScrollUpdate, | 508 SendInputEventACK(WebInputEvent::GestureScrollUpdate, |
506 INPUT_EVENT_ACK_STATE_CONSUMED); | 509 INPUT_EVENT_ACK_STATE_CONSUMED); |
507 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, last_acked_event().type); | 510 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, last_acked_event().type); |
508 RunUntilIdle(); | 511 RunUntilIdle(); |
509 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); | 512 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); |
510 // The flag should have been flipped back to false. | 513 // The flag should have been flipped back to false. |
511 EXPECT_FALSE(WillIgnoreNextACK()); | 514 EXPECT_FALSE(WillIgnoreNextACK()); |
512 | 515 |
513 // Enqueued. | 516 // Enqueued. |
514 SimulateGestureScrollUpdateEvent(2, -2, 2); | 517 SimulateGestureScrollUpdateEvent(2, -2, 2); |
515 | 518 |
516 // Shouldn't coalesce with different modifiers. | 519 // Shouldn't coalesce with different modifiers. |
517 EXPECT_EQ(4U, GestureEventQueueSize()); | 520 EXPECT_EQ(4U, GestureEventQueueSize()); |
518 merged_event = GestureEventLastQueueEvent(); | 521 merged_event = GestureEventLastQueueEvent(); |
519 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); | 522 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); |
520 EXPECT_EQ(2, merged_event.data.scrollUpdate.deltaX); | 523 EXPECT_EQ(2, merged_event.data.scrollUpdate.deltaX); |
521 EXPECT_EQ(-2, merged_event.data.scrollUpdate.deltaY); | 524 EXPECT_EQ(-2, merged_event.data.scrollUpdate.deltaY); |
522 EXPECT_EQ(2, merged_event.modifiers); | 525 EXPECT_EQ(2, merged_event.modifiers); |
523 EXPECT_EQ(WebGestureEvent::Touchscreen, merged_event.sourceDevice); | 526 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice); |
524 merged_event = GestureEventSecondFromLastQueueEvent(); | 527 merged_event = GestureEventSecondFromLastQueueEvent(); |
525 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, merged_event.type); | 528 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, merged_event.type); |
526 EXPECT_EQ(0.5, merged_event.data.pinchUpdate.scale); | 529 EXPECT_EQ(0.5, merged_event.data.pinchUpdate.scale); |
527 EXPECT_EQ(1, merged_event.modifiers); | 530 EXPECT_EQ(1, merged_event.modifiers); |
528 EXPECT_EQ(WebGestureEvent::Touchscreen, merged_event.sourceDevice); | 531 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice); |
529 | 532 |
530 // Check that the ACK sends the next scroll pinch pair. | 533 // Check that the ACK sends the next scroll pinch pair. |
531 SendInputEventACK(WebInputEvent::GesturePinchUpdate, | 534 SendInputEventACK(WebInputEvent::GesturePinchUpdate, |
532 INPUT_EVENT_ACK_STATE_CONSUMED); | 535 INPUT_EVENT_ACK_STATE_CONSUMED); |
533 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, last_acked_event().type); | 536 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, last_acked_event().type); |
534 RunUntilIdle(); | 537 RunUntilIdle(); |
535 EXPECT_EQ(2U, GetAndResetSentGestureEventCount()); | 538 EXPECT_EQ(2U, GetAndResetSentGestureEventCount()); |
536 | 539 |
537 // Check that the ACK sends the second message. | 540 // Check that the ACK sends the second message. |
538 SendInputEventACK(WebInputEvent::GestureScrollUpdate, | 541 SendInputEventACK(WebInputEvent::GestureScrollUpdate, |
(...skipping 14 matching lines...) Expand all Loading... |
553 INPUT_EVENT_ACK_STATE_CONSUMED); | 556 INPUT_EVENT_ACK_STATE_CONSUMED); |
554 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, last_acked_event().type); | 557 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, last_acked_event().type); |
555 RunUntilIdle(); | 558 RunUntilIdle(); |
556 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); | 559 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); |
557 EXPECT_EQ(0U, GestureEventQueueSize()); | 560 EXPECT_EQ(0U, GestureEventQueueSize()); |
558 } | 561 } |
559 | 562 |
560 TEST_F(GestureEventQueueTest, CoalescesMultiplePinchEventSequences) { | 563 TEST_F(GestureEventQueueTest, CoalescesMultiplePinchEventSequences) { |
561 // Simulate a pinch sequence. | 564 // Simulate a pinch sequence. |
562 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, | 565 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, |
563 WebGestureEvent::Touchscreen); | 566 blink::WebGestureDeviceTouchscreen); |
564 SimulateGestureEvent(WebInputEvent::GesturePinchBegin, | 567 SimulateGestureEvent(WebInputEvent::GesturePinchBegin, |
565 WebGestureEvent::Touchscreen); | 568 blink::WebGestureDeviceTouchscreen); |
566 | 569 |
567 SimulateGestureScrollUpdateEvent(8, -4, 1); | 570 SimulateGestureScrollUpdateEvent(8, -4, 1); |
568 // Make sure that the queue contains what we think it should. | 571 // Make sure that the queue contains what we think it should. |
569 WebGestureEvent merged_event = GestureEventLastQueueEvent(); | 572 WebGestureEvent merged_event = GestureEventLastQueueEvent(); |
570 size_t expected_events_in_queue = 3; | 573 size_t expected_events_in_queue = 3; |
571 EXPECT_EQ(expected_events_in_queue, GestureEventQueueSize()); | 574 EXPECT_EQ(expected_events_in_queue, GestureEventQueueSize()); |
572 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); | 575 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); |
573 | 576 |
574 // Coalesced without changing event order. Note anchor at (60, 60). Anchoring | 577 // Coalesced without changing event order. Note anchor at (60, 60). Anchoring |
575 // from a point that is not the origin should still give us the right scroll. | 578 // from a point that is not the origin should still give us the right scroll. |
(...skipping 19 matching lines...) Expand all Loading... |
595 EXPECT_EQ(1.5, merged_event.data.pinchUpdate.scale); | 598 EXPECT_EQ(1.5, merged_event.data.pinchUpdate.scale); |
596 EXPECT_EQ(1, merged_event.modifiers); | 599 EXPECT_EQ(1, merged_event.modifiers); |
597 merged_event = GestureEventSecondFromLastQueueEvent(); | 600 merged_event = GestureEventSecondFromLastQueueEvent(); |
598 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); | 601 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); |
599 EXPECT_EQ(12, merged_event.data.scrollUpdate.deltaX); | 602 EXPECT_EQ(12, merged_event.data.scrollUpdate.deltaX); |
600 EXPECT_EQ(-6, merged_event.data.scrollUpdate.deltaY); | 603 EXPECT_EQ(-6, merged_event.data.scrollUpdate.deltaY); |
601 EXPECT_EQ(1, merged_event.modifiers); | 604 EXPECT_EQ(1, merged_event.modifiers); |
602 | 605 |
603 // Now start another sequence before the previous sequence has been ack'ed. | 606 // Now start another sequence before the previous sequence has been ack'ed. |
604 SimulateGestureEvent(WebInputEvent::GesturePinchEnd, | 607 SimulateGestureEvent(WebInputEvent::GesturePinchEnd, |
605 WebGestureEvent::Touchscreen); | 608 blink::WebGestureDeviceTouchscreen); |
606 SimulateGestureEvent(WebInputEvent::GestureScrollEnd, | 609 SimulateGestureEvent(WebInputEvent::GestureScrollEnd, |
607 WebGestureEvent::Touchscreen); | 610 blink::WebGestureDeviceTouchscreen); |
608 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, | 611 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, |
609 WebGestureEvent::Touchscreen); | 612 blink::WebGestureDeviceTouchscreen); |
610 SimulateGestureEvent(WebInputEvent::GesturePinchBegin, | 613 SimulateGestureEvent(WebInputEvent::GesturePinchBegin, |
611 WebGestureEvent::Touchscreen); | 614 blink::WebGestureDeviceTouchscreen); |
612 | 615 |
613 SimulateGestureScrollUpdateEvent(8, -4, 1); | 616 SimulateGestureScrollUpdateEvent(8, -4, 1); |
614 // Make sure that the queue contains what we think it should. | 617 // Make sure that the queue contains what we think it should. |
615 expected_events_in_queue += 5; | 618 expected_events_in_queue += 5; |
616 merged_event = GestureEventLastQueueEvent(); | 619 merged_event = GestureEventLastQueueEvent(); |
617 EXPECT_EQ(expected_events_in_queue, GestureEventQueueSize()); | 620 EXPECT_EQ(expected_events_in_queue, GestureEventQueueSize()); |
618 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); | 621 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); |
619 | 622 |
620 // Coalesced without changing event order. Note anchor at (60, 60). Anchoring | 623 // Coalesced without changing event order. Note anchor at (60, 60). Anchoring |
621 // from a point that is not the origin should still give us the right scroll. | 624 // from a point that is not the origin should still give us the right scroll. |
(...skipping 20 matching lines...) Expand all Loading... |
642 EXPECT_EQ(1, merged_event.modifiers); | 645 EXPECT_EQ(1, merged_event.modifiers); |
643 merged_event = GestureEventSecondFromLastQueueEvent(); | 646 merged_event = GestureEventSecondFromLastQueueEvent(); |
644 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); | 647 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); |
645 EXPECT_EQ(12, merged_event.data.scrollUpdate.deltaX); | 648 EXPECT_EQ(12, merged_event.data.scrollUpdate.deltaX); |
646 EXPECT_EQ(-6, merged_event.data.scrollUpdate.deltaY); | 649 EXPECT_EQ(-6, merged_event.data.scrollUpdate.deltaY); |
647 EXPECT_EQ(1, merged_event.modifiers); | 650 EXPECT_EQ(1, merged_event.modifiers); |
648 } | 651 } |
649 | 652 |
650 TEST_F(GestureEventQueueTest, CoalescesPinchSequencesWithEarlyAck) { | 653 TEST_F(GestureEventQueueTest, CoalescesPinchSequencesWithEarlyAck) { |
651 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, | 654 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, |
652 WebGestureEvent::Touchscreen); | 655 blink::WebGestureDeviceTouchscreen); |
653 SendInputEventACK(WebInputEvent::GestureScrollBegin, | 656 SendInputEventACK(WebInputEvent::GestureScrollBegin, |
654 INPUT_EVENT_ACK_STATE_CONSUMED); | 657 INPUT_EVENT_ACK_STATE_CONSUMED); |
655 | 658 |
656 SimulateGestureEvent(WebInputEvent::GesturePinchBegin, | 659 SimulateGestureEvent(WebInputEvent::GesturePinchBegin, |
657 WebGestureEvent::Touchscreen); | 660 blink::WebGestureDeviceTouchscreen); |
658 SendInputEventACK(WebInputEvent::GesturePinchBegin, | 661 SendInputEventACK(WebInputEvent::GesturePinchBegin, |
659 INPUT_EVENT_ACK_STATE_CONSUMED); | 662 INPUT_EVENT_ACK_STATE_CONSUMED); |
660 // ScrollBegin and PinchBegin have been sent | 663 // ScrollBegin and PinchBegin have been sent |
661 EXPECT_EQ(2U, GetAndResetSentGestureEventCount()); | 664 EXPECT_EQ(2U, GetAndResetSentGestureEventCount()); |
662 EXPECT_EQ(0U, GestureEventQueueSize()); | 665 EXPECT_EQ(0U, GestureEventQueueSize()); |
663 | 666 |
664 SimulateGestureScrollUpdateEvent(5, 5, 1); | 667 SimulateGestureScrollUpdateEvent(5, 5, 1); |
665 EXPECT_EQ(1U, GetAndResetSentGestureEventCount()); | 668 EXPECT_EQ(1U, GetAndResetSentGestureEventCount()); |
666 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, | 669 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, |
667 GestureEventLastQueueEvent().type); | 670 GestureEventLastQueueEvent().type); |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
706 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, last_acked_event().type); | 709 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, last_acked_event().type); |
707 EXPECT_EQ(2.f * 3.f * 4.f, last_acked_event().data.pinchUpdate.scale); | 710 EXPECT_EQ(2.f * 3.f * 4.f, last_acked_event().data.pinchUpdate.scale); |
708 | 711 |
709 EXPECT_EQ(0U, GestureEventQueueSize()); | 712 EXPECT_EQ(0U, GestureEventQueueSize()); |
710 } | 713 } |
711 | 714 |
712 TEST_F(GestureEventQueueTest, | 715 TEST_F(GestureEventQueueTest, |
713 DoesNotCoalescePinchGestureEventsWithDifferentModifiers) { | 716 DoesNotCoalescePinchGestureEventsWithDifferentModifiers) { |
714 // Insert an event to force queueing of gestures. | 717 // Insert an event to force queueing of gestures. |
715 SimulateGestureEvent(WebInputEvent::GestureTapCancel, | 718 SimulateGestureEvent(WebInputEvent::GestureTapCancel, |
716 WebGestureEvent::Touchscreen); | 719 blink::WebGestureDeviceTouchscreen); |
717 EXPECT_EQ(1U, GetAndResetSentGestureEventCount()); | 720 EXPECT_EQ(1U, GetAndResetSentGestureEventCount()); |
718 EXPECT_EQ(1U, GestureEventQueueSize()); | 721 EXPECT_EQ(1U, GestureEventQueueSize()); |
719 | 722 |
720 SimulateGestureScrollUpdateEvent(5, 5, 1); | 723 SimulateGestureScrollUpdateEvent(5, 5, 1); |
721 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); | 724 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); |
722 EXPECT_EQ(2U, GestureEventQueueSize()); | 725 EXPECT_EQ(2U, GestureEventQueueSize()); |
723 | 726 |
724 SimulateGesturePinchUpdateEvent(3, 60, 60, 1); | 727 SimulateGesturePinchUpdateEvent(3, 60, 60, 1); |
725 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); | 728 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); |
726 EXPECT_EQ(3U, GestureEventQueueSize()); | 729 EXPECT_EQ(3U, GestureEventQueueSize()); |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
769 SendInputEventACK(WebInputEvent::GesturePinchUpdate, | 772 SendInputEventACK(WebInputEvent::GesturePinchUpdate, |
770 INPUT_EVENT_ACK_STATE_CONSUMED); | 773 INPUT_EVENT_ACK_STATE_CONSUMED); |
771 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, last_acked_event().type); | 774 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, last_acked_event().type); |
772 EXPECT_EQ(6.f, last_acked_event().data.pinchUpdate.scale); | 775 EXPECT_EQ(6.f, last_acked_event().data.pinchUpdate.scale); |
773 EXPECT_EQ(0U, GestureEventQueueSize()); | 776 EXPECT_EQ(0U, GestureEventQueueSize()); |
774 } | 777 } |
775 | 778 |
776 TEST_F(GestureEventQueueTest, CoalescesScrollAndPinchEventsIdentity) { | 779 TEST_F(GestureEventQueueTest, CoalescesScrollAndPinchEventsIdentity) { |
777 // Insert an event to force queueing of gestures. | 780 // Insert an event to force queueing of gestures. |
778 SimulateGestureEvent(WebInputEvent::GestureTapCancel, | 781 SimulateGestureEvent(WebInputEvent::GestureTapCancel, |
779 WebGestureEvent::Touchscreen); | 782 blink::WebGestureDeviceTouchscreen); |
780 EXPECT_EQ(1U, GetAndResetSentGestureEventCount()); | 783 EXPECT_EQ(1U, GetAndResetSentGestureEventCount()); |
781 EXPECT_EQ(1U, GestureEventQueueSize()); | 784 EXPECT_EQ(1U, GestureEventQueueSize()); |
782 | 785 |
783 // Ensure that coalescing yields an identity transform for any pinch/scroll | 786 // Ensure that coalescing yields an identity transform for any pinch/scroll |
784 // pair combined with its inverse. | 787 // pair combined with its inverse. |
785 SimulateGestureScrollUpdateEvent(5, 5, 1); | 788 SimulateGestureScrollUpdateEvent(5, 5, 1); |
786 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); | 789 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); |
787 EXPECT_EQ(2U, GestureEventQueueSize()); | 790 EXPECT_EQ(2U, GestureEventQueueSize()); |
788 | 791 |
789 SimulateGesturePinchUpdateEvent(5, 10, 10, 1); | 792 SimulateGesturePinchUpdateEvent(5, 10, 10, 1); |
(...skipping 20 matching lines...) Expand all Loading... |
810 EXPECT_EQ(0.f, last_acked_event().data.scrollUpdate.deltaY); | 813 EXPECT_EQ(0.f, last_acked_event().data.scrollUpdate.deltaY); |
811 | 814 |
812 SendInputEventACK(WebInputEvent::GesturePinchUpdate, | 815 SendInputEventACK(WebInputEvent::GesturePinchUpdate, |
813 INPUT_EVENT_ACK_STATE_CONSUMED); | 816 INPUT_EVENT_ACK_STATE_CONSUMED); |
814 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, last_acked_event().type); | 817 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, last_acked_event().type); |
815 EXPECT_EQ(1.f, last_acked_event().data.pinchUpdate.scale); | 818 EXPECT_EQ(1.f, last_acked_event().data.pinchUpdate.scale); |
816 EXPECT_EQ(0U, GestureEventQueueSize()); | 819 EXPECT_EQ(0U, GestureEventQueueSize()); |
817 | 820 |
818 // Insert an event to force queueing of gestures. | 821 // Insert an event to force queueing of gestures. |
819 SimulateGestureEvent(WebInputEvent::GestureTapCancel, | 822 SimulateGestureEvent(WebInputEvent::GestureTapCancel, |
820 WebGestureEvent::Touchscreen); | 823 blink::WebGestureDeviceTouchscreen); |
821 EXPECT_EQ(1U, GetAndResetSentGestureEventCount()); | 824 EXPECT_EQ(1U, GetAndResetSentGestureEventCount()); |
822 EXPECT_EQ(1U, GestureEventQueueSize()); | 825 EXPECT_EQ(1U, GestureEventQueueSize()); |
823 | 826 |
824 // Ensure that coalescing yields an identity transform for any pinch/scroll | 827 // Ensure that coalescing yields an identity transform for any pinch/scroll |
825 // pair combined with its inverse. | 828 // pair combined with its inverse. |
826 SimulateGesturePinchUpdateEvent(2, 10, 10, 1); | 829 SimulateGesturePinchUpdateEvent(2, 10, 10, 1); |
827 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); | 830 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); |
828 EXPECT_EQ(2U, GestureEventQueueSize()); | 831 EXPECT_EQ(2U, GestureEventQueueSize()); |
829 | 832 |
830 SimulateGestureScrollUpdateEvent(20, 20, 1); | 833 SimulateGestureScrollUpdateEvent(20, 20, 1); |
(...skipping 22 matching lines...) Expand all Loading... |
853 SendInputEventACK(WebInputEvent::GesturePinchUpdate, | 856 SendInputEventACK(WebInputEvent::GesturePinchUpdate, |
854 INPUT_EVENT_ACK_STATE_CONSUMED); | 857 INPUT_EVENT_ACK_STATE_CONSUMED); |
855 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, last_acked_event().type); | 858 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, last_acked_event().type); |
856 EXPECT_EQ(1.f, last_acked_event().data.pinchUpdate.scale); | 859 EXPECT_EQ(1.f, last_acked_event().data.pinchUpdate.scale); |
857 } | 860 } |
858 | 861 |
859 // Tests a single event with an synchronous ack. | 862 // Tests a single event with an synchronous ack. |
860 TEST_F(GestureEventQueueTest, SimpleSyncAck) { | 863 TEST_F(GestureEventQueueTest, SimpleSyncAck) { |
861 set_synchronous_ack(INPUT_EVENT_ACK_STATE_CONSUMED); | 864 set_synchronous_ack(INPUT_EVENT_ACK_STATE_CONSUMED); |
862 SimulateGestureEvent(WebInputEvent::GestureTapDown, | 865 SimulateGestureEvent(WebInputEvent::GestureTapDown, |
863 WebGestureEvent::Touchscreen); | 866 blink::WebGestureDeviceTouchscreen); |
864 EXPECT_EQ(1U, GetAndResetSentGestureEventCount()); | 867 EXPECT_EQ(1U, GetAndResetSentGestureEventCount()); |
865 EXPECT_EQ(0U, GestureEventQueueSize()); | 868 EXPECT_EQ(0U, GestureEventQueueSize()); |
866 EXPECT_EQ(1U, GetAndResetAckedGestureEventCount()); | 869 EXPECT_EQ(1U, GetAndResetAckedGestureEventCount()); |
867 } | 870 } |
868 | 871 |
869 // Tests an event with an synchronous ack which enqueues an additional event. | 872 // Tests an event with an synchronous ack which enqueues an additional event. |
870 TEST_F(GestureEventQueueTest, SyncAckQueuesEvent) { | 873 TEST_F(GestureEventQueueTest, SyncAckQueuesEvent) { |
871 scoped_ptr<WebGestureEvent> queued_event; | 874 scoped_ptr<WebGestureEvent> queued_event; |
872 set_synchronous_ack(INPUT_EVENT_ACK_STATE_CONSUMED); | 875 set_synchronous_ack(INPUT_EVENT_ACK_STATE_CONSUMED); |
873 set_sync_followup_event(WebInputEvent::GestureShowPress, | 876 set_sync_followup_event(WebInputEvent::GestureShowPress, |
874 WebGestureEvent::Touchscreen); | 877 blink::WebGestureDeviceTouchscreen); |
875 // This event enqueues the show press event. | 878 // This event enqueues the show press event. |
876 SimulateGestureEvent(WebInputEvent::GestureTapDown, | 879 SimulateGestureEvent(WebInputEvent::GestureTapDown, |
877 WebGestureEvent::Touchscreen); | 880 blink::WebGestureDeviceTouchscreen); |
878 EXPECT_EQ(2U, GetAndResetSentGestureEventCount()); | 881 EXPECT_EQ(2U, GetAndResetSentGestureEventCount()); |
879 EXPECT_EQ(1U, GestureEventQueueSize()); | 882 EXPECT_EQ(1U, GestureEventQueueSize()); |
880 EXPECT_EQ(1U, GetAndResetAckedGestureEventCount()); | 883 EXPECT_EQ(1U, GetAndResetAckedGestureEventCount()); |
881 | 884 |
882 SendInputEventACK(WebInputEvent::GestureShowPress, | 885 SendInputEventACK(WebInputEvent::GestureShowPress, |
883 INPUT_EVENT_ACK_STATE_CONSUMED); | 886 INPUT_EVENT_ACK_STATE_CONSUMED); |
884 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); | 887 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); |
885 EXPECT_EQ(0U, GestureEventQueueSize()); | 888 EXPECT_EQ(0U, GestureEventQueueSize()); |
886 EXPECT_EQ(1U, GetAndResetAckedGestureEventCount()); | 889 EXPECT_EQ(1U, GetAndResetAckedGestureEventCount()); |
887 } | 890 } |
888 | 891 |
889 // Tests an event with an async ack followed by an event with a sync ack. | 892 // Tests an event with an async ack followed by an event with a sync ack. |
890 TEST_F(GestureEventQueueTest, AsyncThenSyncAck) { | 893 TEST_F(GestureEventQueueTest, AsyncThenSyncAck) { |
891 SimulateGestureEvent(WebInputEvent::GestureTapDown, | 894 SimulateGestureEvent(WebInputEvent::GestureTapDown, |
892 WebGestureEvent::Touchscreen); | 895 blink::WebGestureDeviceTouchscreen); |
893 | 896 |
894 EXPECT_EQ(1U, GetAndResetSentGestureEventCount()); | 897 EXPECT_EQ(1U, GetAndResetSentGestureEventCount()); |
895 EXPECT_EQ(1U, GestureEventQueueSize()); | 898 EXPECT_EQ(1U, GestureEventQueueSize()); |
896 EXPECT_EQ(0U, GetAndResetAckedGestureEventCount()); | 899 EXPECT_EQ(0U, GetAndResetAckedGestureEventCount()); |
897 | 900 |
898 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, | 901 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, |
899 WebGestureEvent::Touchscreen); | 902 blink::WebGestureDeviceTouchscreen); |
900 set_synchronous_ack(INPUT_EVENT_ACK_STATE_CONSUMED); | 903 set_synchronous_ack(INPUT_EVENT_ACK_STATE_CONSUMED); |
901 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); | 904 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); |
902 EXPECT_EQ(2U, GestureEventQueueSize()); | 905 EXPECT_EQ(2U, GestureEventQueueSize()); |
903 EXPECT_EQ(0U, GetAndResetAckedGestureEventCount()); | 906 EXPECT_EQ(0U, GetAndResetAckedGestureEventCount()); |
904 | 907 |
905 SendInputEventACK(WebInputEvent::GestureTapDown, | 908 SendInputEventACK(WebInputEvent::GestureTapDown, |
906 INPUT_EVENT_ACK_STATE_CONSUMED); | 909 INPUT_EVENT_ACK_STATE_CONSUMED); |
907 EXPECT_EQ(1U, GetAndResetSentGestureEventCount()); | 910 EXPECT_EQ(1U, GetAndResetSentGestureEventCount()); |
908 EXPECT_EQ(0U, GestureEventQueueSize()); | 911 EXPECT_EQ(0U, GestureEventQueueSize()); |
909 EXPECT_EQ(2U, GetAndResetAckedGestureEventCount()); | 912 EXPECT_EQ(2U, GetAndResetAckedGestureEventCount()); |
910 } | 913 } |
911 | 914 |
912 TEST_F(GestureEventQueueTest, CoalescesScrollAndPinchEventWithSyncAck) { | 915 TEST_F(GestureEventQueueTest, CoalescesScrollAndPinchEventWithSyncAck) { |
913 // Simulate a pinch sequence. | 916 // Simulate a pinch sequence. |
914 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, | 917 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, |
915 WebGestureEvent::Touchscreen); | 918 blink::WebGestureDeviceTouchscreen); |
916 EXPECT_EQ(1U, GetAndResetSentGestureEventCount()); | 919 EXPECT_EQ(1U, GetAndResetSentGestureEventCount()); |
917 SimulateGestureEvent(WebInputEvent::GesturePinchBegin, | 920 SimulateGestureEvent(WebInputEvent::GesturePinchBegin, |
918 WebGestureEvent::Touchscreen); | 921 blink::WebGestureDeviceTouchscreen); |
919 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); | 922 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); |
920 | 923 |
921 SimulateGestureScrollUpdateEvent(8, -4, 1); | 924 SimulateGestureScrollUpdateEvent(8, -4, 1); |
922 // Make sure that the queue contains what we think it should. | 925 // Make sure that the queue contains what we think it should. |
923 WebGestureEvent merged_event = GestureEventLastQueueEvent(); | 926 WebGestureEvent merged_event = GestureEventLastQueueEvent(); |
924 EXPECT_EQ(3U, GestureEventQueueSize()); | 927 EXPECT_EQ(3U, GestureEventQueueSize()); |
925 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); | 928 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); |
926 | 929 |
927 // Coalesced without changing event order. Note anchor at (60, 60). Anchoring | 930 // Coalesced without changing event order. Note anchor at (60, 60). Anchoring |
928 // from a point that is not the origin should still give us the right scroll. | 931 // from a point that is not the origin should still give us the right scroll. |
(...skipping 18 matching lines...) Expand all Loading... |
947 // Ack the final GesturePinchUpdate. | 950 // Ack the final GesturePinchUpdate. |
948 SendInputEventACK(WebInputEvent::GesturePinchUpdate, | 951 SendInputEventACK(WebInputEvent::GesturePinchUpdate, |
949 INPUT_EVENT_ACK_STATE_CONSUMED); | 952 INPUT_EVENT_ACK_STATE_CONSUMED); |
950 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, last_acked_event().type); | 953 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, last_acked_event().type); |
951 EXPECT_EQ(0U, GestureEventQueueSize()); | 954 EXPECT_EQ(0U, GestureEventQueueSize()); |
952 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); | 955 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); |
953 } | 956 } |
954 | 957 |
955 #if GTEST_HAS_PARAM_TEST | 958 #if GTEST_HAS_PARAM_TEST |
956 TEST_P(GestureEventQueueWithSourceTest, GestureFlingCancelsFiltered) { | 959 TEST_P(GestureEventQueueWithSourceTest, GestureFlingCancelsFiltered) { |
957 WebGestureEvent::SourceDevice source_device = GetParam(); | 960 WebGestureDevice source_device = GetParam(); |
958 | 961 |
959 // GFC without previous GFS is dropped. | 962 // GFC without previous GFS is dropped. |
960 SimulateGestureEvent(WebInputEvent::GestureFlingCancel, source_device); | 963 SimulateGestureEvent(WebInputEvent::GestureFlingCancel, source_device); |
961 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); | 964 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); |
962 EXPECT_EQ(0U, GestureEventQueueSize()); | 965 EXPECT_EQ(0U, GestureEventQueueSize()); |
963 | 966 |
964 // GFC after previous GFS is dispatched and acked. | 967 // GFC after previous GFS is dispatched and acked. |
965 SimulateGestureFlingStartEvent(0, -10, source_device); | 968 SimulateGestureFlingStartEvent(0, -10, source_device); |
966 EXPECT_TRUE(FlingInProgress()); | 969 EXPECT_TRUE(FlingInProgress()); |
967 SendInputEventACK(WebInputEvent::GestureFlingStart, | 970 SendInputEventACK(WebInputEvent::GestureFlingStart, |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1036 // Adding another GFC with a GFC already there is dropped. | 1039 // Adding another GFC with a GFC already there is dropped. |
1037 SimulateGestureEvent(WebInputEvent::GestureFlingCancel, source_device); | 1040 SimulateGestureEvent(WebInputEvent::GestureFlingCancel, source_device); |
1038 merged_event = GestureEventLastQueueEvent(); | 1041 merged_event = GestureEventLastQueueEvent(); |
1039 EXPECT_EQ(WebInputEvent::GestureFlingCancel, merged_event.type); | 1042 EXPECT_EQ(WebInputEvent::GestureFlingCancel, merged_event.type); |
1040 EXPECT_FALSE(FlingInProgress()); | 1043 EXPECT_FALSE(FlingInProgress()); |
1041 EXPECT_EQ(5U, GestureEventQueueSize()); | 1044 EXPECT_EQ(5U, GestureEventQueueSize()); |
1042 } | 1045 } |
1043 | 1046 |
1044 INSTANTIATE_TEST_CASE_P(AllSources, | 1047 INSTANTIATE_TEST_CASE_P(AllSources, |
1045 GestureEventQueueWithSourceTest, | 1048 GestureEventQueueWithSourceTest, |
1046 testing::Values(WebGestureEvent::Touchscreen, | 1049 testing::Values(blink::WebGestureDeviceTouchscreen, |
1047 WebGestureEvent::Touchpad)); | 1050 blink::WebGestureDeviceTouchpad)); |
1048 #endif // GTEST_HAS_PARAM_TEST | 1051 #endif // GTEST_HAS_PARAM_TEST |
1049 | 1052 |
1050 // Test that a GestureScrollEnd | GestureFlingStart are deferred during the | 1053 // Test that a GestureScrollEnd | GestureFlingStart are deferred during the |
1051 // debounce interval, that Scrolls are not and that the deferred events are | 1054 // debounce interval, that Scrolls are not and that the deferred events are |
1052 // sent after that timer fires. | 1055 // sent after that timer fires. |
1053 TEST_F(GestureEventQueueTest, DebounceDefersFollowingGestureEvents) { | 1056 TEST_F(GestureEventQueueTest, DebounceDefersFollowingGestureEvents) { |
1054 SetUpForDebounce(3); | 1057 SetUpForDebounce(3); |
1055 | 1058 |
1056 SimulateGestureEvent(WebInputEvent::GestureScrollUpdate, | 1059 SimulateGestureEvent(WebInputEvent::GestureScrollUpdate, |
1057 WebGestureEvent::Touchscreen); | 1060 blink::WebGestureDeviceTouchscreen); |
1058 EXPECT_EQ(1U, GetAndResetSentGestureEventCount()); | 1061 EXPECT_EQ(1U, GetAndResetSentGestureEventCount()); |
1059 EXPECT_EQ(1U, GestureEventQueueSize()); | 1062 EXPECT_EQ(1U, GestureEventQueueSize()); |
1060 EXPECT_EQ(0U, GestureEventDebouncingQueueSize()); | 1063 EXPECT_EQ(0U, GestureEventDebouncingQueueSize()); |
1061 EXPECT_TRUE(ScrollingInProgress()); | 1064 EXPECT_TRUE(ScrollingInProgress()); |
1062 | 1065 |
1063 SimulateGestureEvent(WebInputEvent::GestureScrollUpdate, | 1066 SimulateGestureEvent(WebInputEvent::GestureScrollUpdate, |
1064 WebGestureEvent::Touchscreen); | 1067 blink::WebGestureDeviceTouchscreen); |
1065 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); | 1068 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); |
1066 EXPECT_EQ(2U, GestureEventQueueSize()); | 1069 EXPECT_EQ(2U, GestureEventQueueSize()); |
1067 EXPECT_EQ(0U, GestureEventDebouncingQueueSize()); | 1070 EXPECT_EQ(0U, GestureEventDebouncingQueueSize()); |
1068 EXPECT_TRUE(ScrollingInProgress()); | 1071 EXPECT_TRUE(ScrollingInProgress()); |
1069 | 1072 |
1070 SimulateGestureEvent(WebInputEvent::GestureScrollEnd, | 1073 SimulateGestureEvent(WebInputEvent::GestureScrollEnd, |
1071 WebGestureEvent::Touchscreen); | 1074 blink::WebGestureDeviceTouchscreen); |
1072 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); | 1075 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); |
1073 EXPECT_EQ(2U, GestureEventQueueSize()); | 1076 EXPECT_EQ(2U, GestureEventQueueSize()); |
1074 EXPECT_EQ(1U, GestureEventDebouncingQueueSize()); | 1077 EXPECT_EQ(1U, GestureEventDebouncingQueueSize()); |
1075 | 1078 |
1076 SimulateGestureFlingStartEvent(0, 10, WebGestureEvent::Touchscreen); | 1079 SimulateGestureFlingStartEvent(0, 10, blink::WebGestureDeviceTouchscreen); |
1077 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); | 1080 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); |
1078 EXPECT_EQ(2U, GestureEventQueueSize()); | 1081 EXPECT_EQ(2U, GestureEventQueueSize()); |
1079 EXPECT_EQ(2U, GestureEventDebouncingQueueSize()); | 1082 EXPECT_EQ(2U, GestureEventDebouncingQueueSize()); |
1080 | 1083 |
1081 SimulateGestureEvent(WebInputEvent::GestureTapDown, | 1084 SimulateGestureEvent(WebInputEvent::GestureTapDown, |
1082 WebGestureEvent::Touchscreen); | 1085 blink::WebGestureDeviceTouchscreen); |
1083 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); | 1086 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); |
1084 EXPECT_EQ(2U, GestureEventQueueSize()); | 1087 EXPECT_EQ(2U, GestureEventQueueSize()); |
1085 EXPECT_EQ(3U, GestureEventDebouncingQueueSize()); | 1088 EXPECT_EQ(3U, GestureEventDebouncingQueueSize()); |
1086 | 1089 |
1087 base::MessageLoop::current()->PostDelayedTask( | 1090 base::MessageLoop::current()->PostDelayedTask( |
1088 FROM_HERE, | 1091 FROM_HERE, |
1089 base::MessageLoop::QuitClosure(), | 1092 base::MessageLoop::QuitClosure(), |
1090 TimeDelta::FromMilliseconds(5)); | 1093 TimeDelta::FromMilliseconds(5)); |
1091 base::MessageLoop::current()->Run(); | 1094 base::MessageLoop::current()->Run(); |
1092 | 1095 |
(...skipping 19 matching lines...) Expand all Loading... |
1112 | 1115 |
1113 // Test that non-scroll events are deferred while scrolling during the debounce | 1116 // Test that non-scroll events are deferred while scrolling during the debounce |
1114 // interval and are discarded if a GestureScrollUpdate event arrives before the | 1117 // interval and are discarded if a GestureScrollUpdate event arrives before the |
1115 // interval end. | 1118 // interval end. |
1116 TEST_F(GestureEventQueueTest, DebounceDropsDeferredEvents) { | 1119 TEST_F(GestureEventQueueTest, DebounceDropsDeferredEvents) { |
1117 SetUpForDebounce(3); | 1120 SetUpForDebounce(3); |
1118 | 1121 |
1119 EXPECT_FALSE(ScrollingInProgress()); | 1122 EXPECT_FALSE(ScrollingInProgress()); |
1120 | 1123 |
1121 SimulateGestureEvent(WebInputEvent::GestureScrollUpdate, | 1124 SimulateGestureEvent(WebInputEvent::GestureScrollUpdate, |
1122 WebGestureEvent::Touchscreen); | 1125 blink::WebGestureDeviceTouchscreen); |
1123 EXPECT_EQ(1U, GetAndResetSentGestureEventCount()); | 1126 EXPECT_EQ(1U, GetAndResetSentGestureEventCount()); |
1124 EXPECT_EQ(1U, GestureEventQueueSize()); | 1127 EXPECT_EQ(1U, GestureEventQueueSize()); |
1125 EXPECT_EQ(0U, GestureEventDebouncingQueueSize()); | 1128 EXPECT_EQ(0U, GestureEventDebouncingQueueSize()); |
1126 EXPECT_TRUE(ScrollingInProgress()); | 1129 EXPECT_TRUE(ScrollingInProgress()); |
1127 | 1130 |
1128 // This event should get discarded. | 1131 // This event should get discarded. |
1129 SimulateGestureEvent(WebInputEvent::GestureScrollEnd, | 1132 SimulateGestureEvent(WebInputEvent::GestureScrollEnd, |
1130 WebGestureEvent::Touchscreen); | 1133 blink::WebGestureDeviceTouchscreen); |
1131 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); | 1134 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); |
1132 EXPECT_EQ(1U, GestureEventQueueSize()); | 1135 EXPECT_EQ(1U, GestureEventQueueSize()); |
1133 EXPECT_EQ(1U, GestureEventDebouncingQueueSize()); | 1136 EXPECT_EQ(1U, GestureEventDebouncingQueueSize()); |
1134 | 1137 |
1135 SimulateGestureEvent(WebInputEvent::GestureScrollUpdate, | 1138 SimulateGestureEvent(WebInputEvent::GestureScrollUpdate, |
1136 WebGestureEvent::Touchscreen); | 1139 blink::WebGestureDeviceTouchscreen); |
1137 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); | 1140 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); |
1138 EXPECT_EQ(2U, GestureEventQueueSize()); | 1141 EXPECT_EQ(2U, GestureEventQueueSize()); |
1139 EXPECT_EQ(0U, GestureEventDebouncingQueueSize()); | 1142 EXPECT_EQ(0U, GestureEventDebouncingQueueSize()); |
1140 EXPECT_TRUE(ScrollingInProgress()); | 1143 EXPECT_TRUE(ScrollingInProgress()); |
1141 | 1144 |
1142 // Verify that the coalescing queue contains the correct events. | 1145 // Verify that the coalescing queue contains the correct events. |
1143 WebInputEvent::Type expected[] = { | 1146 WebInputEvent::Type expected[] = { |
1144 WebInputEvent::GestureScrollUpdate, | 1147 WebInputEvent::GestureScrollUpdate, |
1145 WebInputEvent::GestureScrollUpdate}; | 1148 WebInputEvent::GestureScrollUpdate}; |
1146 | 1149 |
1147 for (unsigned i = 0; i < sizeof(expected) / sizeof(WebInputEvent::Type); | 1150 for (unsigned i = 0; i < sizeof(expected) / sizeof(WebInputEvent::Type); |
1148 i++) { | 1151 i++) { |
1149 WebGestureEvent merged_event = GestureEventQueueEventAt(i); | 1152 WebGestureEvent merged_event = GestureEventQueueEventAt(i); |
1150 EXPECT_EQ(expected[i], merged_event.type); | 1153 EXPECT_EQ(expected[i], merged_event.type); |
1151 } | 1154 } |
1152 } | 1155 } |
1153 | 1156 |
1154 } // namespace content | 1157 } // namespace content |
OLD | NEW |