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; |