| 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..4fde6b96826cc0e294710994772bc8e7443c606f 100644
|
| --- a/content/renderer/input/main_thread_event_queue_unittest.cc
|
| +++ b/content/renderer/input/main_thread_event_queue_unittest.cc
|
| @@ -154,6 +154,7 @@ TEST_F(MainThreadEventQueueTest, NonBlockingTouch) {
|
| static_cast<const WebTouchEvent*>(handled_events_.at(0).get());
|
| kEvents[0].dispatchType =
|
| WebInputEvent::DispatchType::ListenersNonBlockingPassive;
|
| + kEvents[0].touchStartOrFirstTouchMove = true;
|
| EXPECT_EQ(kEvents[0], *last_touch_event);
|
|
|
| EXPECT_EQ(kEvents[1].size, handled_events_.at(1)->size);
|
| @@ -162,6 +163,7 @@ TEST_F(MainThreadEventQueueTest, NonBlockingTouch) {
|
| static_cast<const WebTouchEvent*>(handled_events_.at(1).get());
|
| kEvents[1].dispatchType =
|
| WebInputEvent::DispatchType::ListenersNonBlockingPassive;
|
| + kEvents[1].touchStartOrFirstTouchMove = true;
|
| EXPECT_EQ(kEvents[1], *last_touch_event);
|
|
|
| EXPECT_EQ(kEvents[2].size, handled_events_.at(1)->size);
|
| @@ -253,10 +255,90 @@ TEST_F(MainThreadEventQueueTest, InterleavedEvents) {
|
| static_cast<const WebTouchEvent*>(handled_events_.at(1).get());
|
| WebTouchEvent coalesced_event = kTouchEvents[0];
|
| internal::Coalesce(kTouchEvents[1], &coalesced_event);
|
| - coalesced_event.dispatchType =
|
| - WebInputEvent::DispatchType::ListenersNonBlockingPassive;
|
| + coalesced_event.dispatchType = WebInputEvent::ListenersNonBlockingPassive;
|
| EXPECT_EQ(coalesced_event, *last_touch_event);
|
| }
|
| }
|
|
|
| +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].touchStartOrFirstTouchMove = true;
|
| + kEvents[0].dispatchType =
|
| + WebInputEvent::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].touchStartOrFirstTouchMove = true;
|
| + kEvents[0].dispatchType =
|
| + WebInputEvent::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);
|
| + EXPECT_TRUE(kEvents[0].dispatchedDuringFling);
|
| + EXPECT_EQ(kEvents[0].dispatchType, WebInputEvent::Blocking);
|
| + last_touch_event =
|
| + static_cast<const WebTouchEvent*>(handled_events_.at(2).get());
|
| + kEvents[0].touchStartOrFirstTouchMove = false;
|
| + 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);
|
| + EXPECT_TRUE(kEvents[0].dispatchedDuringFling);
|
| + EXPECT_EQ(kEvents[0].dispatchType, WebInputEvent::Blocking);
|
| + last_touch_event =
|
| + static_cast<const WebTouchEvent*>(handled_events_.at(3).get());
|
| + kEvents[0].touchStartOrFirstTouchMove = false;
|
| + EXPECT_EQ(kEvents[0], *last_touch_event);
|
| +}
|
| +
|
| } // namespace content
|
|
|