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 808 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
819 runner->PostTask(FROM_HERE, | 819 runner->PostTask(FROM_HERE, |
820 base::Bind(&RemoveObserverTask, manager_.get(), &observer)); | 820 base::Bind(&RemoveObserverTask, manager_.get(), &observer)); |
821 | 821 |
822 selector_->AppendQueueToService(0); | 822 selector_->AppendQueueToService(0); |
823 | 823 |
824 EXPECT_CALL(observer, WillProcessTask(_)).Times(1); | 824 EXPECT_CALL(observer, WillProcessTask(_)).Times(1); |
825 EXPECT_CALL(observer, DidProcessTask(_)).Times(0); | 825 EXPECT_CALL(observer, DidProcessTask(_)).Times(0); |
826 message_loop_->RunUntilIdle(); | 826 message_loop_->RunUntilIdle(); |
827 } | 827 } |
828 | 828 |
| 829 TEST_F(TaskQueueManagerTest, NextPendingDelayedTaskRunTime) { |
| 830 scoped_refptr<cc::TestNowSource> clock(cc::TestNowSource::Create()); |
| 831 Initialize(2u); |
| 832 manager_->SetTimeSourceForTesting(clock); |
| 833 |
| 834 scoped_refptr<base::SingleThreadTaskRunner> runners[2] = { |
| 835 manager_->TaskRunnerForQueue(0), manager_->TaskRunnerForQueue(1)}; |
| 836 |
| 837 // With no delayed tasks. |
| 838 EXPECT_TRUE(manager_->NextPendingDelayedTaskRunTime().is_null()); |
| 839 |
| 840 // With a non-delayed task. |
| 841 runners[0]->PostTask(FROM_HERE, base::Bind(&NullTestTask)); |
| 842 EXPECT_TRUE(manager_->NextPendingDelayedTaskRunTime().is_null()); |
| 843 |
| 844 // With a delayed task. |
| 845 base::TimeDelta expected_delay = base::TimeDelta::FromMilliseconds(50); |
| 846 runners[0]->PostDelayedTask( |
| 847 FROM_HERE, base::Bind(&NullTestTask), expected_delay); |
| 848 EXPECT_EQ(clock->Now() + expected_delay, |
| 849 manager_->NextPendingDelayedTaskRunTime()); |
| 850 |
| 851 // With another delayed task in the same queue with a longer delay. |
| 852 runners[0]->PostDelayedTask( |
| 853 FROM_HERE, base::Bind(&NullTestTask), |
| 854 base::TimeDelta::FromMilliseconds(100)); |
| 855 EXPECT_EQ(clock->Now() + expected_delay, |
| 856 manager_->NextPendingDelayedTaskRunTime()); |
| 857 |
| 858 // With another delayed task in the same queue with a shorter delay. |
| 859 expected_delay = base::TimeDelta::FromMilliseconds(20); |
| 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 a different queue with a shorter delay. |
| 866 expected_delay = base::TimeDelta::FromMilliseconds(10); |
| 867 runners[1]->PostDelayedTask( |
| 868 FROM_HERE, base::Bind(&NullTestTask), expected_delay); |
| 869 EXPECT_EQ(clock->Now() + expected_delay, |
| 870 manager_->NextPendingDelayedTaskRunTime()); |
| 871 |
| 872 // Test it updates as time progresses |
| 873 clock->AdvanceNow(expected_delay); |
| 874 EXPECT_EQ(clock->Now(), manager_->NextPendingDelayedTaskRunTime()); |
| 875 } |
| 876 |
829 } // namespace | 877 } // namespace |
830 } // namespace content | 878 } // namespace content |
831 | 879 |
OLD | NEW |