Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1853)

Unified Diff: content/renderer/input/main_thread_event_queue_unittest.cc

Issue 2765583002: Teach main thread event queue about closures. (Closed)
Patch Set: Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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;

Powered by Google App Engine
This is Rietveld 408576698