| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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/mouse_wheel_event_queue.h" | 5 #include "content/browser/renderer_host/input/mouse_wheel_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 14 matching lines...) Expand all Loading... |
| 25 using blink::WebMouseWheelEvent; | 25 using blink::WebMouseWheelEvent; |
| 26 | 26 |
| 27 namespace content { | 27 namespace content { |
| 28 namespace { | 28 namespace { |
| 29 | 29 |
| 30 const float kWheelScrollX = 10; | 30 const float kWheelScrollX = 10; |
| 31 const float kWheelScrollY = 12; | 31 const float kWheelScrollY = 12; |
| 32 const float kWheelScrollGlobalX = 50; | 32 const float kWheelScrollGlobalX = 50; |
| 33 const float kWheelScrollGlobalY = 72; | 33 const float kWheelScrollGlobalY = 72; |
| 34 | 34 |
| 35 #define EXPECT_GESTURE_SCROLL_BEGIN_IMPL(event) \ | 35 #define EXPECT_GESTURE_SCROLL_BEGIN_IMPL(event) \ |
| 36 EXPECT_EQ(WebInputEvent::GestureScrollBegin, event->type); \ | 36 EXPECT_EQ(WebInputEvent::GestureScrollBegin, event->type()); \ |
| 37 EXPECT_EQ(kWheelScrollX, event->x); \ | 37 EXPECT_EQ(kWheelScrollX, event->x); \ |
| 38 EXPECT_EQ(kWheelScrollY, event->y); \ | 38 EXPECT_EQ(kWheelScrollY, event->y); \ |
| 39 EXPECT_EQ(kWheelScrollGlobalX, event->globalX); \ | 39 EXPECT_EQ(kWheelScrollGlobalX, event->globalX); \ |
| 40 EXPECT_EQ(kWheelScrollGlobalY, event->globalY); \ | 40 EXPECT_EQ(kWheelScrollGlobalY, event->globalY); \ |
| 41 EXPECT_EQ(scroll_units, event->data.scrollBegin.deltaHintUnits); | 41 EXPECT_EQ(scroll_units, event->data.scrollBegin.deltaHintUnits); |
| 42 | 42 |
| 43 #define EXPECT_GESTURE_SCROLL_BEGIN(event) \ | 43 #define EXPECT_GESTURE_SCROLL_BEGIN(event) \ |
| 44 EXPECT_GESTURE_SCROLL_BEGIN_IMPL(event); \ | 44 EXPECT_GESTURE_SCROLL_BEGIN_IMPL(event); \ |
| 45 EXPECT_FALSE(event->data.scrollBegin.synthetic); \ | 45 EXPECT_FALSE(event->data.scrollBegin.synthetic); \ |
| 46 EXPECT_EQ(WebGestureEvent::UnknownMomentumPhase, \ | 46 EXPECT_EQ(WebGestureEvent::UnknownMomentumPhase, \ |
| 47 event->data.scrollBegin.inertialPhase); | 47 event->data.scrollBegin.inertialPhase); |
| 48 | 48 |
| 49 #define EXPECT_GESTURE_SCROLL_BEGIN_WITH_PHASE(event) \ | 49 #define EXPECT_GESTURE_SCROLL_BEGIN_WITH_PHASE(event) \ |
| 50 EXPECT_GESTURE_SCROLL_BEGIN_IMPL(event); \ | 50 EXPECT_GESTURE_SCROLL_BEGIN_IMPL(event); \ |
| (...skipping 13 matching lines...) Expand all Loading... |
| 64 EXPECT_EQ(WebGestureEvent::MomentumPhase, \ | 64 EXPECT_EQ(WebGestureEvent::MomentumPhase, \ |
| 65 event->data.scrollBegin.inertialPhase); | 65 event->data.scrollBegin.inertialPhase); |
| 66 | 66 |
| 67 #define EXPECT_SYNTHETIC_INERTIAL_GESTURE_SCROLL_BEGIN(event) \ | 67 #define EXPECT_SYNTHETIC_INERTIAL_GESTURE_SCROLL_BEGIN(event) \ |
| 68 EXPECT_GESTURE_SCROLL_BEGIN_IMPL(event); \ | 68 EXPECT_GESTURE_SCROLL_BEGIN_IMPL(event); \ |
| 69 EXPECT_TRUE(event->data.scrollBegin.synthetic); \ | 69 EXPECT_TRUE(event->data.scrollBegin.synthetic); \ |
| 70 EXPECT_EQ(WebGestureEvent::MomentumPhase, \ | 70 EXPECT_EQ(WebGestureEvent::MomentumPhase, \ |
| 71 event->data.scrollBegin.inertialPhase); | 71 event->data.scrollBegin.inertialPhase); |
| 72 | 72 |
| 73 #define EXPECT_GESTURE_SCROLL_UPDATE_IMPL(event) \ | 73 #define EXPECT_GESTURE_SCROLL_UPDATE_IMPL(event) \ |
| 74 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, event->type); \ | 74 EXPECT_EQ(WebInputEvent::GestureScrollUpdate, event->type()); \ |
| 75 EXPECT_EQ(scroll_units, event->data.scrollUpdate.deltaUnits); \ | 75 EXPECT_EQ(scroll_units, event->data.scrollUpdate.deltaUnits); \ |
| 76 EXPECT_EQ(kWheelScrollX, event->x); \ | 76 EXPECT_EQ(kWheelScrollX, event->x); \ |
| 77 EXPECT_EQ(kWheelScrollY, event->y); \ | 77 EXPECT_EQ(kWheelScrollY, event->y); \ |
| 78 EXPECT_EQ(kWheelScrollGlobalX, event->globalX); \ | 78 EXPECT_EQ(kWheelScrollGlobalX, event->globalX); \ |
| 79 EXPECT_EQ(kWheelScrollGlobalY, event->globalY); | 79 EXPECT_EQ(kWheelScrollGlobalY, event->globalY); |
| 80 | 80 |
| 81 #define EXPECT_GESTURE_SCROLL_UPDATE(event) \ | 81 #define EXPECT_GESTURE_SCROLL_UPDATE(event) \ |
| 82 EXPECT_GESTURE_SCROLL_UPDATE_IMPL(event); \ | 82 EXPECT_GESTURE_SCROLL_UPDATE_IMPL(event); \ |
| 83 EXPECT_EQ(WebGestureEvent::UnknownMomentumPhase, \ | 83 EXPECT_EQ(WebGestureEvent::UnknownMomentumPhase, \ |
| 84 event->data.scrollUpdate.inertialPhase); | 84 event->data.scrollUpdate.inertialPhase); |
| 85 | 85 |
| 86 #define EXPECT_GESTURE_SCROLL_UPDATE_WITH_PHASE(event) \ | 86 #define EXPECT_GESTURE_SCROLL_UPDATE_WITH_PHASE(event) \ |
| 87 EXPECT_GESTURE_SCROLL_UPDATE_IMPL(event); \ | 87 EXPECT_GESTURE_SCROLL_UPDATE_IMPL(event); \ |
| 88 EXPECT_EQ(WebGestureEvent::NonMomentumPhase, \ | 88 EXPECT_EQ(WebGestureEvent::NonMomentumPhase, \ |
| 89 event->data.scrollUpdate.inertialPhase); | 89 event->data.scrollUpdate.inertialPhase); |
| 90 | 90 |
| 91 #define EXPECT_INERTIAL_GESTURE_SCROLL_UPDATE(event) \ | 91 #define EXPECT_INERTIAL_GESTURE_SCROLL_UPDATE(event) \ |
| 92 EXPECT_GESTURE_SCROLL_UPDATE_IMPL(event); \ | 92 EXPECT_GESTURE_SCROLL_UPDATE_IMPL(event); \ |
| 93 EXPECT_EQ(WebGestureEvent::MomentumPhase, \ | 93 EXPECT_EQ(WebGestureEvent::MomentumPhase, \ |
| 94 event->data.scrollUpdate.inertialPhase); | 94 event->data.scrollUpdate.inertialPhase); |
| 95 | 95 |
| 96 #define EXPECT_GESTURE_SCROLL_END_IMPL(event) \ | 96 #define EXPECT_GESTURE_SCROLL_END_IMPL(event) \ |
| 97 EXPECT_EQ(WebInputEvent::GestureScrollEnd, event->type); \ | 97 EXPECT_EQ(WebInputEvent::GestureScrollEnd, event->type()); \ |
| 98 EXPECT_EQ(scroll_units, event->data.scrollEnd.deltaUnits); \ | 98 EXPECT_EQ(scroll_units, event->data.scrollEnd.deltaUnits); \ |
| 99 EXPECT_EQ(kWheelScrollX, event->x); \ | 99 EXPECT_EQ(kWheelScrollX, event->x); \ |
| 100 EXPECT_EQ(kWheelScrollY, event->y); \ | 100 EXPECT_EQ(kWheelScrollY, event->y); \ |
| 101 EXPECT_EQ(kWheelScrollGlobalX, event->globalX); \ | 101 EXPECT_EQ(kWheelScrollGlobalX, event->globalX); \ |
| 102 EXPECT_EQ(kWheelScrollGlobalY, event->globalY); | 102 EXPECT_EQ(kWheelScrollGlobalY, event->globalY); |
| 103 | 103 |
| 104 #define EXPECT_GESTURE_SCROLL_END(event) \ | 104 #define EXPECT_GESTURE_SCROLL_END(event) \ |
| 105 EXPECT_GESTURE_SCROLL_END_IMPL(event); \ | 105 EXPECT_GESTURE_SCROLL_END_IMPL(event); \ |
| 106 EXPECT_FALSE(event->data.scrollEnd.synthetic); \ | 106 EXPECT_FALSE(event->data.scrollEnd.synthetic); \ |
| 107 EXPECT_EQ(WebGestureEvent::UnknownMomentumPhase, \ | 107 EXPECT_EQ(WebGestureEvent::UnknownMomentumPhase, \ |
| (...skipping 17 matching lines...) Expand all Loading... |
| 125 EXPECT_EQ(WebGestureEvent::MomentumPhase, \ | 125 EXPECT_EQ(WebGestureEvent::MomentumPhase, \ |
| 126 event->data.scrollEnd.inertialPhase); | 126 event->data.scrollEnd.inertialPhase); |
| 127 | 127 |
| 128 #define EXPECT_SYNTHETIC_INERTIAL_GESTURE_SCROLL_END(event) \ | 128 #define EXPECT_SYNTHETIC_INERTIAL_GESTURE_SCROLL_END(event) \ |
| 129 EXPECT_GESTURE_SCROLL_END_IMPL(event); \ | 129 EXPECT_GESTURE_SCROLL_END_IMPL(event); \ |
| 130 EXPECT_TRUE(event->data.scrollEnd.synthetic); \ | 130 EXPECT_TRUE(event->data.scrollEnd.synthetic); \ |
| 131 EXPECT_EQ(WebGestureEvent::MomentumPhase, \ | 131 EXPECT_EQ(WebGestureEvent::MomentumPhase, \ |
| 132 event->data.scrollEnd.inertialPhase); | 132 event->data.scrollEnd.inertialPhase); |
| 133 | 133 |
| 134 #define EXPECT_MOUSE_WHEEL(event) \ | 134 #define EXPECT_MOUSE_WHEEL(event) \ |
| 135 EXPECT_EQ(WebInputEvent::MouseWheel, event->type); | 135 EXPECT_EQ(WebInputEvent::MouseWheel, event->type()); |
| 136 | 136 |
| 137 } // namespace | 137 } // namespace |
| 138 | 138 |
| 139 class MouseWheelEventQueueTest : public testing::TestWithParam<bool>, | 139 class MouseWheelEventQueueTest : public testing::TestWithParam<bool>, |
| 140 public MouseWheelEventQueueClient { | 140 public MouseWheelEventQueueClient { |
| 141 public: | 141 public: |
| 142 MouseWheelEventQueueTest() | 142 MouseWheelEventQueueTest() |
| 143 : acked_event_count_(0), | 143 : acked_event_count_(0), |
| 144 last_acked_event_state_(INPUT_EVENT_ACK_STATE_UNKNOWN) { | 144 last_acked_event_state_(INPUT_EVENT_ACK_STATE_UNKNOWN) { |
| 145 scroll_latching_enabled_ = GetParam(); | 145 scroll_latching_enabled_ = GetParam(); |
| (...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 288 kWheelScrollGlobalY, 5, 5, 0, high_precision); | 288 kWheelScrollGlobalY, 5, 5, 0, high_precision); |
| 289 EXPECT_EQ(1U, queued_event_count()); | 289 EXPECT_EQ(1U, queued_event_count()); |
| 290 EXPECT_TRUE(event_in_flight()); | 290 EXPECT_TRUE(event_in_flight()); |
| 291 EXPECT_EQ(0U, GetAndResetSentEventCount()); | 291 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
| 292 | 292 |
| 293 // Receive an ACK for the mouse wheel event and release the next | 293 // Receive an ACK for the mouse wheel event and release the next |
| 294 // mouse wheel event. | 294 // mouse wheel event. |
| 295 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 295 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
| 296 EXPECT_EQ(0U, queued_event_count()); | 296 EXPECT_EQ(0U, queued_event_count()); |
| 297 EXPECT_TRUE(event_in_flight()); | 297 EXPECT_TRUE(event_in_flight()); |
| 298 EXPECT_EQ(WebInputEvent::MouseWheel, acked_event().type); | 298 EXPECT_EQ(WebInputEvent::MouseWheel, acked_event().type()); |
| 299 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 299 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
| 300 EXPECT_EQ(3U, all_sent_events().size()); | 300 EXPECT_EQ(3U, all_sent_events().size()); |
| 301 EXPECT_GESTURE_SCROLL_BEGIN(sent_gesture_event(0)); | 301 EXPECT_GESTURE_SCROLL_BEGIN(sent_gesture_event(0)); |
| 302 EXPECT_GESTURE_SCROLL_UPDATE(sent_gesture_event(1)); | 302 EXPECT_GESTURE_SCROLL_UPDATE(sent_gesture_event(1)); |
| 303 EXPECT_MOUSE_WHEEL(sent_input_event(2)); | 303 EXPECT_MOUSE_WHEEL(sent_input_event(2)); |
| 304 EXPECT_EQ(3U, GetAndResetSentEventCount()); | 304 EXPECT_EQ(3U, GetAndResetSentEventCount()); |
| 305 | 305 |
| 306 RunTasksAndWait(DefaultScrollEndTimeoutDelay() * 2); | 306 RunTasksAndWait(DefaultScrollEndTimeoutDelay() * 2); |
| 307 EXPECT_EQ(1U, all_sent_events().size()); | 307 EXPECT_EQ(1U, all_sent_events().size()); |
| 308 EXPECT_GESTURE_SCROLL_END(sent_gesture_event(0)); | 308 EXPECT_GESTURE_SCROLL_END(sent_gesture_event(0)); |
| (...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 418 EXPECT_EQ(1U, queued_event_count()); | 418 EXPECT_EQ(1U, queued_event_count()); |
| 419 EXPECT_TRUE(event_in_flight()); | 419 EXPECT_TRUE(event_in_flight()); |
| 420 EXPECT_EQ(0U, GetAndResetSentEventCount()); | 420 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
| 421 | 421 |
| 422 // Receive an ACK for the first mouse wheel event. | 422 // Receive an ACK for the first mouse wheel event. |
| 423 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); | 423 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); |
| 424 EXPECT_EQ(0U, queued_event_count()); | 424 EXPECT_EQ(0U, queued_event_count()); |
| 425 EXPECT_TRUE(event_in_flight()); | 425 EXPECT_TRUE(event_in_flight()); |
| 426 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 426 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
| 427 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 427 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
| 428 EXPECT_EQ(WebInputEvent::MouseWheel, acked_event().type); | 428 EXPECT_EQ(WebInputEvent::MouseWheel, acked_event().type()); |
| 429 | 429 |
| 430 // Receive an ACK for the second mouse wheel event. | 430 // Receive an ACK for the second mouse wheel event. |
| 431 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); | 431 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_CONSUMED); |
| 432 EXPECT_EQ(0U, queued_event_count()); | 432 EXPECT_EQ(0U, queued_event_count()); |
| 433 EXPECT_FALSE(event_in_flight()); | 433 EXPECT_FALSE(event_in_flight()); |
| 434 EXPECT_EQ(0U, GetAndResetSentEventCount()); | 434 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
| 435 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 435 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
| 436 EXPECT_EQ(WebInputEvent::MouseWheel, acked_event().type); | 436 EXPECT_EQ(WebInputEvent::MouseWheel, acked_event().type()); |
| 437 } | 437 } |
| 438 | 438 |
| 439 TEST_P(MouseWheelEventQueueTest, GestureSending) { | 439 TEST_P(MouseWheelEventQueueTest, GestureSending) { |
| 440 GestureSendingTest(false); | 440 GestureSendingTest(false); |
| 441 } | 441 } |
| 442 | 442 |
| 443 TEST_P(MouseWheelEventQueueTest, GestureSendingPrecisePixels) { | 443 TEST_P(MouseWheelEventQueueTest, GestureSendingPrecisePixels) { |
| 444 GestureSendingTest(false); | 444 GestureSendingTest(false); |
| 445 } | 445 } |
| 446 | 446 |
| (...skipping 12 matching lines...) Expand all Loading... |
| 459 SendMouseWheel(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX, | 459 SendMouseWheel(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX, |
| 460 kWheelScrollGlobalY, 1, 1, 0, false); | 460 kWheelScrollGlobalY, 1, 1, 0, false); |
| 461 EXPECT_EQ(0U, queued_event_count()); | 461 EXPECT_EQ(0U, queued_event_count()); |
| 462 EXPECT_TRUE(event_in_flight()); | 462 EXPECT_TRUE(event_in_flight()); |
| 463 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 463 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
| 464 | 464 |
| 465 // Receive an ACK for the mouse wheel event. | 465 // Receive an ACK for the mouse wheel event. |
| 466 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 466 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
| 467 EXPECT_EQ(0U, queued_event_count()); | 467 EXPECT_EQ(0U, queued_event_count()); |
| 468 EXPECT_FALSE(event_in_flight()); | 468 EXPECT_FALSE(event_in_flight()); |
| 469 EXPECT_EQ(WebInputEvent::MouseWheel, acked_event().type); | 469 EXPECT_EQ(WebInputEvent::MouseWheel, acked_event().type()); |
| 470 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 470 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
| 471 EXPECT_EQ(2U, all_sent_events().size()); | 471 EXPECT_EQ(2U, all_sent_events().size()); |
| 472 EXPECT_GESTURE_SCROLL_BEGIN(sent_gesture_event(0)); | 472 EXPECT_GESTURE_SCROLL_BEGIN(sent_gesture_event(0)); |
| 473 EXPECT_GESTURE_SCROLL_UPDATE(sent_gesture_event(1)); | 473 EXPECT_GESTURE_SCROLL_UPDATE(sent_gesture_event(1)); |
| 474 EXPECT_EQ(2U, GetAndResetSentEventCount()); | 474 EXPECT_EQ(2U, GetAndResetSentEventCount()); |
| 475 | 475 |
| 476 // Ensure that a gesture scroll begin terminates the current scroll event. | 476 // Ensure that a gesture scroll begin terminates the current scroll event. |
| 477 SendGestureEvent(WebInputEvent::GestureScrollBegin); | 477 SendGestureEvent(WebInputEvent::GestureScrollBegin); |
| 478 EXPECT_EQ(1U, all_sent_events().size()); | 478 EXPECT_EQ(1U, all_sent_events().size()); |
| 479 EXPECT_GESTURE_SCROLL_END(sent_gesture_event(0)); | 479 EXPECT_GESTURE_SCROLL_END(sent_gesture_event(0)); |
| 480 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 480 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
| 481 | 481 |
| 482 SendMouseWheel(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX, | 482 SendMouseWheel(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX, |
| 483 kWheelScrollGlobalY, 1, 1, 0, false); | 483 kWheelScrollGlobalY, 1, 1, 0, false); |
| 484 EXPECT_EQ(0U, queued_event_count()); | 484 EXPECT_EQ(0U, queued_event_count()); |
| 485 EXPECT_TRUE(event_in_flight()); | 485 EXPECT_TRUE(event_in_flight()); |
| 486 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 486 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
| 487 | 487 |
| 488 // New mouse wheel events won't cause gestures because a scroll | 488 // New mouse wheel events won't cause gestures because a scroll |
| 489 // is already in progress by another device. | 489 // is already in progress by another device. |
| 490 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 490 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
| 491 EXPECT_EQ(0U, queued_event_count()); | 491 EXPECT_EQ(0U, queued_event_count()); |
| 492 EXPECT_FALSE(event_in_flight()); | 492 EXPECT_FALSE(event_in_flight()); |
| 493 EXPECT_EQ(WebInputEvent::MouseWheel, acked_event().type); | 493 EXPECT_EQ(WebInputEvent::MouseWheel, acked_event().type()); |
| 494 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 494 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
| 495 EXPECT_EQ(0U, all_sent_events().size()); | 495 EXPECT_EQ(0U, all_sent_events().size()); |
| 496 | 496 |
| 497 SendGestureEvent(WebInputEvent::GestureScrollEnd); | 497 SendGestureEvent(WebInputEvent::GestureScrollEnd); |
| 498 EXPECT_EQ(0U, all_sent_events().size()); | 498 EXPECT_EQ(0U, all_sent_events().size()); |
| 499 | 499 |
| 500 SendMouseWheel(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX, | 500 SendMouseWheel(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX, |
| 501 kWheelScrollGlobalY, 1, 1, 0, false); | 501 kWheelScrollGlobalY, 1, 1, 0, false); |
| 502 EXPECT_EQ(0U, queued_event_count()); | 502 EXPECT_EQ(0U, queued_event_count()); |
| 503 EXPECT_TRUE(event_in_flight()); | 503 EXPECT_TRUE(event_in_flight()); |
| 504 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 504 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
| 505 | 505 |
| 506 // Receive an ACK for the mouse wheel event. | 506 // Receive an ACK for the mouse wheel event. |
| 507 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 507 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
| 508 EXPECT_EQ(0U, queued_event_count()); | 508 EXPECT_EQ(0U, queued_event_count()); |
| 509 EXPECT_FALSE(event_in_flight()); | 509 EXPECT_FALSE(event_in_flight()); |
| 510 EXPECT_EQ(WebInputEvent::MouseWheel, acked_event().type); | 510 EXPECT_EQ(WebInputEvent::MouseWheel, acked_event().type()); |
| 511 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 511 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
| 512 EXPECT_EQ(2U, all_sent_events().size()); | 512 EXPECT_EQ(2U, all_sent_events().size()); |
| 513 EXPECT_GESTURE_SCROLL_BEGIN(sent_gesture_event(0)); | 513 EXPECT_GESTURE_SCROLL_BEGIN(sent_gesture_event(0)); |
| 514 EXPECT_GESTURE_SCROLL_UPDATE(sent_gesture_event(1)); | 514 EXPECT_GESTURE_SCROLL_UPDATE(sent_gesture_event(1)); |
| 515 EXPECT_EQ(2U, GetAndResetSentEventCount()); | 515 EXPECT_EQ(2U, GetAndResetSentEventCount()); |
| 516 } | 516 } |
| 517 | 517 |
| 518 TEST_P(MouseWheelEventQueueTest, GestureRailScrolling) { | 518 TEST_P(MouseWheelEventQueueTest, GestureRailScrolling) { |
| 519 const WebGestureEvent::ScrollUnits scroll_units = WebGestureEvent::Pixels; | 519 const WebGestureEvent::ScrollUnits scroll_units = WebGestureEvent::Pixels; |
| 520 | 520 |
| 521 SendMouseWheel(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX, | 521 SendMouseWheel(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX, |
| 522 kWheelScrollGlobalY, 1, 1, 0, false, | 522 kWheelScrollGlobalY, 1, 1, 0, false, |
| 523 WebInputEvent::RailsModeHorizontal); | 523 WebInputEvent::RailsModeHorizontal); |
| 524 EXPECT_EQ(0U, queued_event_count()); | 524 EXPECT_EQ(0U, queued_event_count()); |
| 525 EXPECT_TRUE(event_in_flight()); | 525 EXPECT_TRUE(event_in_flight()); |
| 526 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 526 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
| 527 | 527 |
| 528 // Receive an ACK for the mouse wheel event. | 528 // Receive an ACK for the mouse wheel event. |
| 529 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 529 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
| 530 EXPECT_EQ(0U, queued_event_count()); | 530 EXPECT_EQ(0U, queued_event_count()); |
| 531 EXPECT_FALSE(event_in_flight()); | 531 EXPECT_FALSE(event_in_flight()); |
| 532 EXPECT_EQ(WebInputEvent::MouseWheel, acked_event().type); | 532 EXPECT_EQ(WebInputEvent::MouseWheel, acked_event().type()); |
| 533 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 533 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
| 534 EXPECT_EQ(2U, all_sent_events().size()); | 534 EXPECT_EQ(2U, all_sent_events().size()); |
| 535 EXPECT_GESTURE_SCROLL_BEGIN(sent_gesture_event(0)); | 535 EXPECT_GESTURE_SCROLL_BEGIN(sent_gesture_event(0)); |
| 536 EXPECT_GESTURE_SCROLL_UPDATE(sent_gesture_event(1)); | 536 EXPECT_GESTURE_SCROLL_UPDATE(sent_gesture_event(1)); |
| 537 EXPECT_EQ(1U, sent_gesture_event(1)->data.scrollUpdate.deltaX); | 537 EXPECT_EQ(1U, sent_gesture_event(1)->data.scrollUpdate.deltaX); |
| 538 EXPECT_EQ(0U, sent_gesture_event(1)->data.scrollUpdate.deltaY); | 538 EXPECT_EQ(0U, sent_gesture_event(1)->data.scrollUpdate.deltaY); |
| 539 EXPECT_EQ(2U, GetAndResetSentEventCount()); | 539 EXPECT_EQ(2U, GetAndResetSentEventCount()); |
| 540 | 540 |
| 541 RunTasksAndWait(DefaultScrollEndTimeoutDelay() * 2); | 541 RunTasksAndWait(DefaultScrollEndTimeoutDelay() * 2); |
| 542 EXPECT_EQ(1U, all_sent_events().size()); | 542 EXPECT_EQ(1U, all_sent_events().size()); |
| 543 EXPECT_GESTURE_SCROLL_END(sent_gesture_event(0)); | 543 EXPECT_GESTURE_SCROLL_END(sent_gesture_event(0)); |
| 544 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 544 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
| 545 | 545 |
| 546 SendMouseWheel(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX, | 546 SendMouseWheel(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX, |
| 547 kWheelScrollGlobalY, 1, 1, 0, false, | 547 kWheelScrollGlobalY, 1, 1, 0, false, |
| 548 WebInputEvent::RailsModeVertical); | 548 WebInputEvent::RailsModeVertical); |
| 549 EXPECT_EQ(0U, queued_event_count()); | 549 EXPECT_EQ(0U, queued_event_count()); |
| 550 EXPECT_TRUE(event_in_flight()); | 550 EXPECT_TRUE(event_in_flight()); |
| 551 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 551 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
| 552 | 552 |
| 553 // Receive an ACK for the mouse wheel event. | 553 // Receive an ACK for the mouse wheel event. |
| 554 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 554 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
| 555 EXPECT_EQ(0U, queued_event_count()); | 555 EXPECT_EQ(0U, queued_event_count()); |
| 556 EXPECT_FALSE(event_in_flight()); | 556 EXPECT_FALSE(event_in_flight()); |
| 557 EXPECT_EQ(WebInputEvent::MouseWheel, acked_event().type); | 557 EXPECT_EQ(WebInputEvent::MouseWheel, acked_event().type()); |
| 558 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 558 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
| 559 EXPECT_EQ(2U, all_sent_events().size()); | 559 EXPECT_EQ(2U, all_sent_events().size()); |
| 560 EXPECT_GESTURE_SCROLL_BEGIN(sent_gesture_event(0)); | 560 EXPECT_GESTURE_SCROLL_BEGIN(sent_gesture_event(0)); |
| 561 EXPECT_GESTURE_SCROLL_UPDATE(sent_gesture_event(1)); | 561 EXPECT_GESTURE_SCROLL_UPDATE(sent_gesture_event(1)); |
| 562 EXPECT_EQ(0U, sent_gesture_event(1)->data.scrollUpdate.deltaX); | 562 EXPECT_EQ(0U, sent_gesture_event(1)->data.scrollUpdate.deltaX); |
| 563 EXPECT_EQ(1U, sent_gesture_event(1)->data.scrollUpdate.deltaY); | 563 EXPECT_EQ(1U, sent_gesture_event(1)->data.scrollUpdate.deltaY); |
| 564 EXPECT_EQ(2U, GetAndResetSentEventCount()); | 564 EXPECT_EQ(2U, GetAndResetSentEventCount()); |
| 565 } | 565 } |
| 566 | 566 |
| 567 TEST_P(MouseWheelEventQueueTest, WheelScrollLatching) { | 567 TEST_P(MouseWheelEventQueueTest, WheelScrollLatching) { |
| 568 const WebGestureEvent::ScrollUnits scroll_units = WebGestureEvent::Pixels; | 568 const WebGestureEvent::ScrollUnits scroll_units = WebGestureEvent::Pixels; |
| 569 SendMouseWheel(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX, | 569 SendMouseWheel(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX, |
| 570 kWheelScrollGlobalY, 1, 1, 0, false, | 570 kWheelScrollGlobalY, 1, 1, 0, false, |
| 571 WebInputEvent::RailsModeVertical); | 571 WebInputEvent::RailsModeVertical); |
| 572 EXPECT_EQ(0U, queued_event_count()); | 572 EXPECT_EQ(0U, queued_event_count()); |
| 573 EXPECT_TRUE(event_in_flight()); | 573 EXPECT_TRUE(event_in_flight()); |
| 574 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 574 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
| 575 | 575 |
| 576 // Receive an ACK for the mouse wheel event. | 576 // Receive an ACK for the mouse wheel event. |
| 577 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 577 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
| 578 EXPECT_EQ(0U, queued_event_count()); | 578 EXPECT_EQ(0U, queued_event_count()); |
| 579 EXPECT_FALSE(event_in_flight()); | 579 EXPECT_FALSE(event_in_flight()); |
| 580 EXPECT_EQ(WebInputEvent::MouseWheel, acked_event().type); | 580 EXPECT_EQ(WebInputEvent::MouseWheel, acked_event().type()); |
| 581 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 581 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
| 582 EXPECT_EQ(2U, all_sent_events().size()); | 582 EXPECT_EQ(2U, all_sent_events().size()); |
| 583 EXPECT_GESTURE_SCROLL_BEGIN(sent_gesture_event(0)); | 583 EXPECT_GESTURE_SCROLL_BEGIN(sent_gesture_event(0)); |
| 584 EXPECT_GESTURE_SCROLL_UPDATE(sent_gesture_event(1)); | 584 EXPECT_GESTURE_SCROLL_UPDATE(sent_gesture_event(1)); |
| 585 EXPECT_EQ(0U, sent_gesture_event(1)->data.scrollUpdate.deltaX); | 585 EXPECT_EQ(0U, sent_gesture_event(1)->data.scrollUpdate.deltaX); |
| 586 EXPECT_EQ(1U, sent_gesture_event(1)->data.scrollUpdate.deltaY); | 586 EXPECT_EQ(1U, sent_gesture_event(1)->data.scrollUpdate.deltaY); |
| 587 EXPECT_EQ(2U, GetAndResetSentEventCount()); | 587 EXPECT_EQ(2U, GetAndResetSentEventCount()); |
| 588 | 588 |
| 589 RunTasksAndWait(base::TimeDelta::FromMilliseconds(1)); | 589 RunTasksAndWait(base::TimeDelta::FromMilliseconds(1)); |
| 590 if (!scroll_latching_enabled_) { | 590 if (!scroll_latching_enabled_) { |
| 591 EXPECT_GESTURE_SCROLL_END(sent_gesture_event(0)); | 591 EXPECT_GESTURE_SCROLL_END(sent_gesture_event(0)); |
| 592 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 592 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
| 593 } else { | 593 } else { |
| 594 EXPECT_EQ(0U, GetAndResetSentEventCount()); | 594 EXPECT_EQ(0U, GetAndResetSentEventCount()); |
| 595 } | 595 } |
| 596 SendMouseWheel(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX, | 596 SendMouseWheel(kWheelScrollX, kWheelScrollY, kWheelScrollGlobalX, |
| 597 kWheelScrollGlobalY, 1, 1, 0, false, | 597 kWheelScrollGlobalY, 1, 1, 0, false, |
| 598 WebInputEvent::RailsModeVertical); | 598 WebInputEvent::RailsModeVertical); |
| 599 EXPECT_EQ(0U, queued_event_count()); | 599 EXPECT_EQ(0U, queued_event_count()); |
| 600 EXPECT_TRUE(event_in_flight()); | 600 EXPECT_TRUE(event_in_flight()); |
| 601 EXPECT_EQ(1U, GetAndResetSentEventCount()); | 601 EXPECT_EQ(1U, GetAndResetSentEventCount()); |
| 602 | 602 |
| 603 // Receive an ACK for the mouse wheel event. | 603 // Receive an ACK for the mouse wheel event. |
| 604 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 604 SendMouseWheelEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
| 605 EXPECT_EQ(0U, queued_event_count()); | 605 EXPECT_EQ(0U, queued_event_count()); |
| 606 EXPECT_FALSE(event_in_flight()); | 606 EXPECT_FALSE(event_in_flight()); |
| 607 EXPECT_EQ(WebInputEvent::MouseWheel, acked_event().type); | 607 EXPECT_EQ(WebInputEvent::MouseWheel, acked_event().type()); |
| 608 EXPECT_EQ(1U, GetAndResetAckedEventCount()); | 608 EXPECT_EQ(1U, GetAndResetAckedEventCount()); |
| 609 | 609 |
| 610 int updateEventIndex = -1; | 610 int updateEventIndex = -1; |
| 611 if (!scroll_latching_enabled_) { | 611 if (!scroll_latching_enabled_) { |
| 612 EXPECT_EQ(2U, all_sent_events().size()); | 612 EXPECT_EQ(2U, all_sent_events().size()); |
| 613 EXPECT_GESTURE_SCROLL_BEGIN(sent_gesture_event(0)); | 613 EXPECT_GESTURE_SCROLL_BEGIN(sent_gesture_event(0)); |
| 614 updateEventIndex = 1; | 614 updateEventIndex = 1; |
| 615 } else { | 615 } else { |
| 616 // Scroll latching: no new scroll begin expected. | 616 // Scroll latching: no new scroll begin expected. |
| 617 EXPECT_EQ(1U, all_sent_events().size()); | 617 EXPECT_EQ(1U, all_sent_events().size()); |
| 618 updateEventIndex = 0; | 618 updateEventIndex = 0; |
| 619 } | 619 } |
| 620 EXPECT_GE(updateEventIndex, 0); | 620 EXPECT_GE(updateEventIndex, 0); |
| 621 EXPECT_GESTURE_SCROLL_UPDATE(sent_gesture_event(updateEventIndex)); | 621 EXPECT_GESTURE_SCROLL_UPDATE(sent_gesture_event(updateEventIndex)); |
| 622 EXPECT_EQ(0U, sent_gesture_event(updateEventIndex)->data.scrollUpdate.deltaX); | 622 EXPECT_EQ(0U, sent_gesture_event(updateEventIndex)->data.scrollUpdate.deltaX); |
| 623 EXPECT_EQ(1U, sent_gesture_event(updateEventIndex)->data.scrollUpdate.deltaY); | 623 EXPECT_EQ(1U, sent_gesture_event(updateEventIndex)->data.scrollUpdate.deltaY); |
| 624 EXPECT_EQ(static_cast<size_t>(updateEventIndex + 1), | 624 EXPECT_EQ(static_cast<size_t>(updateEventIndex + 1), |
| 625 GetAndResetSentEventCount()); | 625 GetAndResetSentEventCount()); |
| 626 } | 626 } |
| 627 | 627 |
| 628 INSTANTIATE_TEST_CASE_P(MouseWheelEventQueueTests, | 628 INSTANTIATE_TEST_CASE_P(MouseWheelEventQueueTests, |
| 629 MouseWheelEventQueueTest, | 629 MouseWheelEventQueueTest, |
| 630 testing::Bool()); | 630 testing::Bool()); |
| 631 | 631 |
| 632 } // namespace content | 632 } // namespace content |
| OLD | NEW |