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/nestable_task_runner_for_test.h" | 10 #include "content/renderer/scheduler/nestable_task_runner_for_test.h" |
(...skipping 822 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
833 | 833 |
834 TEST_F(TaskQueueManagerTest, ThreadCheckAfterTermination) { | 834 TEST_F(TaskQueueManagerTest, ThreadCheckAfterTermination) { |
835 Initialize(1); | 835 Initialize(1); |
836 scoped_refptr<base::SingleThreadTaskRunner> runner = | 836 scoped_refptr<base::SingleThreadTaskRunner> runner = |
837 manager_->TaskRunnerForQueue(0); | 837 manager_->TaskRunnerForQueue(0); |
838 EXPECT_TRUE(runner->RunsTasksOnCurrentThread()); | 838 EXPECT_TRUE(runner->RunsTasksOnCurrentThread()); |
839 manager_.reset(); | 839 manager_.reset(); |
840 EXPECT_TRUE(runner->RunsTasksOnCurrentThread()); | 840 EXPECT_TRUE(runner->RunsTasksOnCurrentThread()); |
841 } | 841 } |
842 | 842 |
| 843 TEST_F(TaskQueueManagerTest, NextPendingDelayedTaskRunTime) { |
| 844 scoped_refptr<cc::TestNowSource> clock(cc::TestNowSource::Create()); |
| 845 Initialize(2u); |
| 846 manager_->SetTimeSourceForTesting(clock); |
| 847 |
| 848 scoped_refptr<base::SingleThreadTaskRunner> runners[2] = { |
| 849 manager_->TaskRunnerForQueue(0), manager_->TaskRunnerForQueue(1)}; |
| 850 |
| 851 // With no delayed tasks. |
| 852 EXPECT_TRUE(manager_->NextPendingDelayedTaskRunTime().is_null()); |
| 853 |
| 854 // With a non-delayed task. |
| 855 runners[0]->PostTask(FROM_HERE, base::Bind(&NullTestTask)); |
| 856 EXPECT_TRUE(manager_->NextPendingDelayedTaskRunTime().is_null()); |
| 857 |
| 858 // With a delayed task. |
| 859 base::TimeDelta expected_delay = base::TimeDelta::FromMilliseconds(50); |
| 860 runners[0]->PostDelayedTask( |
| 861 FROM_HERE, base::Bind(&NullTestTask), expected_delay); |
| 862 EXPECT_EQ(clock->Now() + expected_delay, |
| 863 manager_->NextPendingDelayedTaskRunTime()); |
| 864 |
| 865 // With another delayed task in the same queue with a longer delay. |
| 866 runners[0]->PostDelayedTask( |
| 867 FROM_HERE, base::Bind(&NullTestTask), |
| 868 base::TimeDelta::FromMilliseconds(100)); |
| 869 EXPECT_EQ(clock->Now() + expected_delay, |
| 870 manager_->NextPendingDelayedTaskRunTime()); |
| 871 |
| 872 // With another delayed task in the same queue with a shorter delay. |
| 873 expected_delay = base::TimeDelta::FromMilliseconds(20); |
| 874 runners[0]->PostDelayedTask( |
| 875 FROM_HERE, base::Bind(&NullTestTask), expected_delay); |
| 876 EXPECT_EQ(clock->Now() + expected_delay, |
| 877 manager_->NextPendingDelayedTaskRunTime()); |
| 878 |
| 879 // With another delayed task in a different queue with a shorter delay. |
| 880 expected_delay = base::TimeDelta::FromMilliseconds(10); |
| 881 runners[1]->PostDelayedTask( |
| 882 FROM_HERE, base::Bind(&NullTestTask), expected_delay); |
| 883 EXPECT_EQ(clock->Now() + expected_delay, |
| 884 manager_->NextPendingDelayedTaskRunTime()); |
| 885 |
| 886 // Test it updates as time progresses |
| 887 clock->AdvanceNow(expected_delay); |
| 888 EXPECT_EQ(clock->Now(), manager_->NextPendingDelayedTaskRunTime()); |
| 889 } |
| 890 |
843 } // namespace | 891 } // namespace |
844 } // namespace content | 892 } // namespace content |
845 | 893 |
OLD | NEW |