| Index: content/renderer/input/main_thread_event_queue_unittest.cc
|
| diff --git a/content/renderer/input/main_thread_event_queue_unittest.cc b/content/renderer/input/main_thread_event_queue_unittest.cc
|
| index 21771186dc1df58896825851333af182ac9a73c5..2d873ffc04452b0aaf2e6747f1ddcc39fc4d3d4e 100644
|
| --- a/content/renderer/input/main_thread_event_queue_unittest.cc
|
| +++ b/content/renderer/input/main_thread_event_queue_unittest.cc
|
| @@ -108,7 +108,7 @@ class MainThreadEventQueueTest : public testing::TestWithParam<unsigned>,
|
|
|
| void NeedsMainFrame(int routing_id) override { needs_main_frame_ = true; }
|
|
|
| - WebInputEventQueue<EventWithDispatchType>& event_queue() {
|
| + MainThreadEventQueueTaskList& event_queue() {
|
| return queue_->shared_state_.events_;
|
| }
|
|
|
| @@ -440,9 +440,10 @@ TEST_P(MainThreadEventQueueTest, RafAlignedMouseInput) {
|
| WebMouseEvent mouseUp =
|
| SyntheticWebMouseEventBuilder::Build(WebInputEvent::MouseUp, 10, 10, 0);
|
|
|
| - WebMouseWheelEvent wheelEvents[2] = {
|
| + WebMouseWheelEvent wheelEvents[3] = {
|
| SyntheticWebMouseWheelEventBuilder::Build(10, 10, 0, 53, 0, false),
|
| SyntheticWebMouseWheelEventBuilder::Build(20, 20, 0, 53, 0, false),
|
| + SyntheticWebMouseWheelEventBuilder::Build(20, 20, 0, 53, 1, false),
|
| };
|
|
|
| EXPECT_FALSE(main_task_runner_->HasPendingTask());
|
| @@ -465,20 +466,35 @@ TEST_P(MainThreadEventQueueTest, RafAlignedMouseInput) {
|
| EXPECT_EQ(0u, event_queue().size());
|
| RunPendingTasksWithSimulatedRaf();
|
|
|
| - // Simulate the rAF running before the PostTask occurs. The first rAF
|
| - // shouldn't do anything.
|
| + // Simulate the rAF running before the PostTask occurs. The rAF
|
| + // will consume everything.
|
| HandleEvent(mouseDown, INPUT_EVENT_ACK_STATE_SET_NON_BLOCKING);
|
| HandleEvent(wheelEvents[0], INPUT_EVENT_ACK_STATE_SET_NON_BLOCKING);
|
| EXPECT_EQ(2u, event_queue().size());
|
| EXPECT_TRUE(needs_main_frame_);
|
| RunSimulatedRafOnce();
|
| EXPECT_FALSE(needs_main_frame_);
|
| - EXPECT_EQ(2u, event_queue().size());
|
| + EXPECT_EQ(0u, event_queue().size());
|
| main_task_runner_->RunUntilIdle();
|
| +
|
| + // Simulate event consumption but no rAF signal. The mouse wheel events
|
| + // should still be in the queue.
|
| + handled_events_.clear();
|
| + HandleEvent(mouseDown, INPUT_EVENT_ACK_STATE_SET_NON_BLOCKING);
|
| + HandleEvent(wheelEvents[0], INPUT_EVENT_ACK_STATE_SET_NON_BLOCKING);
|
| + HandleEvent(mouseUp, INPUT_EVENT_ACK_STATE_SET_NON_BLOCKING);
|
| + HandleEvent(wheelEvents[2], INPUT_EVENT_ACK_STATE_SET_NON_BLOCKING);
|
| + HandleEvent(wheelEvents[0], INPUT_EVENT_ACK_STATE_SET_NON_BLOCKING);
|
| + EXPECT_EQ(5u, event_queue().size());
|
| EXPECT_TRUE(needs_main_frame_);
|
| - EXPECT_EQ(1u, event_queue().size());
|
| - RunPendingTasksWithSimulatedRaf();
|
| - EXPECT_EQ(0u, event_queue().size());
|
| + main_task_runner_->RunUntilIdle();
|
| + EXPECT_TRUE(needs_main_frame_);
|
| + EXPECT_EQ(2u, event_queue().size());
|
| + RunSimulatedRafOnce();
|
| + EXPECT_EQ(wheelEvents[2].modifiers(),
|
| + handled_events_.at(3).event().modifiers());
|
| + EXPECT_EQ(wheelEvents[0].modifiers(),
|
| + handled_events_.at(4).event().modifiers());
|
| }
|
|
|
| TEST_P(MainThreadEventQueueTest, RafAlignedTouchInput) {
|
| @@ -510,17 +526,28 @@ TEST_P(MainThreadEventQueueTest, RafAlignedTouchInput) {
|
| EXPECT_EQ(0u, event_queue().size());
|
| RunPendingTasksWithSimulatedRaf();
|
|
|
| - // Simulate the rAF running before the PostTask occurs. The first rAF
|
| - // shouldn't do anything.
|
| + // Simulate the rAF running before the PostTask occurs. The rAF
|
| + // will consume everything.
|
| HandleEvent(kEvents[0], INPUT_EVENT_ACK_STATE_SET_NON_BLOCKING);
|
| HandleEvent(kEvents[1], INPUT_EVENT_ACK_STATE_SET_NON_BLOCKING);
|
| EXPECT_EQ(2u, event_queue().size());
|
| EXPECT_TRUE(needs_main_frame_);
|
| RunSimulatedRafOnce();
|
| EXPECT_FALSE(needs_main_frame_);
|
| - EXPECT_EQ(2u, event_queue().size());
|
| - RunPendingTasksWithSimulatedRaf();
|
| EXPECT_EQ(0u, event_queue().size());
|
| + main_task_runner_->RunUntilIdle();
|
| +
|
| + // Simulate event consumption but no rAF signal. The touch events
|
| + // should still be in the queue.
|
| + handled_events_.clear();
|
| + HandleEvent(kEvents[0], INPUT_EVENT_ACK_STATE_SET_NON_BLOCKING);
|
| + HandleEvent(kEvents[1], INPUT_EVENT_ACK_STATE_SET_NON_BLOCKING);
|
| + EXPECT_EQ(2u, event_queue().size());
|
| + EXPECT_TRUE(needs_main_frame_);
|
| + main_task_runner_->RunUntilIdle();
|
| + EXPECT_TRUE(needs_main_frame_);
|
| + EXPECT_EQ(1u, event_queue().size());
|
| + RunSimulatedRafOnce();
|
|
|
| // Simulate the touch move being discrete
|
| kEvents[0].touchStartOrFirstTouchMove = true;
|
|
|