| Index: third_party/WebKit/Source/platform/scheduler/base/task_queue_manager.cc
|
| diff --git a/third_party/WebKit/Source/platform/scheduler/base/task_queue_manager.cc b/third_party/WebKit/Source/platform/scheduler/base/task_queue_manager.cc
|
| index 7def64ac93093b72ead7c15b75b697fc0de71f4e..a417cae0f9f0e4f0d5da59a5a557283319d86ca5 100644
|
| --- a/third_party/WebKit/Source/platform/scheduler/base/task_queue_manager.cc
|
| +++ b/third_party/WebKit/Source/platform/scheduler/base/task_queue_manager.cc
|
| @@ -38,6 +38,16 @@ void RecordImmediateTaskQueueingDuration(tracked_objects::Duration duration) {
|
| double MonotonicTimeInSeconds(base::TimeTicks timeTicks) {
|
| return (timeTicks - base::TimeTicks()).InSecondsF();
|
| }
|
| +
|
| +// Converts a OnceClosure to a RepeatingClosure. It hits CHECK failure to run
|
| +// the resulting RepeatingClosure more than once.
|
| +// TODO(tzik): This will be unneeded after the Closure-to-OnceClosure migration
|
| +// on TaskRunner finished. Remove it once it gets unneeded.
|
| +base::RepeatingClosure UnsafeConvertOnceClosureToRepeating(
|
| + base::OnceClosure cb) {
|
| + return base::BindRepeating([](base::OnceClosure cb) { std::move(cb).Run(); },
|
| + base::Passed(&cb));
|
| +}
|
| }
|
|
|
| TaskQueueManager::TaskQueueManager(
|
| @@ -319,8 +329,11 @@ TaskQueueManager::ProcessTaskResult TaskQueueManager::ProcessTaskFromWorkQueue(
|
| // arbitrarily delayed so the additional delay should not be a problem.
|
| // TODO(skyostil): Figure out a way to not forget which task queue the
|
| // task is associated with. See http://crbug.com/522843.
|
| - delegate_->PostNonNestableTask(pending_task.posted_from,
|
| - std::move(pending_task.task));
|
| + // TODO(tzik): Remove base::UnsafeConvertOnceClosureToRepeating once
|
| + // TaskRunners have migrated to OnceClosure.
|
| + delegate_->PostNonNestableTask(
|
| + pending_task.posted_from,
|
| + UnsafeConvertOnceClosureToRepeating(std::move(pending_task.task)));
|
| return ProcessTaskResult::DEFERRED;
|
| }
|
|
|
| @@ -341,7 +354,7 @@ TaskQueueManager::ProcessTaskResult TaskQueueManager::ProcessTaskFromWorkQueue(
|
| internal::TaskQueueImpl* prev_executing_task_queue =
|
| currently_executing_task_queue_;
|
| currently_executing_task_queue_ = queue;
|
| - task_annotator_.RunTask("TaskQueueManager::PostTask", pending_task);
|
| + task_annotator_.RunTask("TaskQueueManager::PostTask", &pending_task);
|
| // Detect if the TaskQueueManager just got deleted. If this happens we must
|
| // not access any member variables after this point.
|
| if (protect->HasOneRef())
|
|
|