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; |