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

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

Issue 2573073003: Collapse the API surface on WebInputEvent via accessor functions. (Closed)
Patch Set: Fix nits Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 "content/browser/renderer_host/input/gesture_event_queue.h" 5 #include "content/browser/renderer_host/input/gesture_event_queue.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <memory> 9 #include <memory>
10 #include <utility> 10 #include <utility>
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
51 queue_.reset(); 51 queue_.reset();
52 } 52 }
53 53
54 // GestureEventQueueClient 54 // GestureEventQueueClient
55 void SendGestureEventImmediately( 55 void SendGestureEventImmediately(
56 const GestureEventWithLatencyInfo& event) override { 56 const GestureEventWithLatencyInfo& event) override {
57 ++sent_gesture_event_count_; 57 ++sent_gesture_event_count_;
58 if (sync_ack_result_) { 58 if (sync_ack_result_) {
59 std::unique_ptr<InputEventAckState> ack_result = 59 std::unique_ptr<InputEventAckState> ack_result =
60 std::move(sync_ack_result_); 60 std::move(sync_ack_result_);
61 SendInputEventACK(event.event.type, *ack_result); 61 SendInputEventACK(event.event.type(), *ack_result);
62 } 62 }
63 } 63 }
64 64
65 void OnGestureEventAck(const GestureEventWithLatencyInfo& event, 65 void OnGestureEventAck(const GestureEventWithLatencyInfo& event,
66 InputEventAckState ack_result) override { 66 InputEventAckState ack_result) override {
67 ++acked_gesture_event_count_; 67 ++acked_gesture_event_count_;
68 last_acked_event_ = event.event; 68 last_acked_event_ = event.event;
69 if (sync_followup_event_) { 69 if (sync_followup_event_) {
70 auto sync_followup_event = std::move(sync_followup_event_); 70 auto sync_followup_event = std::move(sync_followup_event_);
71 SimulateGestureEvent(*sync_followup_event); 71 SimulateGestureEvent(*sync_followup_event);
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
214 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, 214 SimulateGestureEvent(WebInputEvent::GestureScrollBegin,
215 blink::WebGestureDeviceTouchscreen); 215 blink::WebGestureDeviceTouchscreen);
216 EXPECT_EQ(1U, GetAndResetSentGestureEventCount()); 216 EXPECT_EQ(1U, GetAndResetSentGestureEventCount());
217 217
218 // Enqueued. 218 // Enqueued.
219 SimulateGestureScrollUpdateEvent(8, -5, 0); 219 SimulateGestureScrollUpdateEvent(8, -5, 0);
220 220
221 // Make sure that the queue contains what we think it should. 221 // Make sure that the queue contains what we think it should.
222 WebGestureEvent merged_event = GestureEventLastQueueEvent(); 222 WebGestureEvent merged_event = GestureEventLastQueueEvent();
223 EXPECT_EQ(2U, GestureEventQueueSize()); 223 EXPECT_EQ(2U, GestureEventQueueSize());
224 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); 224 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type());
225 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice); 225 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice);
226 226
227 // Coalesced. 227 // Coalesced.
228 SimulateGestureScrollUpdateEvent(8, -6, 0); 228 SimulateGestureScrollUpdateEvent(8, -6, 0);
229 229
230 // Check that coalescing updated the correct values. 230 // Check that coalescing updated the correct values.
231 merged_event = GestureEventLastQueueEvent(); 231 merged_event = GestureEventLastQueueEvent();
232 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); 232 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type());
233 EXPECT_EQ(0, merged_event.modifiers); 233 EXPECT_EQ(0, merged_event.modifiers());
234 EXPECT_EQ(16, merged_event.data.scrollUpdate.deltaX); 234 EXPECT_EQ(16, merged_event.data.scrollUpdate.deltaX);
235 EXPECT_EQ(-11, merged_event.data.scrollUpdate.deltaY); 235 EXPECT_EQ(-11, merged_event.data.scrollUpdate.deltaY);
236 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice); 236 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice);
237 237
238 // Enqueued. 238 // Enqueued.
239 SimulateGestureScrollUpdateEvent(8, -7, 1); 239 SimulateGestureScrollUpdateEvent(8, -7, 1);
240 240
241 // Check that we didn't wrongly coalesce. 241 // Check that we didn't wrongly coalesce.
242 merged_event = GestureEventLastQueueEvent(); 242 merged_event = GestureEventLastQueueEvent();
243 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); 243 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type());
244 EXPECT_EQ(1, merged_event.modifiers); 244 EXPECT_EQ(1, merged_event.modifiers());
245 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice); 245 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice);
246 246
247 // Different. 247 // Different.
248 SimulateGestureEvent(WebInputEvent::GestureScrollEnd, 248 SimulateGestureEvent(WebInputEvent::GestureScrollEnd,
249 blink::WebGestureDeviceTouchscreen); 249 blink::WebGestureDeviceTouchscreen);
250 250
251 // Check that only the first event was sent. 251 // Check that only the first event was sent.
252 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); 252 EXPECT_EQ(0U, GetAndResetSentGestureEventCount());
253 253
254 // Check that the ACK sends the second message. 254 // Check that the ACK sends the second message.
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
336 // Sent. 336 // Sent.
337 SimulateGestureEvent(WebInputEvent::GesturePinchBegin, 337 SimulateGestureEvent(WebInputEvent::GesturePinchBegin,
338 blink::WebGestureDeviceTouchscreen); 338 blink::WebGestureDeviceTouchscreen);
339 339
340 // Enqueued. 340 // Enqueued.
341 SimulateGestureScrollUpdateEvent(8, -4, 1); 341 SimulateGestureScrollUpdateEvent(8, -4, 1);
342 342
343 // Make sure that the queue contains what we think it should. 343 // Make sure that the queue contains what we think it should.
344 WebGestureEvent merged_event = GestureEventLastQueueEvent(); 344 WebGestureEvent merged_event = GestureEventLastQueueEvent();
345 EXPECT_EQ(3U, GestureEventQueueSize()); 345 EXPECT_EQ(3U, GestureEventQueueSize());
346 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); 346 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type());
347 347
348 // Coalesced without changing event order. Note anchor at (60, 60). Anchoring 348 // 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. 349 // from a point that is not the origin should still give us the right scroll.
350 SimulateGesturePinchUpdateEvent(1.5, 60, 60, 1); 350 SimulateGesturePinchUpdateEvent(1.5, 60, 60, 1);
351 EXPECT_EQ(4U, GestureEventQueueSize()); 351 EXPECT_EQ(4U, GestureEventQueueSize());
352 merged_event = GestureEventLastQueueEvent(); 352 merged_event = GestureEventLastQueueEvent();
353 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, merged_event.type); 353 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, merged_event.type());
354 EXPECT_EQ(1.5, merged_event.data.pinchUpdate.scale); 354 EXPECT_EQ(1.5, merged_event.data.pinchUpdate.scale);
355 EXPECT_EQ(1, merged_event.modifiers); 355 EXPECT_EQ(1, merged_event.modifiers());
356 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice); 356 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice);
357 merged_event = GestureEventSecondFromLastQueueEvent(); 357 merged_event = GestureEventSecondFromLastQueueEvent();
358 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); 358 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type());
359 EXPECT_EQ(8, merged_event.data.scrollUpdate.deltaX); 359 EXPECT_EQ(8, merged_event.data.scrollUpdate.deltaX);
360 EXPECT_EQ(-4, merged_event.data.scrollUpdate.deltaY); 360 EXPECT_EQ(-4, merged_event.data.scrollUpdate.deltaY);
361 EXPECT_EQ(1, merged_event.modifiers); 361 EXPECT_EQ(1, merged_event.modifiers());
362 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice); 362 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice);
363 363
364 // Enqueued. 364 // Enqueued.
365 SimulateGestureScrollUpdateEvent(6, -3, 1); 365 SimulateGestureScrollUpdateEvent(6, -3, 1);
366 366
367 // Check whether coalesced correctly. 367 // Check whether coalesced correctly.
368 EXPECT_EQ(4U, GestureEventQueueSize()); 368 EXPECT_EQ(4U, GestureEventQueueSize());
369 merged_event = GestureEventLastQueueEvent(); 369 merged_event = GestureEventLastQueueEvent();
370 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, merged_event.type); 370 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, merged_event.type());
371 EXPECT_EQ(1.5, merged_event.data.pinchUpdate.scale); 371 EXPECT_EQ(1.5, merged_event.data.pinchUpdate.scale);
372 EXPECT_EQ(1, merged_event.modifiers); 372 EXPECT_EQ(1, merged_event.modifiers());
373 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice); 373 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice);
374 merged_event = GestureEventSecondFromLastQueueEvent(); 374 merged_event = GestureEventSecondFromLastQueueEvent();
375 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); 375 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type());
376 EXPECT_EQ(12, merged_event.data.scrollUpdate.deltaX); 376 EXPECT_EQ(12, merged_event.data.scrollUpdate.deltaX);
377 EXPECT_EQ(-6, merged_event.data.scrollUpdate.deltaY); 377 EXPECT_EQ(-6, merged_event.data.scrollUpdate.deltaY);
378 EXPECT_EQ(1, merged_event.modifiers); 378 EXPECT_EQ(1, merged_event.modifiers());
379 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice); 379 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice);
380 380
381 // Enqueued. 381 // Enqueued.
382 SimulateGesturePinchUpdateEvent(2, 60, 60, 1); 382 SimulateGesturePinchUpdateEvent(2, 60, 60, 1);
383 383
384 // Check whether coalesced correctly. 384 // Check whether coalesced correctly.
385 EXPECT_EQ(4U, GestureEventQueueSize()); 385 EXPECT_EQ(4U, GestureEventQueueSize());
386 merged_event = GestureEventLastQueueEvent(); 386 merged_event = GestureEventLastQueueEvent();
387 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, merged_event.type); 387 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, merged_event.type());
388 EXPECT_EQ(3, merged_event.data.pinchUpdate.scale); 388 EXPECT_EQ(3, merged_event.data.pinchUpdate.scale);
389 EXPECT_EQ(1, merged_event.modifiers); 389 EXPECT_EQ(1, merged_event.modifiers());
390 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice); 390 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice);
391 merged_event = GestureEventSecondFromLastQueueEvent(); 391 merged_event = GestureEventSecondFromLastQueueEvent();
392 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); 392 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type());
393 EXPECT_EQ(12, merged_event.data.scrollUpdate.deltaX); 393 EXPECT_EQ(12, merged_event.data.scrollUpdate.deltaX);
394 EXPECT_EQ(-6, merged_event.data.scrollUpdate.deltaY); 394 EXPECT_EQ(-6, merged_event.data.scrollUpdate.deltaY);
395 EXPECT_EQ(1, merged_event.modifiers); 395 EXPECT_EQ(1, merged_event.modifiers());
396 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice); 396 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice);
397 397
398 // Enqueued. 398 // Enqueued.
399 SimulateGesturePinchUpdateEvent(2, 60, 60, 1); 399 SimulateGesturePinchUpdateEvent(2, 60, 60, 1);
400 400
401 // Check whether coalesced correctly. 401 // Check whether coalesced correctly.
402 EXPECT_EQ(4U, GestureEventQueueSize()); 402 EXPECT_EQ(4U, GestureEventQueueSize());
403 merged_event = GestureEventLastQueueEvent(); 403 merged_event = GestureEventLastQueueEvent();
404 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, merged_event.type); 404 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, merged_event.type());
405 EXPECT_EQ(6, merged_event.data.pinchUpdate.scale); 405 EXPECT_EQ(6, merged_event.data.pinchUpdate.scale);
406 EXPECT_EQ(1, merged_event.modifiers); 406 EXPECT_EQ(1, merged_event.modifiers());
407 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice); 407 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice);
408 merged_event = GestureEventSecondFromLastQueueEvent(); 408 merged_event = GestureEventSecondFromLastQueueEvent();
409 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); 409 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type());
410 EXPECT_EQ(12, merged_event.data.scrollUpdate.deltaX); 410 EXPECT_EQ(12, merged_event.data.scrollUpdate.deltaX);
411 EXPECT_EQ(-6, merged_event.data.scrollUpdate.deltaY); 411 EXPECT_EQ(-6, merged_event.data.scrollUpdate.deltaY);
412 EXPECT_EQ(1, merged_event.modifiers); 412 EXPECT_EQ(1, merged_event.modifiers());
413 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice); 413 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice);
414 414
415 // Check that only the first event was sent. 415 // Check that only the first event was sent.
416 EXPECT_EQ(1U, GetAndResetSentGestureEventCount()); 416 EXPECT_EQ(1U, GetAndResetSentGestureEventCount());
417 417
418 // Check that the ACK sends the second message. 418 // Check that the ACK sends the second message.
419 SendInputEventACK(WebInputEvent::GestureScrollBegin, 419 SendInputEventACK(WebInputEvent::GestureScrollBegin,
420 INPUT_EVENT_ACK_STATE_CONSUMED); 420 INPUT_EVENT_ACK_STATE_CONSUMED);
421 RunUntilIdle(); 421 RunUntilIdle();
422 EXPECT_EQ(1U, GetAndResetSentGestureEventCount()); 422 EXPECT_EQ(1U, GetAndResetSentGestureEventCount());
423 423
424 // Enqueued. 424 // Enqueued.
425 SimulateGestureScrollUpdateEvent(6, -6, 1); 425 SimulateGestureScrollUpdateEvent(6, -6, 1);
426 426
427 // Check whether coalesced correctly. 427 // Check whether coalesced correctly.
428 EXPECT_EQ(3U, GestureEventQueueSize()); 428 EXPECT_EQ(3U, GestureEventQueueSize());
429 merged_event = GestureEventLastQueueEvent(); 429 merged_event = GestureEventLastQueueEvent();
430 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, merged_event.type); 430 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, merged_event.type());
431 EXPECT_EQ(6, merged_event.data.pinchUpdate.scale); 431 EXPECT_EQ(6, merged_event.data.pinchUpdate.scale);
432 EXPECT_EQ(1, merged_event.modifiers); 432 EXPECT_EQ(1, merged_event.modifiers());
433 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice); 433 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice);
434 merged_event = GestureEventSecondFromLastQueueEvent(); 434 merged_event = GestureEventSecondFromLastQueueEvent();
435 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); 435 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type());
436 EXPECT_EQ(13, merged_event.data.scrollUpdate.deltaX); 436 EXPECT_EQ(13, merged_event.data.scrollUpdate.deltaX);
437 EXPECT_EQ(-7, merged_event.data.scrollUpdate.deltaY); 437 EXPECT_EQ(-7, merged_event.data.scrollUpdate.deltaY);
438 EXPECT_EQ(1, merged_event.modifiers); 438 EXPECT_EQ(1, merged_event.modifiers());
439 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice); 439 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice);
440 440
441 // At this point ACKs shouldn't be getting ignored. 441 // At this point ACKs shouldn't be getting ignored.
442 EXPECT_FALSE(WillIgnoreNextACK()); 442 EXPECT_FALSE(WillIgnoreNextACK());
443 443
444 // Check that the ACK sends both scroll and pinch updates. 444 // Check that the ACK sends both scroll and pinch updates.
445 SendInputEventACK(WebInputEvent::GesturePinchBegin, 445 SendInputEventACK(WebInputEvent::GesturePinchBegin,
446 INPUT_EVENT_ACK_STATE_CONSUMED); 446 INPUT_EVENT_ACK_STATE_CONSUMED);
447 RunUntilIdle(); 447 RunUntilIdle();
448 EXPECT_EQ(2U, GetAndResetSentGestureEventCount()); 448 EXPECT_EQ(2U, GetAndResetSentGestureEventCount());
449 449
450 // The next ACK should be getting ignored. 450 // The next ACK should be getting ignored.
451 EXPECT_TRUE(WillIgnoreNextACK()); 451 EXPECT_TRUE(WillIgnoreNextACK());
452 452
453 // Enqueued. 453 // Enqueued.
454 SimulateGestureScrollUpdateEvent(1, -1, 1); 454 SimulateGestureScrollUpdateEvent(1, -1, 1);
455 455
456 // Check whether coalesced correctly. 456 // Check whether coalesced correctly.
457 EXPECT_EQ(3U, GestureEventQueueSize()); 457 EXPECT_EQ(3U, GestureEventQueueSize());
458 merged_event = GestureEventLastQueueEvent(); 458 merged_event = GestureEventLastQueueEvent();
459 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); 459 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type());
460 EXPECT_EQ(1, merged_event.data.scrollUpdate.deltaX); 460 EXPECT_EQ(1, merged_event.data.scrollUpdate.deltaX);
461 EXPECT_EQ(-1, merged_event.data.scrollUpdate.deltaY); 461 EXPECT_EQ(-1, merged_event.data.scrollUpdate.deltaY);
462 EXPECT_EQ(1, merged_event.modifiers); 462 EXPECT_EQ(1, merged_event.modifiers());
463 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice); 463 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice);
464 merged_event = GestureEventSecondFromLastQueueEvent(); 464 merged_event = GestureEventSecondFromLastQueueEvent();
465 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, merged_event.type); 465 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, merged_event.type());
466 EXPECT_EQ(6, merged_event.data.pinchUpdate.scale); 466 EXPECT_EQ(6, merged_event.data.pinchUpdate.scale);
467 EXPECT_EQ(1, merged_event.modifiers); 467 EXPECT_EQ(1, merged_event.modifiers());
468 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice); 468 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice);
469 469
470 // Enqueued. 470 // Enqueued.
471 SimulateGestureScrollUpdateEvent(2, -2, 1); 471 SimulateGestureScrollUpdateEvent(2, -2, 1);
472 472
473 // Coalescing scrolls should still work. 473 // Coalescing scrolls should still work.
474 EXPECT_EQ(3U, GestureEventQueueSize()); 474 EXPECT_EQ(3U, GestureEventQueueSize());
475 merged_event = GestureEventLastQueueEvent(); 475 merged_event = GestureEventLastQueueEvent();
476 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); 476 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type());
477 EXPECT_EQ(3, merged_event.data.scrollUpdate.deltaX); 477 EXPECT_EQ(3, merged_event.data.scrollUpdate.deltaX);
478 EXPECT_EQ(-3, merged_event.data.scrollUpdate.deltaY); 478 EXPECT_EQ(-3, merged_event.data.scrollUpdate.deltaY);
479 EXPECT_EQ(1, merged_event.modifiers); 479 EXPECT_EQ(1, merged_event.modifiers());
480 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice); 480 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice);
481 merged_event = GestureEventSecondFromLastQueueEvent(); 481 merged_event = GestureEventSecondFromLastQueueEvent();
482 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, merged_event.type); 482 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, merged_event.type());
483 EXPECT_EQ(6, merged_event.data.pinchUpdate.scale); 483 EXPECT_EQ(6, merged_event.data.pinchUpdate.scale);
484 EXPECT_EQ(1, merged_event.modifiers); 484 EXPECT_EQ(1, merged_event.modifiers());
485 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice); 485 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice);
486 486
487 // Enqueued. 487 // Enqueued.
488 SimulateGesturePinchUpdateEvent(0.5, 60, 60, 1); 488 SimulateGesturePinchUpdateEvent(0.5, 60, 60, 1);
489 489
490 // Check whether coalesced correctly. 490 // Check whether coalesced correctly.
491 EXPECT_EQ(4U, GestureEventQueueSize()); 491 EXPECT_EQ(4U, GestureEventQueueSize());
492 merged_event = GestureEventLastQueueEvent(); 492 merged_event = GestureEventLastQueueEvent();
493 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, merged_event.type); 493 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, merged_event.type());
494 EXPECT_EQ(0.5, merged_event.data.pinchUpdate.scale); 494 EXPECT_EQ(0.5, merged_event.data.pinchUpdate.scale);
495 EXPECT_EQ(1, merged_event.modifiers); 495 EXPECT_EQ(1, merged_event.modifiers());
496 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice); 496 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice);
497 merged_event = GestureEventSecondFromLastQueueEvent(); 497 merged_event = GestureEventSecondFromLastQueueEvent();
498 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); 498 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type());
499 EXPECT_EQ(3, merged_event.data.scrollUpdate.deltaX); 499 EXPECT_EQ(3, merged_event.data.scrollUpdate.deltaX);
500 EXPECT_EQ(-3, merged_event.data.scrollUpdate.deltaY); 500 EXPECT_EQ(-3, merged_event.data.scrollUpdate.deltaY);
501 EXPECT_EQ(1, merged_event.modifiers); 501 EXPECT_EQ(1, merged_event.modifiers());
502 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice); 502 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice);
503 503
504 // Check that the ACK gets ignored. 504 // Check that the ACK gets ignored.
505 SendInputEventACK(WebInputEvent::GestureScrollUpdate, 505 SendInputEventACK(WebInputEvent::GestureScrollUpdate,
506 INPUT_EVENT_ACK_STATE_CONSUMED); 506 INPUT_EVENT_ACK_STATE_CONSUMED);
507 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, last_acked_event().type); 507 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, last_acked_event().type());
508 RunUntilIdle(); 508 RunUntilIdle();
509 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); 509 EXPECT_EQ(0U, GetAndResetSentGestureEventCount());
510 // The flag should have been flipped back to false. 510 // The flag should have been flipped back to false.
511 EXPECT_FALSE(WillIgnoreNextACK()); 511 EXPECT_FALSE(WillIgnoreNextACK());
512 512
513 // Enqueued. 513 // Enqueued.
514 SimulateGestureScrollUpdateEvent(2, -2, 2); 514 SimulateGestureScrollUpdateEvent(2, -2, 2);
515 515
516 // Shouldn't coalesce with different modifiers. 516 // Shouldn't coalesce with different modifiers.
517 EXPECT_EQ(4U, GestureEventQueueSize()); 517 EXPECT_EQ(4U, GestureEventQueueSize());
518 merged_event = GestureEventLastQueueEvent(); 518 merged_event = GestureEventLastQueueEvent();
519 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); 519 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type());
520 EXPECT_EQ(2, merged_event.data.scrollUpdate.deltaX); 520 EXPECT_EQ(2, merged_event.data.scrollUpdate.deltaX);
521 EXPECT_EQ(-2, merged_event.data.scrollUpdate.deltaY); 521 EXPECT_EQ(-2, merged_event.data.scrollUpdate.deltaY);
522 EXPECT_EQ(2, merged_event.modifiers); 522 EXPECT_EQ(2, merged_event.modifiers());
523 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice); 523 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice);
524 merged_event = GestureEventSecondFromLastQueueEvent(); 524 merged_event = GestureEventSecondFromLastQueueEvent();
525 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, merged_event.type); 525 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, merged_event.type());
526 EXPECT_EQ(0.5, merged_event.data.pinchUpdate.scale); 526 EXPECT_EQ(0.5, merged_event.data.pinchUpdate.scale);
527 EXPECT_EQ(1, merged_event.modifiers); 527 EXPECT_EQ(1, merged_event.modifiers());
528 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice); 528 EXPECT_EQ(blink::WebGestureDeviceTouchscreen, merged_event.sourceDevice);
529 529
530 // Check that the ACK sends the next scroll pinch pair. 530 // Check that the ACK sends the next scroll pinch pair.
531 SendInputEventACK(WebInputEvent::GesturePinchUpdate, 531 SendInputEventACK(WebInputEvent::GesturePinchUpdate,
532 INPUT_EVENT_ACK_STATE_CONSUMED); 532 INPUT_EVENT_ACK_STATE_CONSUMED);
533 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, last_acked_event().type); 533 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, last_acked_event().type());
534 RunUntilIdle(); 534 RunUntilIdle();
535 EXPECT_EQ(2U, GetAndResetSentGestureEventCount()); 535 EXPECT_EQ(2U, GetAndResetSentGestureEventCount());
536 536
537 // Check that the ACK sends the second message. 537 // Check that the ACK sends the second message.
538 SendInputEventACK(WebInputEvent::GestureScrollUpdate, 538 SendInputEventACK(WebInputEvent::GestureScrollUpdate,
539 INPUT_EVENT_ACK_STATE_CONSUMED); 539 INPUT_EVENT_ACK_STATE_CONSUMED);
540 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, last_acked_event().type); 540 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, last_acked_event().type());
541 RunUntilIdle(); 541 RunUntilIdle();
542 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); 542 EXPECT_EQ(0U, GetAndResetSentGestureEventCount());
543 543
544 // Check that the ACK sends the second event. 544 // Check that the ACK sends the second event.
545 SendInputEventACK(WebInputEvent::GesturePinchUpdate, 545 SendInputEventACK(WebInputEvent::GesturePinchUpdate,
546 INPUT_EVENT_ACK_STATE_CONSUMED); 546 INPUT_EVENT_ACK_STATE_CONSUMED);
547 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, last_acked_event().type); 547 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, last_acked_event().type());
548 RunUntilIdle(); 548 RunUntilIdle();
549 EXPECT_EQ(1U, GetAndResetSentGestureEventCount()); 549 EXPECT_EQ(1U, GetAndResetSentGestureEventCount());
550 550
551 // Check that the queue is empty after ACK and no events get sent. 551 // Check that the queue is empty after ACK and no events get sent.
552 SendInputEventACK(WebInputEvent::GestureScrollUpdate, 552 SendInputEventACK(WebInputEvent::GestureScrollUpdate,
553 INPUT_EVENT_ACK_STATE_CONSUMED); 553 INPUT_EVENT_ACK_STATE_CONSUMED);
554 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, last_acked_event().type); 554 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, last_acked_event().type());
555 RunUntilIdle(); 555 RunUntilIdle();
556 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); 556 EXPECT_EQ(0U, GetAndResetSentGestureEventCount());
557 EXPECT_EQ(0U, GestureEventQueueSize()); 557 EXPECT_EQ(0U, GestureEventQueueSize());
558 } 558 }
559 559
560 TEST_F(GestureEventQueueTest, CoalescesMultiplePinchEventSequences) { 560 TEST_F(GestureEventQueueTest, CoalescesMultiplePinchEventSequences) {
561 // Simulate a pinch sequence. 561 // Simulate a pinch sequence.
562 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, 562 SimulateGestureEvent(WebInputEvent::GestureScrollBegin,
563 blink::WebGestureDeviceTouchscreen); 563 blink::WebGestureDeviceTouchscreen);
564 SimulateGestureEvent(WebInputEvent::GesturePinchBegin, 564 SimulateGestureEvent(WebInputEvent::GesturePinchBegin,
565 blink::WebGestureDeviceTouchscreen); 565 blink::WebGestureDeviceTouchscreen);
566 566
567 SimulateGestureScrollUpdateEvent(8, -4, 1); 567 SimulateGestureScrollUpdateEvent(8, -4, 1);
568 // Make sure that the queue contains what we think it should. 568 // Make sure that the queue contains what we think it should.
569 WebGestureEvent merged_event = GestureEventLastQueueEvent(); 569 WebGestureEvent merged_event = GestureEventLastQueueEvent();
570 size_t expected_events_in_queue = 3; 570 size_t expected_events_in_queue = 3;
571 EXPECT_EQ(expected_events_in_queue, GestureEventQueueSize()); 571 EXPECT_EQ(expected_events_in_queue, GestureEventQueueSize());
572 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); 572 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type());
573 573
574 // Coalesced without changing event order. Note anchor at (60, 60). Anchoring 574 // 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. 575 // from a point that is not the origin should still give us the right scroll.
576 SimulateGesturePinchUpdateEvent(1.5, 60, 60, 1); 576 SimulateGesturePinchUpdateEvent(1.5, 60, 60, 1);
577 EXPECT_EQ(++expected_events_in_queue, GestureEventQueueSize()); 577 EXPECT_EQ(++expected_events_in_queue, GestureEventQueueSize());
578 merged_event = GestureEventLastQueueEvent(); 578 merged_event = GestureEventLastQueueEvent();
579 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, merged_event.type); 579 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, merged_event.type());
580 EXPECT_EQ(1.5, merged_event.data.pinchUpdate.scale); 580 EXPECT_EQ(1.5, merged_event.data.pinchUpdate.scale);
581 EXPECT_EQ(1, merged_event.modifiers); 581 EXPECT_EQ(1, merged_event.modifiers());
582 merged_event = GestureEventSecondFromLastQueueEvent(); 582 merged_event = GestureEventSecondFromLastQueueEvent();
583 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); 583 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type());
584 EXPECT_EQ(8, merged_event.data.scrollUpdate.deltaX); 584 EXPECT_EQ(8, merged_event.data.scrollUpdate.deltaX);
585 EXPECT_EQ(-4, merged_event.data.scrollUpdate.deltaY); 585 EXPECT_EQ(-4, merged_event.data.scrollUpdate.deltaY);
586 EXPECT_EQ(1, merged_event.modifiers); 586 EXPECT_EQ(1, merged_event.modifiers());
587 587
588 // Enqueued. 588 // Enqueued.
589 SimulateGestureScrollUpdateEvent(6, -3, 1); 589 SimulateGestureScrollUpdateEvent(6, -3, 1);
590 590
591 // Check whether coalesced correctly. 591 // Check whether coalesced correctly.
592 EXPECT_EQ(expected_events_in_queue, GestureEventQueueSize()); 592 EXPECT_EQ(expected_events_in_queue, GestureEventQueueSize());
593 merged_event = GestureEventLastQueueEvent(); 593 merged_event = GestureEventLastQueueEvent();
594 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, merged_event.type); 594 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, merged_event.type());
595 EXPECT_EQ(1.5, merged_event.data.pinchUpdate.scale); 595 EXPECT_EQ(1.5, merged_event.data.pinchUpdate.scale);
596 EXPECT_EQ(1, merged_event.modifiers); 596 EXPECT_EQ(1, merged_event.modifiers());
597 merged_event = GestureEventSecondFromLastQueueEvent(); 597 merged_event = GestureEventSecondFromLastQueueEvent();
598 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); 598 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type());
599 EXPECT_EQ(12, merged_event.data.scrollUpdate.deltaX); 599 EXPECT_EQ(12, merged_event.data.scrollUpdate.deltaX);
600 EXPECT_EQ(-6, merged_event.data.scrollUpdate.deltaY); 600 EXPECT_EQ(-6, merged_event.data.scrollUpdate.deltaY);
601 EXPECT_EQ(1, merged_event.modifiers); 601 EXPECT_EQ(1, merged_event.modifiers());
602 602
603 // Now start another sequence before the previous sequence has been ack'ed. 603 // Now start another sequence before the previous sequence has been ack'ed.
604 SimulateGestureEvent(WebInputEvent::GesturePinchEnd, 604 SimulateGestureEvent(WebInputEvent::GesturePinchEnd,
605 blink::WebGestureDeviceTouchscreen); 605 blink::WebGestureDeviceTouchscreen);
606 SimulateGestureEvent(WebInputEvent::GestureScrollEnd, 606 SimulateGestureEvent(WebInputEvent::GestureScrollEnd,
607 blink::WebGestureDeviceTouchscreen); 607 blink::WebGestureDeviceTouchscreen);
608 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, 608 SimulateGestureEvent(WebInputEvent::GestureScrollBegin,
609 blink::WebGestureDeviceTouchscreen); 609 blink::WebGestureDeviceTouchscreen);
610 SimulateGestureEvent(WebInputEvent::GesturePinchBegin, 610 SimulateGestureEvent(WebInputEvent::GesturePinchBegin,
611 blink::WebGestureDeviceTouchscreen); 611 blink::WebGestureDeviceTouchscreen);
612 612
613 SimulateGestureScrollUpdateEvent(8, -4, 1); 613 SimulateGestureScrollUpdateEvent(8, -4, 1);
614 // Make sure that the queue contains what we think it should. 614 // Make sure that the queue contains what we think it should.
615 expected_events_in_queue += 5; 615 expected_events_in_queue += 5;
616 merged_event = GestureEventLastQueueEvent(); 616 merged_event = GestureEventLastQueueEvent();
617 EXPECT_EQ(expected_events_in_queue, GestureEventQueueSize()); 617 EXPECT_EQ(expected_events_in_queue, GestureEventQueueSize());
618 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); 618 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type());
619 619
620 // Coalesced without changing event order. Note anchor at (60, 60). Anchoring 620 // 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. 621 // from a point that is not the origin should still give us the right scroll.
622 SimulateGesturePinchUpdateEvent(1.5, 30, 30, 1); 622 SimulateGesturePinchUpdateEvent(1.5, 30, 30, 1);
623 EXPECT_EQ(++expected_events_in_queue, GestureEventQueueSize()); 623 EXPECT_EQ(++expected_events_in_queue, GestureEventQueueSize());
624 merged_event = GestureEventLastQueueEvent(); 624 merged_event = GestureEventLastQueueEvent();
625 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, merged_event.type); 625 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, merged_event.type());
626 EXPECT_EQ(1.5, merged_event.data.pinchUpdate.scale); 626 EXPECT_EQ(1.5, merged_event.data.pinchUpdate.scale);
627 EXPECT_EQ(1, merged_event.modifiers); 627 EXPECT_EQ(1, merged_event.modifiers());
628 merged_event = GestureEventSecondFromLastQueueEvent(); 628 merged_event = GestureEventSecondFromLastQueueEvent();
629 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); 629 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type());
630 EXPECT_EQ(8, merged_event.data.scrollUpdate.deltaX); 630 EXPECT_EQ(8, merged_event.data.scrollUpdate.deltaX);
631 EXPECT_EQ(-4, merged_event.data.scrollUpdate.deltaY); 631 EXPECT_EQ(-4, merged_event.data.scrollUpdate.deltaY);
632 EXPECT_EQ(1, merged_event.modifiers); 632 EXPECT_EQ(1, merged_event.modifiers());
633 633
634 // Enqueued. 634 // Enqueued.
635 SimulateGestureScrollUpdateEvent(6, -3, 1); 635 SimulateGestureScrollUpdateEvent(6, -3, 1);
636 636
637 // Check whether coalesced correctly. 637 // Check whether coalesced correctly.
638 EXPECT_EQ(expected_events_in_queue, GestureEventQueueSize()); 638 EXPECT_EQ(expected_events_in_queue, GestureEventQueueSize());
639 merged_event = GestureEventLastQueueEvent(); 639 merged_event = GestureEventLastQueueEvent();
640 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, merged_event.type); 640 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, merged_event.type());
641 EXPECT_EQ(1.5, merged_event.data.pinchUpdate.scale); 641 EXPECT_EQ(1.5, merged_event.data.pinchUpdate.scale);
642 EXPECT_EQ(1, merged_event.modifiers); 642 EXPECT_EQ(1, merged_event.modifiers());
643 merged_event = GestureEventSecondFromLastQueueEvent(); 643 merged_event = GestureEventSecondFromLastQueueEvent();
644 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); 644 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type());
645 EXPECT_EQ(12, merged_event.data.scrollUpdate.deltaX); 645 EXPECT_EQ(12, merged_event.data.scrollUpdate.deltaX);
646 EXPECT_EQ(-6, merged_event.data.scrollUpdate.deltaY); 646 EXPECT_EQ(-6, merged_event.data.scrollUpdate.deltaY);
647 EXPECT_EQ(1, merged_event.modifiers); 647 EXPECT_EQ(1, merged_event.modifiers());
648 } 648 }
649 649
650 TEST_F(GestureEventQueueTest, CoalescesPinchSequencesWithEarlyAck) { 650 TEST_F(GestureEventQueueTest, CoalescesPinchSequencesWithEarlyAck) {
651 SimulateGestureEvent(WebInputEvent::GestureScrollBegin, 651 SimulateGestureEvent(WebInputEvent::GestureScrollBegin,
652 blink::WebGestureDeviceTouchscreen); 652 blink::WebGestureDeviceTouchscreen);
653 SendInputEventACK(WebInputEvent::GestureScrollBegin, 653 SendInputEventACK(WebInputEvent::GestureScrollBegin,
654 INPUT_EVENT_ACK_STATE_CONSUMED); 654 INPUT_EVENT_ACK_STATE_CONSUMED);
655 655
656 SimulateGestureEvent(WebInputEvent::GesturePinchBegin, 656 SimulateGestureEvent(WebInputEvent::GesturePinchBegin,
657 blink::WebGestureDeviceTouchscreen); 657 blink::WebGestureDeviceTouchscreen);
658 SendInputEventACK(WebInputEvent::GesturePinchBegin, 658 SendInputEventACK(WebInputEvent::GesturePinchBegin,
659 INPUT_EVENT_ACK_STATE_CONSUMED); 659 INPUT_EVENT_ACK_STATE_CONSUMED);
660 // ScrollBegin and PinchBegin have been sent 660 // ScrollBegin and PinchBegin have been sent
661 EXPECT_EQ(2U, GetAndResetSentGestureEventCount()); 661 EXPECT_EQ(2U, GetAndResetSentGestureEventCount());
662 EXPECT_EQ(0U, GestureEventQueueSize()); 662 EXPECT_EQ(0U, GestureEventQueueSize());
663 663
664 SimulateGestureScrollUpdateEvent(5, 5, 1); 664 SimulateGestureScrollUpdateEvent(5, 5, 1);
665 EXPECT_EQ(1U, GetAndResetSentGestureEventCount()); 665 EXPECT_EQ(1U, GetAndResetSentGestureEventCount());
666 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, 666 EXPECT_EQ(WebInputEvent::GestureScrollUpdate,
667 GestureEventLastQueueEvent().type); 667 GestureEventLastQueueEvent().type());
668 EXPECT_EQ(1U, GestureEventQueueSize()); 668 EXPECT_EQ(1U, GestureEventQueueSize());
669 669
670 SimulateGesturePinchUpdateEvent(2, 60, 60, 1); 670 SimulateGesturePinchUpdateEvent(2, 60, 60, 1);
671 EXPECT_EQ(1U, GetAndResetSentGestureEventCount()); 671 EXPECT_EQ(1U, GetAndResetSentGestureEventCount());
672 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, 672 EXPECT_EQ(WebInputEvent::GesturePinchUpdate,
673 GestureEventLastQueueEvent().type); 673 GestureEventLastQueueEvent().type());
674 EXPECT_EQ(2U, GestureEventQueueSize()); 674 EXPECT_EQ(2U, GestureEventQueueSize());
675 675
676 SimulateGesturePinchUpdateEvent(3, 60, 60, 1); 676 SimulateGesturePinchUpdateEvent(3, 60, 60, 1);
677 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); 677 EXPECT_EQ(0U, GetAndResetSentGestureEventCount());
678 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, 678 EXPECT_EQ(WebInputEvent::GesturePinchUpdate,
679 GestureEventLastQueueEvent().type); 679 GestureEventLastQueueEvent().type());
680 EXPECT_EQ(3U, GestureEventQueueSize()); 680 EXPECT_EQ(3U, GestureEventQueueSize());
681 681
682 SimulateGestureScrollUpdateEvent(5, 5, 1); 682 SimulateGestureScrollUpdateEvent(5, 5, 1);
683 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); 683 EXPECT_EQ(0U, GetAndResetSentGestureEventCount());
684 // The coalesced pinch/scroll pair will have been re-arranged, with the 684 // The coalesced pinch/scroll pair will have been re-arranged, with the
685 // pinch following the scroll. 685 // pinch following the scroll.
686 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, 686 EXPECT_EQ(WebInputEvent::GesturePinchUpdate,
687 GestureEventLastQueueEvent().type); 687 GestureEventLastQueueEvent().type());
688 EXPECT_EQ(4U, GestureEventQueueSize()); 688 EXPECT_EQ(4U, GestureEventQueueSize());
689 689
690 SimulateGesturePinchUpdateEvent(4, 60, 60, 1); 690 SimulateGesturePinchUpdateEvent(4, 60, 60, 1);
691 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); 691 EXPECT_EQ(0U, GetAndResetSentGestureEventCount());
692 EXPECT_EQ(4U, GestureEventQueueSize()); 692 EXPECT_EQ(4U, GestureEventQueueSize());
693 693
694 SendInputEventACK(WebInputEvent::GestureScrollUpdate, 694 SendInputEventACK(WebInputEvent::GestureScrollUpdate,
695 INPUT_EVENT_ACK_STATE_CONSUMED); 695 INPUT_EVENT_ACK_STATE_CONSUMED);
696 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); 696 EXPECT_EQ(0U, GetAndResetSentGestureEventCount());
697 EXPECT_EQ(3U, GestureEventQueueSize()); 697 EXPECT_EQ(3U, GestureEventQueueSize());
698 698
699 SendInputEventACK(WebInputEvent::GesturePinchUpdate, 699 SendInputEventACK(WebInputEvent::GesturePinchUpdate,
700 INPUT_EVENT_ACK_STATE_CONSUMED); 700 INPUT_EVENT_ACK_STATE_CONSUMED);
701 EXPECT_EQ(2U, GetAndResetSentGestureEventCount()); 701 EXPECT_EQ(2U, GetAndResetSentGestureEventCount());
702 EXPECT_EQ(2U, GestureEventQueueSize()); 702 EXPECT_EQ(2U, GestureEventQueueSize());
703 EXPECT_EQ(2.f, last_acked_event().data.pinchUpdate.scale); 703 EXPECT_EQ(2.f, last_acked_event().data.pinchUpdate.scale);
704 704
705 SendInputEventACK(WebInputEvent::GestureScrollUpdate, 705 SendInputEventACK(WebInputEvent::GestureScrollUpdate,
706 INPUT_EVENT_ACK_STATE_CONSUMED); 706 INPUT_EVENT_ACK_STATE_CONSUMED);
707 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, last_acked_event().type); 707 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, last_acked_event().type());
708 708
709 SendInputEventACK(WebInputEvent::GesturePinchUpdate, 709 SendInputEventACK(WebInputEvent::GesturePinchUpdate,
710 INPUT_EVENT_ACK_STATE_CONSUMED); 710 INPUT_EVENT_ACK_STATE_CONSUMED);
711 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, last_acked_event().type); 711 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, last_acked_event().type());
712 EXPECT_EQ(3.f * 4.f, last_acked_event().data.pinchUpdate.scale); 712 EXPECT_EQ(3.f * 4.f, last_acked_event().data.pinchUpdate.scale);
713 713
714 EXPECT_EQ(0U, GestureEventQueueSize()); 714 EXPECT_EQ(0U, GestureEventQueueSize());
715 } 715 }
716 716
717 TEST_F(GestureEventQueueTest, 717 TEST_F(GestureEventQueueTest,
718 DoesNotCoalescePinchGestureEventsWithDifferentModifiers) { 718 DoesNotCoalescePinchGestureEventsWithDifferentModifiers) {
719 // Insert an event to force queueing of gestures. 719 // Insert an event to force queueing of gestures.
720 SimulateGestureEvent(WebInputEvent::GestureTapCancel, 720 SimulateGestureEvent(WebInputEvent::GestureTapCancel,
721 blink::WebGestureDeviceTouchscreen); 721 blink::WebGestureDeviceTouchscreen);
(...skipping 25 matching lines...) Expand all
747 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); 747 EXPECT_EQ(0U, GetAndResetSentGestureEventCount());
748 EXPECT_EQ(5U, GestureEventQueueSize()); 748 EXPECT_EQ(5U, GestureEventQueueSize());
749 749
750 SendInputEventACK(WebInputEvent::GestureTapCancel, 750 SendInputEventACK(WebInputEvent::GestureTapCancel,
751 INPUT_EVENT_ACK_STATE_CONSUMED); 751 INPUT_EVENT_ACK_STATE_CONSUMED);
752 EXPECT_EQ(2U, GetAndResetSentGestureEventCount()); 752 EXPECT_EQ(2U, GetAndResetSentGestureEventCount());
753 EXPECT_EQ(4U, GestureEventQueueSize()); 753 EXPECT_EQ(4U, GestureEventQueueSize());
754 754
755 SendInputEventACK(WebInputEvent::GestureScrollUpdate, 755 SendInputEventACK(WebInputEvent::GestureScrollUpdate,
756 INPUT_EVENT_ACK_STATE_CONSUMED); 756 INPUT_EVENT_ACK_STATE_CONSUMED);
757 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, last_acked_event().type); 757 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, last_acked_event().type());
758 EXPECT_EQ(3U, GestureEventQueueSize()); 758 EXPECT_EQ(3U, GestureEventQueueSize());
759 759
760 SendInputEventACK(WebInputEvent::GesturePinchUpdate, 760 SendInputEventACK(WebInputEvent::GesturePinchUpdate,
761 INPUT_EVENT_ACK_STATE_CONSUMED); 761 INPUT_EVENT_ACK_STATE_CONSUMED);
762 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, last_acked_event().type); 762 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, last_acked_event().type());
763 EXPECT_EQ(3.f * 4.f, last_acked_event().data.pinchUpdate.scale); 763 EXPECT_EQ(3.f * 4.f, last_acked_event().data.pinchUpdate.scale);
764 EXPECT_EQ(2U, GestureEventQueueSize()); 764 EXPECT_EQ(2U, GestureEventQueueSize());
765 EXPECT_EQ(1U, GetAndResetSentGestureEventCount()); 765 EXPECT_EQ(1U, GetAndResetSentGestureEventCount());
766 766
767 SendInputEventACK(WebInputEvent::GesturePinchUpdate, 767 SendInputEventACK(WebInputEvent::GesturePinchUpdate,
768 INPUT_EVENT_ACK_STATE_CONSUMED); 768 INPUT_EVENT_ACK_STATE_CONSUMED);
769 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, last_acked_event().type); 769 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, last_acked_event().type());
770 EXPECT_EQ(5.f, last_acked_event().data.pinchUpdate.scale); 770 EXPECT_EQ(5.f, last_acked_event().data.pinchUpdate.scale);
771 EXPECT_EQ(1U, GestureEventQueueSize()); 771 EXPECT_EQ(1U, GestureEventQueueSize());
772 EXPECT_EQ(1U, GetAndResetSentGestureEventCount()); 772 EXPECT_EQ(1U, GetAndResetSentGestureEventCount());
773 773
774 SendInputEventACK(WebInputEvent::GesturePinchUpdate, 774 SendInputEventACK(WebInputEvent::GesturePinchUpdate,
775 INPUT_EVENT_ACK_STATE_CONSUMED); 775 INPUT_EVENT_ACK_STATE_CONSUMED);
776 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, last_acked_event().type); 776 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, last_acked_event().type());
777 EXPECT_EQ(6.f, last_acked_event().data.pinchUpdate.scale); 777 EXPECT_EQ(6.f, last_acked_event().data.pinchUpdate.scale);
778 EXPECT_EQ(0U, GestureEventQueueSize()); 778 EXPECT_EQ(0U, GestureEventQueueSize());
779 } 779 }
780 780
781 TEST_F(GestureEventQueueTest, CoalescesScrollAndPinchEventsIdentity) { 781 TEST_F(GestureEventQueueTest, CoalescesScrollAndPinchEventsIdentity) {
782 // Insert an event to force queueing of gestures. 782 // Insert an event to force queueing of gestures.
783 SimulateGestureEvent(WebInputEvent::GestureTapCancel, 783 SimulateGestureEvent(WebInputEvent::GestureTapCancel,
784 blink::WebGestureDeviceTouchscreen); 784 blink::WebGestureDeviceTouchscreen);
785 EXPECT_EQ(1U, GetAndResetSentGestureEventCount()); 785 EXPECT_EQ(1U, GetAndResetSentGestureEventCount());
786 EXPECT_EQ(1U, GestureEventQueueSize()); 786 EXPECT_EQ(1U, GestureEventQueueSize());
(...skipping 16 matching lines...) Expand all
803 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); 803 EXPECT_EQ(0U, GetAndResetSentGestureEventCount());
804 EXPECT_EQ(3U, GestureEventQueueSize()); 804 EXPECT_EQ(3U, GestureEventQueueSize());
805 805
806 SendInputEventACK(WebInputEvent::GestureTapCancel, 806 SendInputEventACK(WebInputEvent::GestureTapCancel,
807 INPUT_EVENT_ACK_STATE_CONSUMED); 807 INPUT_EVENT_ACK_STATE_CONSUMED);
808 EXPECT_EQ(2U, GetAndResetSentGestureEventCount()); 808 EXPECT_EQ(2U, GetAndResetSentGestureEventCount());
809 EXPECT_EQ(2U, GestureEventQueueSize()); 809 EXPECT_EQ(2U, GestureEventQueueSize());
810 810
811 SendInputEventACK(WebInputEvent::GestureScrollUpdate, 811 SendInputEventACK(WebInputEvent::GestureScrollUpdate,
812 INPUT_EVENT_ACK_STATE_CONSUMED); 812 INPUT_EVENT_ACK_STATE_CONSUMED);
813 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, last_acked_event().type); 813 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, last_acked_event().type());
814 EXPECT_EQ(0.f, last_acked_event().data.scrollUpdate.deltaX); 814 EXPECT_EQ(0.f, last_acked_event().data.scrollUpdate.deltaX);
815 EXPECT_EQ(0.f, last_acked_event().data.scrollUpdate.deltaY); 815 EXPECT_EQ(0.f, last_acked_event().data.scrollUpdate.deltaY);
816 816
817 SendInputEventACK(WebInputEvent::GesturePinchUpdate, 817 SendInputEventACK(WebInputEvent::GesturePinchUpdate,
818 INPUT_EVENT_ACK_STATE_CONSUMED); 818 INPUT_EVENT_ACK_STATE_CONSUMED);
819 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, last_acked_event().type); 819 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, last_acked_event().type());
820 EXPECT_EQ(1.f, last_acked_event().data.pinchUpdate.scale); 820 EXPECT_EQ(1.f, last_acked_event().data.pinchUpdate.scale);
821 EXPECT_EQ(0U, GestureEventQueueSize()); 821 EXPECT_EQ(0U, GestureEventQueueSize());
822 822
823 // Insert an event to force queueing of gestures. 823 // Insert an event to force queueing of gestures.
824 SimulateGestureEvent(WebInputEvent::GestureTapCancel, 824 SimulateGestureEvent(WebInputEvent::GestureTapCancel,
825 blink::WebGestureDeviceTouchscreen); 825 blink::WebGestureDeviceTouchscreen);
826 EXPECT_EQ(1U, GetAndResetSentGestureEventCount()); 826 EXPECT_EQ(1U, GetAndResetSentGestureEventCount());
827 EXPECT_EQ(1U, GestureEventQueueSize()); 827 EXPECT_EQ(1U, GestureEventQueueSize());
828 828
829 // Ensure that coalescing yields an identity transform for any pinch/scroll 829 // Ensure that coalescing yields an identity transform for any pinch/scroll
(...skipping 14 matching lines...) Expand all
844 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); 844 EXPECT_EQ(0U, GetAndResetSentGestureEventCount());
845 EXPECT_EQ(3U, GestureEventQueueSize()); 845 EXPECT_EQ(3U, GestureEventQueueSize());
846 846
847 SendInputEventACK(WebInputEvent::GestureTapCancel, 847 SendInputEventACK(WebInputEvent::GestureTapCancel,
848 INPUT_EVENT_ACK_STATE_CONSUMED); 848 INPUT_EVENT_ACK_STATE_CONSUMED);
849 EXPECT_EQ(2U, GetAndResetSentGestureEventCount()); 849 EXPECT_EQ(2U, GetAndResetSentGestureEventCount());
850 EXPECT_EQ(2U, GestureEventQueueSize()); 850 EXPECT_EQ(2U, GestureEventQueueSize());
851 851
852 SendInputEventACK(WebInputEvent::GestureScrollUpdate, 852 SendInputEventACK(WebInputEvent::GestureScrollUpdate,
853 INPUT_EVENT_ACK_STATE_CONSUMED); 853 INPUT_EVENT_ACK_STATE_CONSUMED);
854 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, last_acked_event().type); 854 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, last_acked_event().type());
855 EXPECT_EQ(0.f, last_acked_event().data.scrollUpdate.deltaX); 855 EXPECT_EQ(0.f, last_acked_event().data.scrollUpdate.deltaX);
856 EXPECT_EQ(0.f, last_acked_event().data.scrollUpdate.deltaY); 856 EXPECT_EQ(0.f, last_acked_event().data.scrollUpdate.deltaY);
857 857
858 SendInputEventACK(WebInputEvent::GesturePinchUpdate, 858 SendInputEventACK(WebInputEvent::GesturePinchUpdate,
859 INPUT_EVENT_ACK_STATE_CONSUMED); 859 INPUT_EVENT_ACK_STATE_CONSUMED);
860 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, last_acked_event().type); 860 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, last_acked_event().type());
861 EXPECT_EQ(1.f, last_acked_event().data.pinchUpdate.scale); 861 EXPECT_EQ(1.f, last_acked_event().data.pinchUpdate.scale);
862 } 862 }
863 863
864 // Tests a single event with an synchronous ack. 864 // Tests a single event with an synchronous ack.
865 TEST_F(GestureEventQueueTest, SimpleSyncAck) { 865 TEST_F(GestureEventQueueTest, SimpleSyncAck) {
866 set_synchronous_ack(INPUT_EVENT_ACK_STATE_CONSUMED); 866 set_synchronous_ack(INPUT_EVENT_ACK_STATE_CONSUMED);
867 SimulateGestureEvent(WebInputEvent::GestureTapDown, 867 SimulateGestureEvent(WebInputEvent::GestureTapDown,
868 blink::WebGestureDeviceTouchscreen); 868 blink::WebGestureDeviceTouchscreen);
869 EXPECT_EQ(1U, GetAndResetSentGestureEventCount()); 869 EXPECT_EQ(1U, GetAndResetSentGestureEventCount());
870 EXPECT_EQ(0U, GestureEventQueueSize()); 870 EXPECT_EQ(0U, GestureEventQueueSize());
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
920 blink::WebGestureDeviceTouchscreen); 920 blink::WebGestureDeviceTouchscreen);
921 EXPECT_EQ(1U, GetAndResetSentGestureEventCount()); 921 EXPECT_EQ(1U, GetAndResetSentGestureEventCount());
922 SimulateGestureEvent(WebInputEvent::GesturePinchBegin, 922 SimulateGestureEvent(WebInputEvent::GesturePinchBegin,
923 blink::WebGestureDeviceTouchscreen); 923 blink::WebGestureDeviceTouchscreen);
924 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); 924 EXPECT_EQ(0U, GetAndResetSentGestureEventCount());
925 925
926 SimulateGestureScrollUpdateEvent(8, -4, 1); 926 SimulateGestureScrollUpdateEvent(8, -4, 1);
927 // Make sure that the queue contains what we think it should. 927 // Make sure that the queue contains what we think it should.
928 WebGestureEvent merged_event = GestureEventLastQueueEvent(); 928 WebGestureEvent merged_event = GestureEventLastQueueEvent();
929 EXPECT_EQ(3U, GestureEventQueueSize()); 929 EXPECT_EQ(3U, GestureEventQueueSize());
930 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type); 930 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, merged_event.type());
931 931
932 // Coalesced without changing event order. Note anchor at (60, 60). Anchoring 932 // Coalesced without changing event order. Note anchor at (60, 60). Anchoring
933 // from a point that is not the origin should still give us the right scroll. 933 // from a point that is not the origin should still give us the right scroll.
934 SimulateGesturePinchUpdateEvent(1.5, 60, 60, 1); 934 SimulateGesturePinchUpdateEvent(1.5, 60, 60, 1);
935 EXPECT_EQ(4U, GestureEventQueueSize()); 935 EXPECT_EQ(4U, GestureEventQueueSize());
936 936
937 SendInputEventACK(WebInputEvent::GestureScrollBegin, 937 SendInputEventACK(WebInputEvent::GestureScrollBegin,
938 INPUT_EVENT_ACK_STATE_CONSUMED); 938 INPUT_EVENT_ACK_STATE_CONSUMED);
939 EXPECT_EQ(1U, GetAndResetSentGestureEventCount()); 939 EXPECT_EQ(1U, GetAndResetSentGestureEventCount());
940 EXPECT_EQ(3U, GestureEventQueueSize()); 940 EXPECT_EQ(3U, GestureEventQueueSize());
941 941
942 // Ack the PinchBegin, and schedule a synchronous ack for GestureScrollUpdate. 942 // Ack the PinchBegin, and schedule a synchronous ack for GestureScrollUpdate.
943 set_synchronous_ack(INPUT_EVENT_ACK_STATE_CONSUMED); 943 set_synchronous_ack(INPUT_EVENT_ACK_STATE_CONSUMED);
944 SendInputEventACK(WebInputEvent::GesturePinchBegin, 944 SendInputEventACK(WebInputEvent::GesturePinchBegin,
945 INPUT_EVENT_ACK_STATE_CONSUMED); 945 INPUT_EVENT_ACK_STATE_CONSUMED);
946 946
947 // Both GestureScrollUpdate and GesturePinchUpdate should have been sent. 947 // Both GestureScrollUpdate and GesturePinchUpdate should have been sent.
948 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, last_acked_event().type); 948 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, last_acked_event().type());
949 EXPECT_EQ(1U, GestureEventQueueSize()); 949 EXPECT_EQ(1U, GestureEventQueueSize());
950 EXPECT_EQ(2U, GetAndResetSentGestureEventCount()); 950 EXPECT_EQ(2U, GetAndResetSentGestureEventCount());
951 951
952 // Ack the final GesturePinchUpdate. 952 // Ack the final GesturePinchUpdate.
953 SendInputEventACK(WebInputEvent::GesturePinchUpdate, 953 SendInputEventACK(WebInputEvent::GesturePinchUpdate,
954 INPUT_EVENT_ACK_STATE_CONSUMED); 954 INPUT_EVENT_ACK_STATE_CONSUMED);
955 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, last_acked_event().type); 955 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, last_acked_event().type());
956 EXPECT_EQ(0U, GestureEventQueueSize()); 956 EXPECT_EQ(0U, GestureEventQueueSize());
957 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); 957 EXPECT_EQ(0U, GetAndResetSentGestureEventCount());
958 } 958 }
959 959
960 #if GTEST_HAS_PARAM_TEST 960 #if GTEST_HAS_PARAM_TEST
961 TEST_P(GestureEventQueueWithSourceTest, GestureFlingCancelsFiltered) { 961 TEST_P(GestureEventQueueWithSourceTest, GestureFlingCancelsFiltered) {
962 WebGestureDevice source_device = GetParam(); 962 WebGestureDevice source_device = GetParam();
963 963
964 // GFC without previous GFS is dropped. 964 // GFC without previous GFS is dropped.
965 SimulateGestureEvent(WebInputEvent::GestureFlingCancel, source_device); 965 SimulateGestureEvent(WebInputEvent::GestureFlingCancel, source_device);
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
1001 EXPECT_EQ(2U, GetAndResetAckedGestureEventCount()); 1001 EXPECT_EQ(2U, GetAndResetAckedGestureEventCount());
1002 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); 1002 EXPECT_EQ(0U, GetAndResetSentGestureEventCount());
1003 EXPECT_EQ(0U, GestureEventQueueSize()); 1003 EXPECT_EQ(0U, GestureEventQueueSize());
1004 1004
1005 // GFS is added to the queue if another event is pending 1005 // GFS is added to the queue if another event is pending
1006 SimulateGestureScrollUpdateEvent(8, -7, 0); 1006 SimulateGestureScrollUpdateEvent(8, -7, 0);
1007 SimulateGestureFlingStartEvent(0, -10, source_device); 1007 SimulateGestureFlingStartEvent(0, -10, source_device);
1008 EXPECT_EQ(2U, GestureEventQueueSize()); 1008 EXPECT_EQ(2U, GestureEventQueueSize());
1009 EXPECT_EQ(1U, GetAndResetSentGestureEventCount()); 1009 EXPECT_EQ(1U, GetAndResetSentGestureEventCount());
1010 WebGestureEvent merged_event = GestureEventLastQueueEvent(); 1010 WebGestureEvent merged_event = GestureEventLastQueueEvent();
1011 EXPECT_EQ(WebInputEvent::GestureFlingStart, merged_event.type); 1011 EXPECT_EQ(WebInputEvent::GestureFlingStart, merged_event.type());
1012 EXPECT_TRUE(FlingInProgress()); 1012 EXPECT_TRUE(FlingInProgress());
1013 EXPECT_EQ(2U, GestureEventQueueSize()); 1013 EXPECT_EQ(2U, GestureEventQueueSize());
1014 1014
1015 // GFS in queue means that a GFC is added to the queue 1015 // GFS in queue means that a GFC is added to the queue
1016 SimulateGestureEvent(WebInputEvent::GestureFlingCancel, source_device); 1016 SimulateGestureEvent(WebInputEvent::GestureFlingCancel, source_device);
1017 merged_event =GestureEventLastQueueEvent(); 1017 merged_event =GestureEventLastQueueEvent();
1018 EXPECT_EQ(WebInputEvent::GestureFlingCancel, merged_event.type); 1018 EXPECT_EQ(WebInputEvent::GestureFlingCancel, merged_event.type());
1019 EXPECT_FALSE(FlingInProgress()); 1019 EXPECT_FALSE(FlingInProgress());
1020 EXPECT_EQ(3U, GestureEventQueueSize()); 1020 EXPECT_EQ(3U, GestureEventQueueSize());
1021 1021
1022 // Adding a second GFC is dropped. 1022 // Adding a second GFC is dropped.
1023 SimulateGestureEvent(WebInputEvent::GestureFlingCancel, source_device); 1023 SimulateGestureEvent(WebInputEvent::GestureFlingCancel, source_device);
1024 EXPECT_FALSE(FlingInProgress()); 1024 EXPECT_FALSE(FlingInProgress());
1025 EXPECT_EQ(3U, GestureEventQueueSize()); 1025 EXPECT_EQ(3U, GestureEventQueueSize());
1026 1026
1027 // Adding another GFS will add it to the queue. 1027 // Adding another GFS will add it to the queue.
1028 SimulateGestureFlingStartEvent(0, -10, source_device); 1028 SimulateGestureFlingStartEvent(0, -10, source_device);
1029 merged_event = GestureEventLastQueueEvent(); 1029 merged_event = GestureEventLastQueueEvent();
1030 EXPECT_EQ(WebInputEvent::GestureFlingStart, merged_event.type); 1030 EXPECT_EQ(WebInputEvent::GestureFlingStart, merged_event.type());
1031 EXPECT_TRUE(FlingInProgress()); 1031 EXPECT_TRUE(FlingInProgress());
1032 EXPECT_EQ(4U, GestureEventQueueSize()); 1032 EXPECT_EQ(4U, GestureEventQueueSize());
1033 1033
1034 // GFS in queue means that a GFC is added to the queue 1034 // GFS in queue means that a GFC is added to the queue
1035 SimulateGestureEvent(WebInputEvent::GestureFlingCancel, source_device); 1035 SimulateGestureEvent(WebInputEvent::GestureFlingCancel, source_device);
1036 merged_event = GestureEventLastQueueEvent(); 1036 merged_event = GestureEventLastQueueEvent();
1037 EXPECT_EQ(WebInputEvent::GestureFlingCancel, merged_event.type); 1037 EXPECT_EQ(WebInputEvent::GestureFlingCancel, merged_event.type());
1038 EXPECT_FALSE(FlingInProgress()); 1038 EXPECT_FALSE(FlingInProgress());
1039 EXPECT_EQ(5U, GestureEventQueueSize()); 1039 EXPECT_EQ(5U, GestureEventQueueSize());
1040 1040
1041 // Adding another GFC with a GFC already there is dropped. 1041 // Adding another GFC with a GFC already there is dropped.
1042 SimulateGestureEvent(WebInputEvent::GestureFlingCancel, source_device); 1042 SimulateGestureEvent(WebInputEvent::GestureFlingCancel, source_device);
1043 merged_event = GestureEventLastQueueEvent(); 1043 merged_event = GestureEventLastQueueEvent();
1044 EXPECT_EQ(WebInputEvent::GestureFlingCancel, merged_event.type); 1044 EXPECT_EQ(WebInputEvent::GestureFlingCancel, merged_event.type());
1045 EXPECT_FALSE(FlingInProgress()); 1045 EXPECT_FALSE(FlingInProgress());
1046 EXPECT_EQ(5U, GestureEventQueueSize()); 1046 EXPECT_EQ(5U, GestureEventQueueSize());
1047 } 1047 }
1048 1048
1049 INSTANTIATE_TEST_CASE_P(AllSources, 1049 INSTANTIATE_TEST_CASE_P(AllSources,
1050 GestureEventQueueWithSourceTest, 1050 GestureEventQueueWithSourceTest,
1051 testing::Values(blink::WebGestureDeviceTouchscreen, 1051 testing::Values(blink::WebGestureDeviceTouchscreen,
1052 blink::WebGestureDeviceTouchpad)); 1052 blink::WebGestureDeviceTouchpad));
1053 #endif // GTEST_HAS_PARAM_TEST 1053 #endif // GTEST_HAS_PARAM_TEST
1054 1054
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
1103 // Verify that the coalescing queue contains the correct events. 1103 // Verify that the coalescing queue contains the correct events.
1104 WebInputEvent::Type expected[] = { 1104 WebInputEvent::Type expected[] = {
1105 WebInputEvent::GestureScrollUpdate, 1105 WebInputEvent::GestureScrollUpdate,
1106 WebInputEvent::GestureScrollUpdate, 1106 WebInputEvent::GestureScrollUpdate,
1107 WebInputEvent::GestureScrollEnd, 1107 WebInputEvent::GestureScrollEnd,
1108 WebInputEvent::GestureFlingStart}; 1108 WebInputEvent::GestureFlingStart};
1109 1109
1110 for (unsigned i = 0; i < sizeof(expected) / sizeof(WebInputEvent::Type); 1110 for (unsigned i = 0; i < sizeof(expected) / sizeof(WebInputEvent::Type);
1111 i++) { 1111 i++) {
1112 WebGestureEvent merged_event = GestureEventQueueEventAt(i); 1112 WebGestureEvent merged_event = GestureEventQueueEventAt(i);
1113 EXPECT_EQ(expected[i], merged_event.type); 1113 EXPECT_EQ(expected[i], merged_event.type());
1114 } 1114 }
1115 } 1115 }
1116 1116
1117 // Test that non-scroll events are deferred while scrolling during the debounce 1117 // Test that non-scroll events are deferred while scrolling during the debounce
1118 // interval and are discarded if a GestureScrollUpdate event arrives before the 1118 // interval and are discarded if a GestureScrollUpdate event arrives before the
1119 // interval end. 1119 // interval end.
1120 TEST_F(GestureEventQueueTest, DebounceDropsDeferredEvents) { 1120 TEST_F(GestureEventQueueTest, DebounceDropsDeferredEvents) {
1121 SetUpForDebounce(3); 1121 SetUpForDebounce(3);
1122 1122
1123 EXPECT_FALSE(ScrollingInProgress()); 1123 EXPECT_FALSE(ScrollingInProgress());
(...skipping 20 matching lines...) Expand all
1144 EXPECT_TRUE(ScrollingInProgress()); 1144 EXPECT_TRUE(ScrollingInProgress());
1145 1145
1146 // Verify that the coalescing queue contains the correct events. 1146 // Verify that the coalescing queue contains the correct events.
1147 WebInputEvent::Type expected[] = { 1147 WebInputEvent::Type expected[] = {
1148 WebInputEvent::GestureScrollUpdate, 1148 WebInputEvent::GestureScrollUpdate,
1149 WebInputEvent::GestureScrollUpdate}; 1149 WebInputEvent::GestureScrollUpdate};
1150 1150
1151 for (unsigned i = 0; i < sizeof(expected) / sizeof(WebInputEvent::Type); 1151 for (unsigned i = 0; i < sizeof(expected) / sizeof(WebInputEvent::Type);
1152 i++) { 1152 i++) {
1153 WebGestureEvent merged_event = GestureEventQueueEventAt(i); 1153 WebGestureEvent merged_event = GestureEventQueueEventAt(i);
1154 EXPECT_EQ(expected[i], merged_event.type); 1154 EXPECT_EQ(expected[i], merged_event.type());
1155 } 1155 }
1156 } 1156 }
1157 1157
1158 TEST_F(GestureEventQueueTest, CoalescesSyntheticScrollBeginEndEvents) { 1158 TEST_F(GestureEventQueueTest, CoalescesSyntheticScrollBeginEndEvents) {
1159 // Test coalescing of only GestureScrollBegin/End events. 1159 // Test coalescing of only GestureScrollBegin/End events.
1160 SimulateGestureEvent(WebInputEvent::GestureScrollUpdate, 1160 SimulateGestureEvent(WebInputEvent::GestureScrollUpdate,
1161 blink::WebGestureDeviceTouchpad); 1161 blink::WebGestureDeviceTouchpad);
1162 EXPECT_EQ(1U, GetAndResetSentGestureEventCount()); 1162 EXPECT_EQ(1U, GetAndResetSentGestureEventCount());
1163 EXPECT_EQ(1U, GestureEventQueueSize()); 1163 EXPECT_EQ(1U, GestureEventQueueSize());
1164 1164
1165 WebGestureEvent synthetic_end = SyntheticWebGestureEventBuilder::Build( 1165 WebGestureEvent synthetic_end = SyntheticWebGestureEventBuilder::Build(
1166 WebInputEvent::GestureScrollEnd, blink::WebGestureDeviceTouchpad); 1166 WebInputEvent::GestureScrollEnd, blink::WebGestureDeviceTouchpad);
1167 synthetic_end.data.scrollEnd.synthetic = true; 1167 synthetic_end.data.scrollEnd.synthetic = true;
1168 1168
1169 SimulateGestureEvent(synthetic_end); 1169 SimulateGestureEvent(synthetic_end);
1170 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); 1170 EXPECT_EQ(0U, GetAndResetSentGestureEventCount());
1171 EXPECT_EQ(2U, GestureEventQueueSize()); 1171 EXPECT_EQ(2U, GestureEventQueueSize());
1172 1172
1173 // Synthetic begin will remove the unsent synthetic end. 1173 // Synthetic begin will remove the unsent synthetic end.
1174 WebGestureEvent synthetic_begin = SyntheticWebGestureEventBuilder::Build( 1174 WebGestureEvent synthetic_begin = SyntheticWebGestureEventBuilder::Build(
1175 WebInputEvent::GestureScrollBegin, blink::WebGestureDeviceTouchpad); 1175 WebInputEvent::GestureScrollBegin, blink::WebGestureDeviceTouchpad);
1176 synthetic_begin.data.scrollBegin.synthetic = true; 1176 synthetic_begin.data.scrollBegin.synthetic = true;
1177 1177
1178 SimulateGestureEvent(synthetic_begin); 1178 SimulateGestureEvent(synthetic_begin);
1179 EXPECT_EQ(0U, GetAndResetSentGestureEventCount()); 1179 EXPECT_EQ(0U, GetAndResetSentGestureEventCount());
1180 EXPECT_EQ(1U, GestureEventQueueSize()); 1180 EXPECT_EQ(1U, GestureEventQueueSize());
1181 } 1181 }
1182 1182
1183 } // namespace content 1183 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/renderer_host/input/gesture_event_queue.cc ('k') | content/browser/renderer_host/input/input_router_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698