Chromium Code Reviews| Index: base/task_scheduler/task.cc |
| diff --git a/base/task_scheduler/task.cc b/base/task_scheduler/task.cc |
| index 8a589a202186dc2b3404c234e104a856ca57d8dd..baac443b2d9f20023d2adc7af72e2b52137960c5 100644 |
| --- a/base/task_scheduler/task.cc |
| +++ b/base/task_scheduler/task.cc |
| @@ -9,13 +9,20 @@ namespace internal { |
| Task::Task(const tracked_objects::Location& posted_from, |
| const Closure& task, |
| - const TaskTraits& traits, |
| + const TaskTraits& traits_in, |
| const TimeDelta& delay) |
| : PendingTask(posted_from, |
| task, |
| delay.is_zero() ? TimeTicks() : TimeTicks::Now() + delay, |
| false), // Not nestable. |
| - traits(traits) {} |
| + traits(traits_in) { |
| + // Prevent a delayed BLOCK_SHUTDOWN task from blocking shutdown before being |
| + // scheduled by changing its shutdown behavior to SKIP_ON_SHUTDOWN. |
| + if (!delay.is_zero() && |
|
danakj
2016/10/03 20:08:45
Maybe you could put this into a constexpr helper a
|
| + traits.shutdown_behavior() == TaskShutdownBehavior::BLOCK_SHUTDOWN) { |
| + traits.WithShutdownBehavior(TaskShutdownBehavior::SKIP_ON_SHUTDOWN); |
| + } |
| +} |
| Task::~Task() = default; |