Index: third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl_unittest.cc |
diff --git a/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl_unittest.cc b/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl_unittest.cc |
index ae84420b1a8035020d57d07dcc5f9316e5429543..a70b8f30876449ed25940e42acabea7aec04c241 100644 |
--- a/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl_unittest.cc |
+++ b/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl_unittest.cc |
@@ -589,11 +589,6 @@ class RendererSchedulerImplTest : public testing::Test { |
RendererSchedulerImpl::kEndIdleWhenHiddenDelayMillis); |
} |
- static base::TimeDelta idle_period_starvation_threshold() { |
- return base::TimeDelta::FromMilliseconds( |
- RendererSchedulerImpl::kIdlePeriodStarvationThresholdMillis); |
- } |
- |
static base::TimeDelta suspend_timers_when_backgrounded_delay() { |
return base::TimeDelta::FromMilliseconds( |
RendererSchedulerImpl::kSuspendTimersWhenBackgroundedDelayMillis); |
@@ -1258,17 +1253,21 @@ TEST_F(RendererSchedulerImplTest, |
std::vector<std::string> run_order; |
PostTestTasks(&run_order, "I1 D1 C1 D2 C2"); |
+ // Note that currently the compositor will never consume mouse move events, |
+ // but this test reflects what should happen if that was the case. |
EnableIdleTasks(); |
scheduler_->DidHandleInputEventOnCompositorThread( |
FakeInputEvent(blink::WebInputEvent::MouseMove, |
blink::WebInputEvent::LeftButtonDown), |
RendererScheduler::InputEventState::EVENT_CONSUMED_BY_COMPOSITOR); |
RunUntilIdle(); |
- // Note compositor tasks are prioritized. |
+ // Note compositor tasks deprioritized. |
+ EXPECT_EQ(RendererSchedulerImpl::UseCase::COMPOSITOR_GESTURE, |
+ CurrentUseCase()); |
EXPECT_THAT(run_order, |
- testing::ElementsAre(std::string("C1"), std::string("C2"), |
- std::string("D1"), std::string("D2"), |
- std::string("I1"))); |
+ testing::ElementsAre(std::string("D1"), std::string("D2"), |
+ std::string("I1"), std::string("C1"), |
+ std::string("C2"))); |
} |
TEST_F(RendererSchedulerImplTest, |
@@ -1291,6 +1290,42 @@ TEST_F(RendererSchedulerImplTest, |
blink::WebInputEvent::MouseMove, blink::WebInputEvent::LeftButtonDown)); |
} |
+TEST_F(RendererSchedulerImplTest, |
+ EventForwardedToMainThread_MouseMove_WhenMouseDown_AfterMouseWheel) { |
+ // Simulate a main thread driven mouse wheel scroll gesture. |
+ SimulateMainThreadGestureStart(TouchEventPolicy::SEND_TOUCH_START, |
+ blink::WebInputEvent::GestureScrollUpdate); |
+ RunUntilIdle(); |
+ EXPECT_FALSE(TouchStartExpectedSoon()); |
+ EXPECT_EQ(RendererSchedulerImpl::UseCase::MAIN_THREAD_GESTURE, |
+ CurrentUseCase()); |
+ |
+ // Now start a main thread mouse touch gesture. It should be detected as main |
+ // thread custom input handling. |
+ std::vector<std::string> run_order; |
+ PostTestTasks(&run_order, "I1 D1 C1 D2 C2"); |
+ EnableIdleTasks(); |
+ |
+ scheduler_->DidHandleInputEventOnCompositorThread( |
+ FakeInputEvent(blink::WebInputEvent::MouseDown, |
+ blink::WebInputEvent::LeftButtonDown), |
+ RendererScheduler::InputEventState::EVENT_FORWARDED_TO_MAIN_THREAD); |
+ scheduler_->DidHandleInputEventOnCompositorThread( |
+ FakeInputEvent(blink::WebInputEvent::MouseMove, |
+ blink::WebInputEvent::LeftButtonDown), |
+ RendererScheduler::InputEventState::EVENT_FORWARDED_TO_MAIN_THREAD); |
+ RunUntilIdle(); |
+ |
+ EXPECT_EQ(RendererSchedulerImpl::UseCase::MAIN_THREAD_CUSTOM_INPUT_HANDLING, |
+ CurrentUseCase()); |
+ |
+ // Note compositor tasks are prioritized. |
+ EXPECT_THAT(run_order, |
+ testing::ElementsAre(std::string("C1"), std::string("C2"), |
+ std::string("D1"), std::string("D2"), |
+ std::string("I1"))); |
+} |
+ |
TEST_F(RendererSchedulerImplTest, EventConsumedOnCompositorThread_MouseWheel) { |
std::vector<std::string> run_order; |
PostTestTasks(&run_order, "I1 D1 C1 D2 C2"); |