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 5fbf8b0a7cb441ec3a37725df1594ad7b3708249..0b12ad923591b749fd46a29ce35ffb6058803f6d 100644 |
| --- a/content/renderer/input/main_thread_event_queue_unittest.cc |
| +++ b/content/renderer/input/main_thread_event_queue_unittest.cc |
| @@ -259,4 +259,77 @@ TEST_F(MainThreadEventQueueTest, InterleavedEvents) { |
| } |
| } |
| +TEST_F(MainThreadEventQueueTest, BlockingTouchesDuringFling) { |
| + SyntheticWebTouchEvent kEvents[1]; |
| + kEvents[0].PressPoint(10, 10); |
| + queue_->set_is_flinging(true); |
| + |
| + EXPECT_FALSE(main_task_runner_->HasPendingTask()); |
| + EXPECT_EQ(0u, event_queue().size()); |
| + queue_->HandleEvent(&kEvents[0], ui::LatencyInfo(), DISPATCH_TYPE_BLOCKING, |
| + INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
| + EXPECT_EQ(1u, event_queue().size()); |
| + EXPECT_TRUE(main_task_runner_->HasPendingTask()); |
| + main_task_runner_->RunUntilIdle(); |
| + EXPECT_FALSE(main_task_runner_->HasPendingTask()); |
| + EXPECT_EQ(0u, event_queue().size()); |
| + EXPECT_EQ(1u, handled_events_.size()); |
| + EXPECT_EQ(kEvents[0].size, handled_events_.at(0)->size); |
| + EXPECT_EQ(kEvents[0].type, handled_events_.at(0)->type); |
| + const WebTouchEvent* last_touch_event = |
| + static_cast<const WebTouchEvent*>(handled_events_.at(0).get()); |
| + kEvents[0].dispatchedDuringFling = true; |
| + kEvents[0].dispatchType = |
| + WebInputEvent::DispatchType::ListenersForcedNonBlockingPassiveDueToFling; |
| + EXPECT_EQ(kEvents[0], *last_touch_event); |
| + |
| + kEvents[0].MovePoint(0, 30, 30); |
| + queue_->HandleEvent(&kEvents[0], ui::LatencyInfo(), DISPATCH_TYPE_BLOCKING, |
| + INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
| + EXPECT_EQ(1u, event_queue().size()); |
| + EXPECT_TRUE(main_task_runner_->HasPendingTask()); |
| + main_task_runner_->RunUntilIdle(); |
| + EXPECT_FALSE(main_task_runner_->HasPendingTask()); |
| + EXPECT_EQ(0u, event_queue().size()); |
| + EXPECT_EQ(2u, handled_events_.size()); |
| + EXPECT_EQ(kEvents[0].size, handled_events_.at(1)->size); |
| + EXPECT_EQ(kEvents[0].type, handled_events_.at(1)->type); |
| + last_touch_event = |
| + static_cast<const WebTouchEvent*>(handled_events_.at(1).get()); |
| + kEvents[0].dispatchedDuringFling = true; |
| + kEvents[0].dispatchType = |
| + WebInputEvent::DispatchType::ListenersForcedNonBlockingPassiveDueToFling; |
| + EXPECT_EQ(kEvents[0], *last_touch_event); |
| + |
| + kEvents[0].MovePoint(0, 50, 50); |
| + queue_->HandleEvent(&kEvents[0], ui::LatencyInfo(), DISPATCH_TYPE_BLOCKING, |
| + INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
| + EXPECT_EQ(1u, event_queue().size()); |
| + EXPECT_TRUE(main_task_runner_->HasPendingTask()); |
| + main_task_runner_->RunUntilIdle(); |
| + EXPECT_FALSE(main_task_runner_->HasPendingTask()); |
| + EXPECT_EQ(0u, event_queue().size()); |
| + EXPECT_EQ(3u, handled_events_.size()); |
| + EXPECT_EQ(kEvents[0].size, handled_events_.at(2)->size); |
| + EXPECT_EQ(kEvents[0].type, handled_events_.at(2)->type); |
| + last_touch_event = |
|
dtapuska
2016/08/10 14:47:42
What are you expecting to have dispatchedDuringFli
|
| + static_cast<const WebTouchEvent*>(handled_events_.at(2).get()); |
| + EXPECT_EQ(kEvents[0], *last_touch_event); |
| + |
| + kEvents[0].ReleasePoint(0); |
| + queue_->HandleEvent(&kEvents[0], ui::LatencyInfo(), DISPATCH_TYPE_BLOCKING, |
| + INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
| + EXPECT_EQ(1u, event_queue().size()); |
| + EXPECT_TRUE(main_task_runner_->HasPendingTask()); |
| + main_task_runner_->RunUntilIdle(); |
| + EXPECT_FALSE(main_task_runner_->HasPendingTask()); |
| + EXPECT_EQ(0u, event_queue().size()); |
| + EXPECT_EQ(4u, handled_events_.size()); |
| + EXPECT_EQ(kEvents[0].size, handled_events_.at(3)->size); |
| + EXPECT_EQ(kEvents[0].type, handled_events_.at(3)->type); |
| + last_touch_event = |
| + static_cast<const WebTouchEvent*>(handled_events_.at(3).get()); |
| + EXPECT_EQ(kEvents[0], *last_touch_event); |
| +} |
| + |
| } // namespace content |