OLD | NEW |
1 // Copyright 2017 The Chromium Authors. All rights reserved. | 1 // Copyright 2017 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 "platform/scheduler/child/idle_canceled_delayed_task_sweeper.h" | 5 #include "platform/scheduler/child/idle_canceled_delayed_task_sweeper.h" |
6 | 6 |
7 #include "base/memory/ptr_util.h" | 7 #include "base/memory/ptr_util.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 "platform/scheduler/base/lazy_now.h" | 10 #include "platform/scheduler/base/lazy_now.h" |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
45 new IdleHelper(scheduler_helper_.get(), | 45 new IdleHelper(scheduler_helper_.get(), |
46 this, | 46 this, |
47 "test.scheduler", | 47 "test.scheduler", |
48 TRACE_DISABLED_BY_DEFAULT("test.scheduler"), | 48 TRACE_DISABLED_BY_DEFAULT("test.scheduler"), |
49 TRACE_DISABLED_BY_DEFAULT("test.scheduler.dbg"), | 49 TRACE_DISABLED_BY_DEFAULT("test.scheduler.dbg"), |
50 base::TimeDelta::FromSeconds(30))), | 50 base::TimeDelta::FromSeconds(30))), |
51 idle_canceled_delayed_taks_sweeper_( | 51 idle_canceled_delayed_taks_sweeper_( |
52 new IdleCanceledDelayedTaskSweeper("test", | 52 new IdleCanceledDelayedTaskSweeper("test", |
53 scheduler_helper_.get(), | 53 scheduler_helper_.get(), |
54 idle_helper_->IdleTaskRunner())), | 54 idle_helper_->IdleTaskRunner())), |
55 default_task_runner_(scheduler_helper_->DefaultTaskQueue()) { | 55 default_task_queue_(scheduler_helper_->DefaultTaskQueue()) { |
56 clock_->Advance(base::TimeDelta::FromMicroseconds(5000)); | 56 clock_->Advance(base::TimeDelta::FromMicroseconds(5000)); |
57 } | 57 } |
58 | 58 |
59 ~IdleCanceledDelayedTaskSweeperTest() override {} | 59 ~IdleCanceledDelayedTaskSweeperTest() override {} |
60 | 60 |
61 void TearDown() override { | 61 void TearDown() override { |
62 // Check that all tests stop posting tasks. | 62 // Check that all tests stop posting tasks. |
63 mock_task_runner_->SetAutoAdvanceNowToPendingTasks(true); | 63 mock_task_runner_->SetAutoAdvanceNowToPendingTasks(true); |
64 while (mock_task_runner_->RunUntilIdle()) { | 64 while (mock_task_runner_->RunUntilIdle()) { |
65 } | 65 } |
(...skipping 11 matching lines...) Expand all Loading... |
77 | 77 |
78 protected: | 78 protected: |
79 std::unique_ptr<base::SimpleTestTickClock> clock_; | 79 std::unique_ptr<base::SimpleTestTickClock> clock_; |
80 scoped_refptr<cc::OrderedSimpleTaskRunner> mock_task_runner_; | 80 scoped_refptr<cc::OrderedSimpleTaskRunner> mock_task_runner_; |
81 | 81 |
82 scoped_refptr<SchedulerTqmDelegateForTest> delegate_; | 82 scoped_refptr<SchedulerTqmDelegateForTest> delegate_; |
83 std::unique_ptr<SchedulerHelper> scheduler_helper_; | 83 std::unique_ptr<SchedulerHelper> scheduler_helper_; |
84 std::unique_ptr<IdleHelper> idle_helper_; | 84 std::unique_ptr<IdleHelper> idle_helper_; |
85 std::unique_ptr<IdleCanceledDelayedTaskSweeper> | 85 std::unique_ptr<IdleCanceledDelayedTaskSweeper> |
86 idle_canceled_delayed_taks_sweeper_; | 86 idle_canceled_delayed_taks_sweeper_; |
87 scoped_refptr<TaskQueue> default_task_runner_; | 87 scoped_refptr<TaskQueue> default_task_queue_; |
88 | 88 |
89 DISALLOW_COPY_AND_ASSIGN(IdleCanceledDelayedTaskSweeperTest); | 89 DISALLOW_COPY_AND_ASSIGN(IdleCanceledDelayedTaskSweeperTest); |
90 }; | 90 }; |
91 | 91 |
92 TEST_F(IdleCanceledDelayedTaskSweeperTest, TestSweep) { | 92 TEST_F(IdleCanceledDelayedTaskSweeperTest, TestSweep) { |
93 TestClass class1; | 93 TestClass class1; |
94 TestClass class2; | 94 TestClass class2; |
95 | 95 |
96 // Post one task we won't cancel. | 96 // Post one task we won't cancel. |
97 default_task_runner_->PostDelayedTask( | 97 default_task_queue_->PostDelayedTask( |
98 FROM_HERE, | 98 FROM_HERE, |
99 base::Bind(&TestClass::NopTask, class1.weak_factory_.GetWeakPtr()), | 99 base::Bind(&TestClass::NopTask, class1.weak_factory_.GetWeakPtr()), |
100 base::TimeDelta::FromSeconds(100)); | 100 base::TimeDelta::FromSeconds(100)); |
101 | 101 |
102 // And a bunch we will. | 102 // And a bunch we will. |
103 default_task_runner_->PostDelayedTask( | 103 default_task_queue_->PostDelayedTask( |
104 FROM_HERE, | 104 FROM_HERE, |
105 base::Bind(&TestClass::NopTask, class2.weak_factory_.GetWeakPtr()), | 105 base::Bind(&TestClass::NopTask, class2.weak_factory_.GetWeakPtr()), |
106 base::TimeDelta::FromSeconds(101)); | 106 base::TimeDelta::FromSeconds(101)); |
107 | 107 |
108 default_task_runner_->PostDelayedTask( | 108 default_task_queue_->PostDelayedTask( |
109 FROM_HERE, | 109 FROM_HERE, |
110 base::Bind(&TestClass::NopTask, class2.weak_factory_.GetWeakPtr()), | 110 base::Bind(&TestClass::NopTask, class2.weak_factory_.GetWeakPtr()), |
111 base::TimeDelta::FromSeconds(102)); | 111 base::TimeDelta::FromSeconds(102)); |
112 | 112 |
113 default_task_runner_->PostDelayedTask( | 113 default_task_queue_->PostDelayedTask( |
114 FROM_HERE, | 114 FROM_HERE, |
115 base::Bind(&TestClass::NopTask, class2.weak_factory_.GetWeakPtr()), | 115 base::Bind(&TestClass::NopTask, class2.weak_factory_.GetWeakPtr()), |
116 base::TimeDelta::FromSeconds(103)); | 116 base::TimeDelta::FromSeconds(103)); |
117 | 117 |
118 default_task_runner_->PostDelayedTask( | 118 default_task_queue_->PostDelayedTask( |
119 FROM_HERE, | 119 FROM_HERE, |
120 base::Bind(&TestClass::NopTask, class2.weak_factory_.GetWeakPtr()), | 120 base::Bind(&TestClass::NopTask, class2.weak_factory_.GetWeakPtr()), |
121 base::TimeDelta::FromSeconds(104)); | 121 base::TimeDelta::FromSeconds(104)); |
122 | 122 |
123 // Cancel the last four tasks. | 123 // Cancel the last four tasks. |
124 class2.weak_factory_.InvalidateWeakPtrs(); | 124 class2.weak_factory_.InvalidateWeakPtrs(); |
125 | 125 |
126 // Give the IdleCanceledDelayedTaskSweeper a chance to run but don't let | 126 // Give the IdleCanceledDelayedTaskSweeper a chance to run but don't let |
127 // the first non canceled delayed task run. This is important because the | 127 // the first non canceled delayed task run. This is important because the |
128 // canceled tasks would get removed by TaskQueueImpl::WakeUpForDelayedWork. | 128 // canceled tasks would get removed by TaskQueueImpl::WakeUpForDelayedWork. |
129 clock_->Advance(base::TimeDelta::FromSeconds(40)); | 129 clock_->Advance(base::TimeDelta::FromSeconds(40)); |
130 idle_helper_->EnableLongIdlePeriod(); | 130 idle_helper_->EnableLongIdlePeriod(); |
131 mock_task_runner_->RunForPeriod(base::TimeDelta::FromSeconds(40)); | 131 mock_task_runner_->RunForPeriod(base::TimeDelta::FromSeconds(40)); |
132 | 132 |
133 EXPECT_EQ(1u, default_task_runner_->GetNumberOfPendingTasks()); | 133 EXPECT_EQ(1u, default_task_queue_->GetNumberOfPendingTasks()); |
134 } | 134 } |
135 | 135 |
136 } // namespace scheduler | 136 } // namespace scheduler |
137 } // namespace blink | 137 } // namespace blink |
OLD | NEW |