Chromium Code Reviews| 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 |