| 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 |