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 |