| Index: base/task_scheduler/task_tracker.cc
|
| diff --git a/base/task_scheduler/task_tracker.cc b/base/task_scheduler/task_tracker.cc
|
| index c896a9fad9b4f517f0f78499d4df31052668a14a..a168c784687d91ff73aabd2a477d2580af7396ed 100644
|
| --- a/base/task_scheduler/task_tracker.cc
|
| +++ b/base/task_scheduler/task_tracker.cc
|
| @@ -7,6 +7,8 @@
|
| #include "base/callback.h"
|
| #include "base/debug/task_annotator.h"
|
| #include "base/metrics/histogram_macros.h"
|
| +#include "base/thread_task_runner_handle.h"
|
| +#include "base/threading/sequenced_task_runner_handle.h"
|
|
|
| namespace base {
|
| namespace internal {
|
| @@ -78,8 +80,23 @@ void TaskTracker::RunTask(const Task* task) {
|
| if (!BeforeRunTask(shutdown_behavior))
|
| return;
|
|
|
| - debug::TaskAnnotator task_annotator;
|
| - task_annotator.RunTask(kQueueFunctionName, *task);
|
| + {
|
| + // Set up TaskRunnerHandle as expected for the scope of the task.
|
| + std::unique_ptr<SequencedTaskRunnerHandle> sequenced_trh;
|
| + std::unique_ptr<ThreadTaskRunnerHandle> single_thread_trh;
|
| + DCHECK(!task->sequenced_task_runner_ref ||
|
| + !task->single_thread_task_runner_ref);
|
| + if (task->sequenced_task_runner_ref) {
|
| + sequenced_trh.reset(
|
| + new SequencedTaskRunnerHandle(task->sequenced_task_runner_ref));
|
| + } else if (task->single_thread_task_runner_ref) {
|
| + single_thread_trh.reset(
|
| + new ThreadTaskRunnerHandle(task->single_thread_task_runner_ref));
|
| + }
|
| +
|
| + debug::TaskAnnotator task_annotator;
|
| + task_annotator.RunTask(kQueueFunctionName, *task);
|
| + }
|
|
|
| AfterRunTask(shutdown_behavior);
|
| }
|
|
|