| 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 "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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |