Index: base/task_scheduler/task_tracker.cc |
diff --git a/base/task_scheduler/task_tracker.cc b/base/task_scheduler/task_tracker.cc |
index 8817baa04701088ece63b91005c68fe19ddca6e3..6679223c25f212437d8f4df933a2fcb3f77ac2e6 100644 |
--- a/base/task_scheduler/task_tracker.cc |
+++ b/base/task_scheduler/task_tracker.cc |
@@ -11,6 +11,7 @@ |
#include "base/debug/task_annotator.h" |
#include "base/logging.h" |
#include "base/metrics/histogram_macros.h" |
+#include "base/sequence_token.h" |
#include "base/threading/sequenced_task_runner_handle.h" |
#include "base/threading/thread_restrictions.h" |
#include "base/threading/thread_task_runner_handle.h" |
@@ -176,8 +177,11 @@ bool TaskTracker::WillPostTask(const Task* task) { |
return true; |
} |
-void TaskTracker::RunTask(const Task* task) { |
- DCHECK(task); |
+void TaskTracker::RunNextTaskInSequence(const Sequence* sequence) { |
+ DCHECK(sequence); |
+ DCHECK(sequence->PeekTask()); |
+ |
+ const Task* task = sequence->PeekTask(); |
const TaskShutdownBehavior shutdown_behavior = |
task->traits.shutdown_behavior(); |
@@ -192,6 +196,10 @@ void TaskTracker::RunTask(const Task* task) { |
TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN); |
{ |
+ // Set up SequenceToken as expected for the scope of the task. |
+ ScopedSetCurrentSequenceToken scoped_set_current_sequence_token( |
+ sequence->token()); |
+ |
// Set up TaskRunnerHandle as expected for the scope of the task. |
std::unique_ptr<SequencedTaskRunnerHandle> sequenced_task_runner_handle; |
std::unique_ptr<ThreadTaskRunnerHandle> single_thread_task_runner_handle; |