Index: base/task_scheduler/task_tracker.cc |
diff --git a/base/task_scheduler/task_tracker.cc b/base/task_scheduler/task_tracker.cc |
index 1ebc81be6d21817420a5e8010902e37b81b1433e..7de82bfb88dfcbd2f64bd92d1594331dcfe30a09 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" |
@@ -177,8 +178,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(); |
@@ -193,6 +197,10 @@ void TaskTracker::RunTask(const Task* task) { |
TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN); |
{ |
+ // Set up SequenceToken as expected for the scope of the task. |
+ ScopedSetSequenceTokenForCurrentThread |
+ scoped_set_sequence_token_for_current_thread(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; |