| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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/idle_helper.h" | 5 #include "components/scheduler/child/idle_helper.h" |
| 6 | 6 |
| 7 #include "base/callback.h" | 7 #include "base/callback.h" |
| 8 #include "base/test/simple_test_tick_clock.h" | 8 #include "base/test/simple_test_tick_clock.h" |
| 9 #include "cc/test/ordered_simple_task_runner.h" | 9 #include "cc/test/ordered_simple_task_runner.h" |
| 10 #include "components/scheduler/base/real_time_domain.h" |
| 10 #include "components/scheduler/base/task_queue.h" | 11 #include "components/scheduler/base/task_queue.h" |
| 11 #include "components/scheduler/base/task_queue_manager.h" | 12 #include "components/scheduler/base/task_queue_manager.h" |
| 12 #include "components/scheduler/base/test_time_source.h" | 13 #include "components/scheduler/base/test_time_source.h" |
| 13 #include "components/scheduler/child/scheduler_helper.h" | 14 #include "components/scheduler/child/scheduler_helper.h" |
| 14 #include "components/scheduler/child/scheduler_tqm_delegate_for_test.h" | 15 #include "components/scheduler/child/scheduler_tqm_delegate_for_test.h" |
| 15 #include "components/scheduler/child/scheduler_tqm_delegate_impl.h" | 16 #include "components/scheduler/child/scheduler_tqm_delegate_impl.h" |
| 16 #include "testing/gmock/include/gmock/gmock.h" | 17 #include "testing/gmock/include/gmock/gmock.h" |
| 17 #include "testing/gtest/include/gtest/gtest.h" | 18 #include "testing/gtest/include/gtest/gtest.h" |
| 18 | 19 |
| 19 using testing::_; | 20 using testing::_; |
| (...skipping 817 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 837 | 838 |
| 838 TEST_F(IdleHelperTest, TestLongIdlePeriodPaused) { | 839 TEST_F(IdleHelperTest, TestLongIdlePeriodPaused) { |
| 839 mock_task_runner_->SetAutoAdvanceNowToPendingTasks(true); | 840 mock_task_runner_->SetAutoAdvanceNowToPendingTasks(true); |
| 840 std::vector<base::TimeTicks> actual_deadlines; | 841 std::vector<base::TimeTicks> actual_deadlines; |
| 841 int run_count = 0; | 842 int run_count = 0; |
| 842 | 843 |
| 843 // If there are no idle tasks posted we should start in the paused state. | 844 // If there are no idle tasks posted we should start in the paused state. |
| 844 idle_helper_->EnableLongIdlePeriod(); | 845 idle_helper_->EnableLongIdlePeriod(); |
| 845 CheckIdlePeriodStateIs("in_long_idle_period_paused"); | 846 CheckIdlePeriodStateIs("in_long_idle_period_paused"); |
| 846 // There shouldn't be any delayed tasks posted by the idle helper when paused. | 847 // There shouldn't be any delayed tasks posted by the idle helper when paused. |
| 847 EXPECT_EQ(base::TimeTicks(), | 848 base::TimeTicks next_pending_delayed_task; |
| 848 scheduler_helper_->NextPendingDelayedTaskRunTime()); | 849 EXPECT_FALSE(scheduler_helper_->real_time_domain()->NextScheduledRunTime( |
| 850 &next_pending_delayed_task)); |
| 849 | 851 |
| 850 // Posting a task should transition us to the an active state. | 852 // Posting a task should transition us to the an active state. |
| 851 max_idle_task_reposts = 2; | 853 max_idle_task_reposts = 2; |
| 852 base::TimeTicks clock_before(clock_->NowTicks()); | 854 base::TimeTicks clock_before(clock_->NowTicks()); |
| 853 base::TimeDelta idle_task_runtime(base::TimeDelta::FromMilliseconds(10)); | 855 base::TimeDelta idle_task_runtime(base::TimeDelta::FromMilliseconds(10)); |
| 854 idle_task_runner_->PostIdleTask( | 856 idle_task_runner_->PostIdleTask( |
| 855 FROM_HERE, base::Bind(&RepostingUpdateClockIdleTestTask, | 857 FROM_HERE, base::Bind(&RepostingUpdateClockIdleTestTask, |
| 856 idle_task_runner_, &run_count, clock_.get(), | 858 idle_task_runner_, &run_count, clock_.get(), |
| 857 idle_task_runtime, &actual_deadlines)); | 859 idle_task_runtime, &actual_deadlines)); |
| 858 RunUntilIdle(); | 860 RunUntilIdle(); |
| 859 EXPECT_EQ(2, run_count); | 861 EXPECT_EQ(2, run_count); |
| 860 EXPECT_THAT( | 862 EXPECT_THAT( |
| 861 actual_deadlines, | 863 actual_deadlines, |
| 862 testing::ElementsAre( | 864 testing::ElementsAre( |
| 863 clock_before + maximum_idle_period_duration(), | 865 clock_before + maximum_idle_period_duration(), |
| 864 clock_before + idle_task_runtime + maximum_idle_period_duration())); | 866 clock_before + idle_task_runtime + maximum_idle_period_duration())); |
| 865 | 867 |
| 866 // Once all task have been run we should go back to the paused state. | 868 // Once all task have been run we should go back to the paused state. |
| 867 CheckIdlePeriodStateIs("in_long_idle_period_paused"); | 869 CheckIdlePeriodStateIs("in_long_idle_period_paused"); |
| 868 EXPECT_EQ(base::TimeTicks(), | 870 EXPECT_FALSE(scheduler_helper_->real_time_domain()->NextScheduledRunTime( |
| 869 scheduler_helper_->NextPendingDelayedTaskRunTime()); | 871 &next_pending_delayed_task)); |
| 870 | 872 |
| 871 idle_helper_->EndIdlePeriod(); | 873 idle_helper_->EndIdlePeriod(); |
| 872 CheckIdlePeriodStateIs("not_in_idle_period"); | 874 CheckIdlePeriodStateIs("not_in_idle_period"); |
| 873 } | 875 } |
| 874 | 876 |
| 875 TEST_F(IdleHelperTest, TestLongIdlePeriodWhenShutdown) { | 877 TEST_F(IdleHelperTest, TestLongIdlePeriodWhenShutdown) { |
| 876 base::TimeTicks deadline_in_task; | 878 base::TimeTicks deadline_in_task; |
| 877 int run_count = 0; | 879 int run_count = 0; |
| 878 | 880 |
| 879 idle_task_runner_->PostIdleTask( | 881 idle_task_runner_->PostIdleTask( |
| (...skipping 256 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1136 EXPECT_EQ(0, run_count); | 1138 EXPECT_EQ(0, run_count); |
| 1137 | 1139 |
| 1138 default_task_runner_->PostDelayedTask(FROM_HERE, base::Bind(&NullTask), | 1140 default_task_runner_->PostDelayedTask(FROM_HERE, base::Bind(&NullTask), |
| 1139 more_than_min_deadline_duration); | 1141 more_than_min_deadline_duration); |
| 1140 idle_helper_->EnableLongIdlePeriod(); | 1142 idle_helper_->EnableLongIdlePeriod(); |
| 1141 RunUntilIdle(); | 1143 RunUntilIdle(); |
| 1142 EXPECT_EQ(1, run_count); | 1144 EXPECT_EQ(1, run_count); |
| 1143 } | 1145 } |
| 1144 | 1146 |
| 1145 } // namespace scheduler | 1147 } // namespace scheduler |
| OLD | NEW |