| Index: base/task_scheduler/task_tracker.cc
|
| diff --git a/base/task_scheduler/task_tracker.cc b/base/task_scheduler/task_tracker.cc
|
| index 9e85b5cfc17b7b58c890e964294fbfc0f3680e72..364bb672cf9d51639378917f6775a1ccdac73bff 100644
|
| --- a/base/task_scheduler/task_tracker.cc
|
| +++ b/base/task_scheduler/task_tracker.cc
|
| @@ -7,9 +7,8 @@
|
| #include "base/callback.h"
|
| #include "base/debug/task_annotator.h"
|
| #include "base/metrics/histogram_macros.h"
|
| -#include "base/threading/sequenced_task_runner_handle.h"
|
| +#include "base/threading/task_runner_handle.h"
|
| #include "base/threading/thread_restrictions.h"
|
| -#include "base/threading/thread_task_runner_handle.h"
|
| #include "base/trace_event/trace_event.h"
|
|
|
| namespace base {
|
| @@ -95,16 +94,23 @@ void TaskTracker::RunTask(const Task* task) {
|
|
|
| {
|
| // 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;
|
| - DCHECK(!task->sequenced_task_runner_ref ||
|
| - !task->single_thread_task_runner_ref);
|
| - if (task->sequenced_task_runner_ref) {
|
| - sequenced_task_runner_handle.reset(
|
| - new SequencedTaskRunnerHandle(task->sequenced_task_runner_ref));
|
| - } else if (task->single_thread_task_runner_ref) {
|
| - single_thread_task_runner_handle.reset(
|
| - new ThreadTaskRunnerHandle(task->single_thread_task_runner_ref));
|
| + std::unique_ptr<TaskRunnerHandle::TaskScope> task_scope;
|
| + std::unique_ptr<TaskRunnerHandle::SequencedTaskScope> sequenced_task_scope;
|
| + std::unique_ptr<TaskRunnerHandle::SingleThreadTaskScope>
|
| + single_thread_task_scope;
|
| + if (task->task_runner_ref) {
|
| + DCHECK(!task->sequenced_task_runner_ref &&
|
| + !task->single_thread_task_runner_ref);
|
| + task_scope.reset(new TaskRunnerHandle::TaskScope(task->task_runner_ref));
|
| + } else if (task->sequenced_task_runner_ref) {
|
| + DCHECK(!task->single_thread_task_runner_ref);
|
| + sequenced_task_scope.reset(new TaskRunnerHandle::SequencedTaskScope(
|
| + task->sequenced_task_runner_ref));
|
| + } else {
|
| + DCHECK(task->single_thread_task_runner_ref);
|
| + single_thread_task_scope.reset(
|
| + new TaskRunnerHandle::SingleThreadTaskScope(
|
| + task->single_thread_task_runner_ref));
|
| }
|
|
|
| TRACE_TASK_EXECUTION(kRunFunctionName, *task);
|
|
|