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 4e00051f40a710ee94f55494cd7f71890d459c28..6b82327c7b1591da11e694c38548f133d7415e7d 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 |
@@ -568,6 +568,17 @@ class RendererSchedulerImplTest : public testing::Test { |
scheduler_->seqlock_queueing_time_estimator_.seqlock.WriteEnd(); |
} |
+ void RunSlowCompositorTask() { |
+ // Run a long compositor task so that compositor tasks appear to be running |
+ // slow and thus compositor tasks will not be prioritized. |
+ compositor_task_runner_->PostTask( |
+ FROM_HERE, |
+ base::Bind(&RendererSchedulerImplTest::SimulateMainThreadCompositorTask, |
+ base::Unretained(this), |
+ base::TimeDelta::FromMilliseconds(1000))); |
+ RunUntilIdle(); |
+ } |
+ |
// Helper for posting several tasks of specific types. |task_descriptor| is a |
// string with space delimited task identifiers. The first letter of each |
// task identifier specifies the task type: |
@@ -836,6 +847,21 @@ TEST_F(RendererSchedulerImplTest, TestDefaultPolicy) { |
EnableIdleTasks(); |
RunUntilIdle(); |
EXPECT_THAT(run_order, |
+ testing::ElementsAre(std::string("C1"), std::string("C2"), |
+ std::string("L1"), std::string("D1"), |
+ std::string("D2"), std::string("I1"))); |
+ EXPECT_EQ(RendererSchedulerImpl::UseCase::NONE, CurrentUseCase()); |
+} |
+ |
+TEST_F(RendererSchedulerImplTest, TestDefaultPolicyWithSlowCompositor) { |
+ RunSlowCompositorTask(); |
+ |
+ std::vector<std::string> run_order; |
+ PostTestTasks(&run_order, "L1 I1 D1 C1 D2 C2"); |
+ |
+ EnableIdleTasks(); |
+ RunUntilIdle(); |
+ EXPECT_THAT(run_order, |
testing::ElementsAre(std::string("L1"), std::string("D1"), |
std::string("C1"), std::string("D2"), |
std::string("C2"), std::string("I1"))); |
@@ -1257,6 +1283,8 @@ TEST_F(RendererSchedulerImplTest, DISABLED_LoadingUseCase) { |
TEST_F(RendererSchedulerImplTest, |
EventConsumedOnCompositorThread_IgnoresMouseMove_WhenMouseUp) { |
+ RunSlowCompositorTask(); |
+ |
std::vector<std::string> run_order; |
PostTestTasks(&run_order, "I1 D1 C1 D2 C2"); |
@@ -1275,6 +1303,8 @@ TEST_F(RendererSchedulerImplTest, |
TEST_F(RendererSchedulerImplTest, |
EventForwardedToMainThread_IgnoresMouseMove_WhenMouseUp) { |
+ RunSlowCompositorTask(); |
+ |
std::vector<std::string> run_order; |
PostTestTasks(&run_order, "I1 D1 C1 D2 C2"); |
@@ -1495,6 +1525,8 @@ TEST_F( |
TEST_F(RendererSchedulerImplTest, |
EventConsumedOnCompositorThread_IgnoresKeyboardEvents) { |
+ RunSlowCompositorTask(); |
+ |
std::vector<std::string> run_order; |
PostTestTasks(&run_order, "I1 D1 C1 D2 C2"); |
@@ -1513,6 +1545,8 @@ TEST_F(RendererSchedulerImplTest, |
TEST_F(RendererSchedulerImplTest, |
EventForwardedToMainThread_IgnoresKeyboardEvents) { |
+ RunSlowCompositorTask(); |
+ |
std::vector<std::string> run_order; |
PostTestTasks(&run_order, "I1 D1 C1 D2 C2"); |
@@ -2382,7 +2416,7 @@ TEST_F(RendererSchedulerImplTest, SuspendRenderer) { |
EnableIdleTasks(); |
RunUntilIdle(); |
EXPECT_THAT(run_order, |
- testing::ElementsAre(std::string("D1"), std::string("C1"), |
+ testing::ElementsAre(std::string("C1"), std::string("D1"), |
std::string("I1"))); |
// The rest queued tasks fire when the tab goes foregrounded. |
@@ -2414,7 +2448,7 @@ TEST_F(RendererSchedulerImplTest, ResumeRenderer) { |
EnableIdleTasks(); |
RunUntilIdle(); |
EXPECT_THAT(run_order, |
- testing::ElementsAre(std::string("D1"), std::string("C1"), |
+ testing::ElementsAre(std::string("C1"), std::string("D1"), |
std::string("I1"))); |
// The rest queued tasks fire when the renderer is resumed. |
@@ -2432,7 +2466,7 @@ TEST_F(RendererSchedulerImplTest, ResumeRenderer) { |
EnableIdleTasks(); |
RunUntilIdle(); |
EXPECT_THAT(run_order, |
- testing::ElementsAre(std::string("D2"), std::string("C2"), |
+ testing::ElementsAre(std::string("C2"), std::string("D2"), |
std::string("I2"))); |
// The rest queued tasks fire when the renderer is resumed. |