| Index: content/renderer/scheduler/task_queue_manager_unittest.cc
|
| diff --git a/content/renderer/scheduler/task_queue_manager_unittest.cc b/content/renderer/scheduler/task_queue_manager_unittest.cc
|
| index a6c13478c7f6353cb1899bcd6903bab1be10fe65..34789f2754bc622908a46e96ba27fd16c0e25380 100644
|
| --- a/content/renderer/scheduler/task_queue_manager_unittest.cc
|
| +++ b/content/renderer/scheduler/task_queue_manager_unittest.cc
|
| @@ -480,5 +480,36 @@ TEST_F(TaskQueueManagerTest, PostFromNestedRunloop) {
|
| EXPECT_THAT(run_order, ElementsAre(0, 2, 1));
|
| }
|
|
|
| +TEST_F(TaskQueueManagerTest, WorkBatching) {
|
| + Initialize(1u);
|
| +
|
| + manager_->SetWorkBatchSize(2);
|
| +
|
| + std::vector<int> run_order;
|
| + scoped_refptr<base::SingleThreadTaskRunner> runner =
|
| + manager_->TaskRunnerForQueue(0);
|
| +
|
| + selector_->AppendQueueToService(0);
|
| + selector_->AppendQueueToService(0);
|
| + selector_->AppendQueueToService(0);
|
| + selector_->AppendQueueToService(0);
|
| +
|
| + runner->PostTask(FROM_HERE, base::Bind(&TestTask, 1, &run_order));
|
| + runner->PostTask(FROM_HERE, base::Bind(&TestTask, 2, &run_order));
|
| + runner->PostTask(FROM_HERE, base::Bind(&TestTask, 3, &run_order));
|
| + runner->PostTask(FROM_HERE, base::Bind(&TestTask, 4, &run_order));
|
| +
|
| + // Running one task in the host message loop should cause two posted tasks to
|
| + // get executed.
|
| + EXPECT_EQ(test_task_runner_->GetPendingTasks().size(), 1u);
|
| + test_task_runner_->RunPendingTasks();
|
| + EXPECT_THAT(run_order, ElementsAre(1, 2));
|
| +
|
| + // The second task runs the remaining two posted tasks.
|
| + EXPECT_EQ(test_task_runner_->GetPendingTasks().size(), 1u);
|
| + test_task_runner_->RunPendingTasks();
|
| + EXPECT_THAT(run_order, ElementsAre(1, 2, 3, 4));
|
| +}
|
| +
|
| } // namespace
|
| } // namespace content
|
|
|