| 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 "components/scheduler/child/task_queue_manager.h" | 5 #include "components/scheduler/child/task_queue_manager.h" |
| 6 | 6 |
| 7 #include "base/location.h" | 7 #include "base/location.h" |
| 8 #include "base/run_loop.h" | 8 #include "base/run_loop.h" |
| 9 #include "base/single_thread_task_runner.h" | 9 #include "base/single_thread_task_runner.h" |
| 10 #include "base/test/simple_test_tick_clock.h" | 10 #include "base/test/simple_test_tick_clock.h" |
| (...skipping 794 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 805 manager_->AddTaskObserver(&observer); | 805 manager_->AddTaskObserver(&observer); |
| 806 | 806 |
| 807 runners_[0]->PostTask( | 807 runners_[0]->PostTask( |
| 808 FROM_HERE, base::Bind(&RemoveObserverTask, manager_.get(), &observer)); | 808 FROM_HERE, base::Bind(&RemoveObserverTask, manager_.get(), &observer)); |
| 809 | 809 |
| 810 EXPECT_CALL(observer, WillProcessTask(_)).Times(1); | 810 EXPECT_CALL(observer, WillProcessTask(_)).Times(1); |
| 811 EXPECT_CALL(observer, DidProcessTask(_)).Times(0); | 811 EXPECT_CALL(observer, DidProcessTask(_)).Times(0); |
| 812 message_loop_->RunUntilIdle(); | 812 message_loop_->RunUntilIdle(); |
| 813 } | 813 } |
| 814 | 814 |
| 815 TEST_F(TaskQueueManagerTest, QueueTaskObserverAdding) { |
| 816 InitializeWithRealMessageLoop(2u); |
| 817 MockTaskObserver observer; |
| 818 |
| 819 manager_->SetWorkBatchSize(2); |
| 820 runners_[0]->AddTaskObserver(&observer); |
| 821 |
| 822 std::vector<int> run_order; |
| 823 runners_[0]->PostTask(FROM_HERE, base::Bind(&TestTask, 1, &run_order)); |
| 824 runners_[1]->PostTask(FROM_HERE, base::Bind(&TestTask, 2, &run_order)); |
| 825 |
| 826 EXPECT_CALL(observer, WillProcessTask(_)).Times(1); |
| 827 EXPECT_CALL(observer, DidProcessTask(_)).Times(1); |
| 828 message_loop_->RunUntilIdle(); |
| 829 } |
| 830 |
| 831 TEST_F(TaskQueueManagerTest, QueueTaskObserverRemoving) { |
| 832 InitializeWithRealMessageLoop(1u); |
| 833 MockTaskObserver observer; |
| 834 manager_->SetWorkBatchSize(2); |
| 835 runners_[0]->AddTaskObserver(&observer); |
| 836 runners_[0]->RemoveTaskObserver(&observer); |
| 837 |
| 838 std::vector<int> run_order; |
| 839 runners_[0]->PostTask(FROM_HERE, base::Bind(&TestTask, 1, &run_order)); |
| 840 |
| 841 EXPECT_CALL(observer, WillProcessTask(_)).Times(0); |
| 842 EXPECT_CALL(observer, DidProcessTask(_)).Times(0); |
| 843 |
| 844 message_loop_->RunUntilIdle(); |
| 845 } |
| 846 |
| 847 void RemoveQueueObserverTask(scoped_refptr<TaskQueue> queue, |
| 848 base::MessageLoop::TaskObserver* observer) { |
| 849 queue->RemoveTaskObserver(observer); |
| 850 } |
| 851 |
| 852 TEST_F(TaskQueueManagerTest, QueueTaskObserverRemovingInsideTask) { |
| 853 InitializeWithRealMessageLoop(1u); |
| 854 MockTaskObserver observer; |
| 855 runners_[0]->AddTaskObserver(&observer); |
| 856 |
| 857 runners_[0]->PostTask( |
| 858 FROM_HERE, base::Bind(&RemoveQueueObserverTask, runners_[0], &observer)); |
| 859 |
| 860 EXPECT_CALL(observer, WillProcessTask(_)).Times(1); |
| 861 EXPECT_CALL(observer, DidProcessTask(_)).Times(0); |
| 862 message_loop_->RunUntilIdle(); |
| 863 } |
| 864 |
| 815 TEST_F(TaskQueueManagerTest, ThreadCheckAfterTermination) { | 865 TEST_F(TaskQueueManagerTest, ThreadCheckAfterTermination) { |
| 816 Initialize(1u); | 866 Initialize(1u); |
| 817 EXPECT_TRUE(runners_[0]->RunsTasksOnCurrentThread()); | 867 EXPECT_TRUE(runners_[0]->RunsTasksOnCurrentThread()); |
| 818 manager_.reset(); | 868 manager_.reset(); |
| 819 EXPECT_TRUE(runners_[0]->RunsTasksOnCurrentThread()); | 869 EXPECT_TRUE(runners_[0]->RunsTasksOnCurrentThread()); |
| 820 } | 870 } |
| 821 | 871 |
| 822 TEST_F(TaskQueueManagerTest, NextPendingDelayedTaskRunTime) { | 872 TEST_F(TaskQueueManagerTest, NextPendingDelayedTaskRunTime) { |
| 823 scoped_ptr<base::SimpleTestTickClock> clock(new base::SimpleTestTickClock()); | 873 scoped_ptr<base::SimpleTestTickClock> clock(new base::SimpleTestTickClock()); |
| 824 clock->Advance(base::TimeDelta::FromMicroseconds(10000)); | 874 clock->Advance(base::TimeDelta::FromMicroseconds(10000)); |
| (...skipping 356 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1181 base::TimeDelta::FromMilliseconds(30)); | 1231 base::TimeDelta::FromMilliseconds(30)); |
| 1182 | 1232 |
| 1183 runners_[1]->UnregisterTaskQueue(); | 1233 runners_[1]->UnregisterTaskQueue(); |
| 1184 test_task_runner_->RunUntilIdle(); | 1234 test_task_runner_->RunUntilIdle(); |
| 1185 | 1235 |
| 1186 test_task_runner_->RunForPeriod(base::TimeDelta::FromMilliseconds(40)); | 1236 test_task_runner_->RunForPeriod(base::TimeDelta::FromMilliseconds(40)); |
| 1187 ASSERT_THAT(run_order, ElementsAre(1, 3)); | 1237 ASSERT_THAT(run_order, ElementsAre(1, 3)); |
| 1188 } | 1238 } |
| 1189 | 1239 |
| 1190 } // namespace scheduler | 1240 } // namespace scheduler |
| OLD | NEW |