Chromium Code Reviews| 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..80c30a8e9ac08f20b48138ece53db4695dcb979c 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() { |
| + WebInputEventQueue<QueuedItem>& 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,33 @@ 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(wheelEvents[2], INPUT_EVENT_ACK_STATE_SET_NON_BLOCKING); |
|
mustaq
2017/03/24 15:31:18
Wondering why wheelEvent[2] not [1]? Event |modifi
dtapuska
2017/03/24 20:16:35
Because 0 and 1 will get coalesced together. The m
|
| + EXPECT_EQ(3u, 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[0].modifiers(), |
| + handled_events_.at(1).event().modifiers()); |
| + EXPECT_EQ(wheelEvents[2].modifiers(), |
| + handled_events_.at(2).event().modifiers()); |
|
mustaq
2017/03/24 15:31:18
Please add a longer raf/non-raf queued sequence, t
dtapuska
2017/03/24 20:16:37
Done.
|
| } |
| TEST_P(MainThreadEventQueueTest, RafAlignedTouchInput) { |
| @@ -510,17 +524,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 mouse wheel events |
|
mustaq
2017/03/24 15:31:18
s/mouse wheel events/touchmove event/.
dtapuska
2017/03/24 20:16:36
Done.
|
| + // 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; |