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 "base/task_scheduler/scheduler_single_thread_task_runner_manager.h" | 5 #include "base/task_scheduler/scheduler_single_thread_task_runner_manager.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <memory> | 8 #include <memory> |
9 #include <string> | 9 #include <string> |
10 | 10 |
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
140 SchedulerSingleThreadTaskRunnerManager* const outer, | 140 SchedulerSingleThreadTaskRunnerManager* const outer, |
141 const TaskTraits& traits, | 141 const TaskTraits& traits, |
142 SchedulerWorker* worker) | 142 SchedulerWorker* worker) |
143 : outer_(outer), traits_(traits), worker_(worker) { | 143 : outer_(outer), traits_(traits), worker_(worker) { |
144 DCHECK(outer_); | 144 DCHECK(outer_); |
145 DCHECK(worker_); | 145 DCHECK(worker_); |
146 } | 146 } |
147 | 147 |
148 // SingleThreadTaskRunner: | 148 // SingleThreadTaskRunner: |
149 bool PostDelayedTask(const tracked_objects::Location& from_here, | 149 bool PostDelayedTask(const tracked_objects::Location& from_here, |
150 const Closure& closure, | 150 Closure closure, |
151 TimeDelta delay) override { | 151 TimeDelta delay) override { |
152 auto task = MakeUnique<Task>(from_here, closure, traits_, delay); | 152 auto task = MakeUnique<Task>(from_here, std::move(closure), traits_, delay); |
gab
2017/03/15 19:13:42
#include <utility>
tzik
2017/03/21 05:43:20
Done.
| |
153 task->single_thread_task_runner_ref = this; | 153 task->single_thread_task_runner_ref = this; |
154 | 154 |
155 if (!outer_->task_tracker_->WillPostTask(task.get())) | 155 if (!outer_->task_tracker_->WillPostTask(task.get())) |
156 return false; | 156 return false; |
157 | 157 |
158 if (task->delayed_run_time.is_null()) { | 158 if (task->delayed_run_time.is_null()) { |
159 PostTaskNow(std::move(task)); | 159 PostTaskNow(std::move(task)); |
160 } else { | 160 } else { |
161 outer_->delayed_task_manager_->AddDelayedTask( | 161 outer_->delayed_task_manager_->AddDelayedTask( |
162 std::move(task), Bind(&SchedulerSingleThreadTaskRunner::PostTaskNow, | 162 std::move(task), Bind(&SchedulerSingleThreadTaskRunner::PostTaskNow, |
163 Unretained(this))); | 163 Unretained(this))); |
164 } | 164 } |
165 return true; | 165 return true; |
166 } | 166 } |
167 | 167 |
168 bool PostNonNestableDelayedTask(const tracked_objects::Location& from_here, | 168 bool PostNonNestableDelayedTask(const tracked_objects::Location& from_here, |
169 const Closure& closure, | 169 Closure closure, |
170 base::TimeDelta delay) override { | 170 base::TimeDelta delay) override { |
171 // Tasks are never nested within the task scheduler. | 171 // Tasks are never nested within the task scheduler. |
172 return PostDelayedTask(from_here, closure, delay); | 172 return PostDelayedTask(from_here, std::move(closure), delay); |
173 } | 173 } |
174 | 174 |
175 bool RunsTasksOnCurrentThread() const override { | 175 bool RunsTasksOnCurrentThread() const override { |
176 return GetDelegate()->RunsTasksOnCurrentThread(); | 176 return GetDelegate()->RunsTasksOnCurrentThread(); |
177 } | 177 } |
178 | 178 |
179 private: | 179 private: |
180 ~SchedulerSingleThreadTaskRunner() override { | 180 ~SchedulerSingleThreadTaskRunner() override { |
181 outer_->UnregisterSchedulerWorker(worker_); | 181 outer_->UnregisterSchedulerWorker(worker_); |
182 } | 182 } |
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
299 }); | 299 }); |
300 DCHECK(worker_iter != workers_.end()); | 300 DCHECK(worker_iter != workers_.end()); |
301 worker_to_destroy = std::move(*worker_iter); | 301 worker_to_destroy = std::move(*worker_iter); |
302 workers_.erase(worker_iter); | 302 workers_.erase(worker_iter); |
303 } | 303 } |
304 worker_to_destroy->Cleanup(); | 304 worker_to_destroy->Cleanup(); |
305 } | 305 } |
306 | 306 |
307 } // namespace internal | 307 } // namespace internal |
308 } // namespace base | 308 } // namespace base |
OLD | NEW |