Chromium Code Reviews| 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 "cc/test/test_now_source.h" | 9 #include "cc/test/test_now_source.h" |
| 10 #include "content/renderer/scheduler/task_queue_selector.h" | 10 #include "content/renderer/scheduler/task_queue_selector.h" |
| (...skipping 564 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 575 // the work batch is interrupted by the pending delayed task. | 575 // the work batch is interrupted by the pending delayed task. |
| 576 EXPECT_EQ(test_task_runner_->GetPendingTasks().size(), 2u); | 576 EXPECT_EQ(test_task_runner_->GetPendingTasks().size(), 2u); |
| 577 test_task_runner_->RunPendingTasks(); | 577 test_task_runner_->RunPendingTasks(); |
| 578 EXPECT_THAT(run_order, ElementsAre(2)); | 578 EXPECT_THAT(run_order, ElementsAre(2)); |
| 579 | 579 |
| 580 // Running all remaining tasks should execute both pending tasks. | 580 // Running all remaining tasks should execute both pending tasks. |
| 581 test_task_runner_->RunUntilIdle(); | 581 test_task_runner_->RunUntilIdle(); |
| 582 EXPECT_THAT(run_order, ElementsAre(2, 3, 1)); | 582 EXPECT_THAT(run_order, ElementsAre(2, 3, 1)); |
| 583 } | 583 } |
| 584 | 584 |
| 585 class TestTaskObserver : public base::MessageLoop::TaskObserver { | |
| 586 public: | |
| 587 TestTaskObserver() : will_count_(0), did_count_(0) {} | |
| 588 | |
| 589 void DidProcessTask(const base::PendingTask& task) override { did_count_++; } | |
| 590 | |
| 591 void WillProcessTask(const base::PendingTask& task) override { | |
| 592 will_count_++; | |
| 593 } | |
| 594 | |
| 595 int CallsToWillProcess() const { return will_count_; } | |
| 596 int CallsToDidProcess() const { return did_count_; } | |
| 597 | |
| 598 private: | |
| 599 int will_count_; | |
| 600 int did_count_; | |
| 601 }; | |
| 602 | |
| 603 TEST_F(TaskQueueManagerTest, TaskObserver) { | |
| 604 Initialize(1u); | |
| 605 TestTaskObserver observer; | |
| 606 | |
| 607 EXPECT_EQ(0, observer.CallsToWillProcess()); | |
| 608 EXPECT_EQ(0, observer.CallsToDidProcess()); | |
| 609 manager_->AddTaskObserver(&observer); | |
| 610 | |
| 611 std::vector<int> run_order; | |
| 612 scoped_refptr<base::SingleThreadTaskRunner> runner = | |
| 613 manager_->TaskRunnerForQueue(0); | |
| 614 | |
| 615 runner->PostTask(FROM_HERE, base::Bind(&TestTask, 1, &run_order)); | |
| 616 runner->PostTask(FROM_HERE, base::Bind(&TestTask, 2, &run_order)); | |
| 617 | |
| 618 selector_->AppendQueueToService(0); | |
| 619 selector_->AppendQueueToService(0); | |
| 620 test_task_runner_->RunUntilIdle(); | |
| 621 | |
| 622 EXPECT_EQ(2, observer.CallsToWillProcess()); | |
|
alex clarke (OOO till 29th)
2015/02/13 11:02:07
Should this be split up into multiple tests so it'
Sami
2015/02/13 12:09:09
Good idea. I've split this into one test for addin
| |
| 623 EXPECT_EQ(2, observer.CallsToDidProcess()); | |
| 624 | |
| 625 manager_->RemoveTaskObserver(&observer); | |
| 626 runner->PostTask(FROM_HERE, base::Bind(&TestTask, 3, &run_order)); | |
| 627 selector_->AppendQueueToService(0); | |
| 628 test_task_runner_->RunUntilIdle(); | |
| 629 | |
| 630 EXPECT_EQ(2, observer.CallsToWillProcess()); | |
| 631 EXPECT_EQ(2, observer.CallsToDidProcess()); | |
| 632 } | |
| 633 | |
| 585 } // namespace | 634 } // namespace |
| 586 } // namespace content | 635 } // namespace content |
| OLD | NEW |