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