| Index: components/scheduler/base/task_queue_manager_unittest.cc | 
| diff --git a/components/scheduler/base/task_queue_manager_unittest.cc b/components/scheduler/base/task_queue_manager_unittest.cc | 
| index 6396d36238b0ad4580534d4d77c4f6c8076c8189..34ddc13935e0a1fd78c74a15d71cd61d05727602 100644 | 
| --- a/components/scheduler/base/task_queue_manager_unittest.cc | 
| +++ b/components/scheduler/base/task_queue_manager_unittest.cc | 
| @@ -22,6 +22,7 @@ | 
| #include "testing/gmock/include/gmock/gmock.h" | 
|  | 
| using testing::ElementsAre; | 
| +using testing::ElementsAreArray; | 
| using testing::_; | 
|  | 
| namespace scheduler { | 
| @@ -1087,39 +1088,35 @@ void ExpensiveTestTask(int value, | 
| clock->Advance(base::TimeDelta::FromMilliseconds(1)); | 
| } | 
|  | 
| -TEST_F(TaskQueueManagerTest, ImmediateAndDelayedTaskRoundRobbin) { | 
| +TEST_F(TaskQueueManagerTest, ImmediateAndDelayedTaskInterleaving) { | 
| Initialize(1u); | 
|  | 
| std::vector<int> run_order; | 
| base::TimeDelta delay = base::TimeDelta::FromMilliseconds(10); | 
| -  runners_[0]->PostDelayedTask( | 
| -      FROM_HERE, base::Bind(&ExpensiveTestTask, 10, now_src_.get(), &run_order), | 
| -      delay); | 
| -  runners_[0]->PostDelayedTask( | 
| -      FROM_HERE, base::Bind(&ExpensiveTestTask, 11, now_src_.get(), &run_order), | 
| -      delay); | 
| -  runners_[0]->PostDelayedTask( | 
| -      FROM_HERE, base::Bind(&ExpensiveTestTask, 12, now_src_.get(), &run_order), | 
| -      delay); | 
| -  runners_[0]->PostDelayedTask( | 
| -      FROM_HERE, base::Bind(&ExpensiveTestTask, 13, now_src_.get(), &run_order), | 
| -      delay); | 
| +  for (int i = 10; i < 19; i++) { | 
| +    runners_[0]->PostDelayedTask( | 
| +        FROM_HERE, | 
| +        base::Bind(&ExpensiveTestTask, i, now_src_.get(), &run_order), | 
| +        delay); | 
| +  } | 
|  | 
| test_task_runner_->RunForPeriod(delay); | 
|  | 
| -  runners_[0]->PostTask( | 
| -      FROM_HERE, base::Bind(&ExpensiveTestTask, 0, now_src_.get(), &run_order)); | 
| -  runners_[0]->PostTask( | 
| -      FROM_HERE, base::Bind(&ExpensiveTestTask, 1, now_src_.get(), &run_order)); | 
| -  runners_[0]->PostTask( | 
| -      FROM_HERE, base::Bind(&ExpensiveTestTask, 2, now_src_.get(), &run_order)); | 
| -  runners_[0]->PostTask( | 
| -      FROM_HERE, base::Bind(&ExpensiveTestTask, 3, now_src_.get(), &run_order)); | 
| +  for (int i = 0; i < 9; i++) { | 
| +    runners_[0]->PostTask( | 
| +        FROM_HERE, | 
| +        base::Bind(&ExpensiveTestTask, i, now_src_.get(), &run_order)); | 
| +  } | 
|  | 
| test_task_runner_->SetAutoAdvanceNowToPendingTasks(true); | 
| test_task_runner_->RunUntilIdle(); | 
|  | 
| -  EXPECT_THAT(run_order, ElementsAre(10, 0, 11, 1, 12, 2, 13, 3)); | 
| +  // Delayed tasks are not allowed to starve out immediate work which is why | 
| +  // some of the immediate tasks run out of order. | 
| +  int expected_run_order[] = { | 
| +    10, 11, 12, 13, 0, 14, 15, 16, 1, 17, 18, 2, 3, 4, 5, 6, 7, 8 | 
| +  }; | 
| +  EXPECT_THAT(run_order, ElementsAreArray(expected_run_order)); | 
| } | 
|  | 
| TEST_F(TaskQueueManagerTest, | 
| @@ -1593,7 +1590,8 @@ bool ShouldExit(QuadraticTask* quadratic_task, LinearTask* linear_task) { | 
|  | 
| }  // namespace | 
|  | 
| -TEST_F(TaskQueueManagerTest, DelayedTasksDontStarveNonDelayedWork_SameQueue) { | 
| +TEST_F(TaskQueueManagerTest, | 
| +       DelayedTasksDontBadlyStarveNonDelayedWork_SameQueue) { | 
| Initialize(1u); | 
|  | 
| QuadraticTask quadratic_delayed_task( | 
| @@ -1614,7 +1612,7 @@ TEST_F(TaskQueueManagerTest, DelayedTasksDontStarveNonDelayedWork_SameQueue) { | 
| double ratio = static_cast<double>(linear_immediate_task.count()) / | 
| static_cast<double>(quadratic_delayed_task.count()); | 
|  | 
| -  EXPECT_GT(ratio, 0.9); | 
| +  EXPECT_GT(ratio, 0.333); | 
| EXPECT_LT(ratio, 1.1); | 
| } | 
|  | 
| @@ -1647,7 +1645,7 @@ TEST_F(TaskQueueManagerTest, ImmediateWorkCanStarveDelayedTasks_SameQueue) { | 
| } | 
|  | 
| TEST_F(TaskQueueManagerTest, | 
| -       DelayedTasksDontStarveNonDelayedWork_DifferentQueue) { | 
| +       DelayedTasksDontBadlyStarveNonDelayedWork_DifferentQueue) { | 
| Initialize(2u); | 
|  | 
| QuadraticTask quadratic_delayed_task( | 
| @@ -1668,7 +1666,7 @@ TEST_F(TaskQueueManagerTest, | 
| double ratio = static_cast<double>(linear_immediate_task.count()) / | 
| static_cast<double>(quadratic_delayed_task.count()); | 
|  | 
| -  EXPECT_GT(ratio, 0.9); | 
| +  EXPECT_GT(ratio, 0.333); | 
| EXPECT_LT(ratio, 1.1); | 
| } | 
|  | 
|  |