Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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/task.h" | 5 #include "base/task_scheduler/task.h" |
| 6 | 6 |
| 7 namespace base { | 7 namespace base { |
| 8 namespace internal { | 8 namespace internal { |
| 9 | 9 |
| 10 namespace { | |
| 11 | |
| 12 // Changes the shutdown behavior in |traits| to SKIP_ON_SHUTDOWN if |delay| is | |
| 13 // non-zero and the existing shutdown behavior is BLOCK_SHUTDOWN. This prevents | |
| 14 // delayed tasks from blocking shutdown before they are scheduled. | |
| 15 TaskTraits AdjustShutdownBehavior(TaskTraits traits, TimeDelta delay) { | |
| 16 return (traits.shutdown_behavior() == TaskShutdownBehavior::BLOCK_SHUTDOWN && | |
| 17 !delay.is_zero()) | |
| 18 ? traits.WithShutdownBehavior( | |
| 19 TaskShutdownBehavior::SKIP_ON_SHUTDOWN) | |
| 20 : traits; | |
| 21 } | |
| 22 | |
| 23 } // namespace | |
| 24 | |
| 10 Task::Task(const tracked_objects::Location& posted_from, | 25 Task::Task(const tracked_objects::Location& posted_from, |
| 11 const Closure& task, | 26 const Closure& task, |
| 12 const TaskTraits& traits, | 27 const TaskTraits& traits, |
| 13 const TimeDelta& delay) | 28 TimeDelta delay) |
|
robliao
2016/09/30 18:57:20
This should remain a const ref.
AdjustShutdownBeh
fdoray
2016/09/30 19:10:11
No. https://cs.chromium.org/chromium/src/base/time
| |
| 14 : PendingTask(posted_from, | 29 : PendingTask(posted_from, |
| 15 task, | 30 task, |
| 16 delay.is_zero() ? TimeTicks() : TimeTicks::Now() + delay, | 31 delay.is_zero() ? TimeTicks() : TimeTicks::Now() + delay, |
| 17 false), // Not nestable. | 32 false), // Not nestable. |
| 18 traits(traits) {} | 33 traits(AdjustShutdownBehavior(traits, delay)) {} |
|
gab
2016/09/30 19:01:26
So this potentially results in 3 copies (one to pa
fdoray
2016/09/30 19:10:11
I'll make a new CL that changes TaskTracker instea
| |
| 19 | 34 |
| 20 Task::~Task() = default; | 35 Task::~Task() = default; |
| 21 | 36 |
| 22 } // namespace internal | 37 } // namespace internal |
| 23 } // namespace base | 38 } // namespace base |
| OLD | NEW |