OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "content/renderer/scheduler/task_queue_manager.h" | 5 #include "content/renderer/scheduler/task_queue_manager.h" |
6 | 6 |
7 #include "base/test/test_simple_task_runner.h" | 7 #include "base/test/test_simple_task_runner.h" |
8 #include "base/threading/thread.h" | 8 #include "base/threading/thread.h" |
9 #include "content/renderer/scheduler/task_queue_selector.h" | 9 #include "content/renderer/scheduler/task_queue_selector.h" |
10 #include "testing/gmock/include/gmock/gmock.h" | 10 #include "testing/gmock/include/gmock/gmock.h" |
(...skipping 462 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
473 runner->PostTask( | 473 runner->PostTask( |
474 FROM_HERE, base::Bind(&PostFromNestedRunloop, message_loop_.get(), runner, | 474 FROM_HERE, base::Bind(&PostFromNestedRunloop, message_loop_.get(), runner, |
475 base::Unretained(&tasks_to_post_from_nested_loop))); | 475 base::Unretained(&tasks_to_post_from_nested_loop))); |
476 runner->PostTask(FROM_HERE, base::Bind(&TestTask, 2, &run_order)); | 476 runner->PostTask(FROM_HERE, base::Bind(&TestTask, 2, &run_order)); |
477 | 477 |
478 message_loop_->RunUntilIdle(); | 478 message_loop_->RunUntilIdle(); |
479 | 479 |
480 EXPECT_THAT(run_order, ElementsAre(0, 2, 1)); | 480 EXPECT_THAT(run_order, ElementsAre(0, 2, 1)); |
481 } | 481 } |
482 | 482 |
| 483 TEST_F(TaskQueueManagerTest, WorkBatching) { |
| 484 Initialize(1u); |
| 485 |
| 486 manager_->SetWorkBatchSize(2); |
| 487 |
| 488 std::vector<int> run_order; |
| 489 scoped_refptr<base::SingleThreadTaskRunner> runner = |
| 490 manager_->TaskRunnerForQueue(0); |
| 491 |
| 492 selector_->AppendQueueToService(0); |
| 493 selector_->AppendQueueToService(0); |
| 494 selector_->AppendQueueToService(0); |
| 495 selector_->AppendQueueToService(0); |
| 496 |
| 497 runner->PostTask(FROM_HERE, base::Bind(&TestTask, 1, &run_order)); |
| 498 runner->PostTask(FROM_HERE, base::Bind(&TestTask, 2, &run_order)); |
| 499 runner->PostTask(FROM_HERE, base::Bind(&TestTask, 3, &run_order)); |
| 500 runner->PostTask(FROM_HERE, base::Bind(&TestTask, 4, &run_order)); |
| 501 |
| 502 // Running one task in the host message loop should cause two posted tasks to |
| 503 // get executed. |
| 504 EXPECT_EQ(test_task_runner_->GetPendingTasks().size(), 1u); |
| 505 test_task_runner_->RunPendingTasks(); |
| 506 EXPECT_THAT(run_order, ElementsAre(1, 2)); |
| 507 |
| 508 // The second task runs the remaining two posted tasks. |
| 509 EXPECT_EQ(test_task_runner_->GetPendingTasks().size(), 1u); |
| 510 test_task_runner_->RunPendingTasks(); |
| 511 EXPECT_THAT(run_order, ElementsAre(1, 2, 3, 4)); |
| 512 } |
| 513 |
483 } // namespace | 514 } // namespace |
484 } // namespace content | 515 } // namespace content |
OLD | NEW |