| Index: base/deferred_sequenced_task_runner.cc
|
| diff --git a/base/deferred_sequenced_task_runner.cc b/base/deferred_sequenced_task_runner.cc
|
| index 7d09ef838cf37bc67137fa3549c0d77b01a01088..eed2a85032692cfdbcf5ad319bdd1a397bda8eca 100644
|
| --- a/base/deferred_sequenced_task_runner.cc
|
| +++ b/base/deferred_sequenced_task_runner.cc
|
| @@ -13,12 +13,16 @@ DeferredSequencedTaskRunner::DeferredTask::DeferredTask()
|
| : is_non_nestable(false) {
|
| }
|
|
|
| -DeferredSequencedTaskRunner::DeferredTask::DeferredTask(
|
| - const DeferredTask& other) = default;
|
| +DeferredSequencedTaskRunner::DeferredTask::DeferredTask(DeferredTask&& other) =
|
| + default;
|
|
|
| DeferredSequencedTaskRunner::DeferredTask::~DeferredTask() {
|
| }
|
|
|
| +DeferredSequencedTaskRunner::DeferredTask&
|
| +DeferredSequencedTaskRunner::DeferredTask::operator=(DeferredTask&& other) =
|
| + default;
|
| +
|
| DeferredSequencedTaskRunner::DeferredSequencedTaskRunner(
|
| scoped_refptr<SequencedTaskRunner> target_task_runner)
|
| : started_(false), target_task_runner_(std::move(target_task_runner)) {}
|
| @@ -28,15 +32,17 @@ DeferredSequencedTaskRunner::~DeferredSequencedTaskRunner() {
|
|
|
| bool DeferredSequencedTaskRunner::PostDelayedTask(
|
| const tracked_objects::Location& from_here,
|
| - const Closure& task,
|
| + OnceClosure task,
|
| TimeDelta delay) {
|
| AutoLock lock(lock_);
|
| if (started_) {
|
| DCHECK(deferred_tasks_queue_.empty());
|
| - return target_task_runner_->PostDelayedTask(from_here, task, delay);
|
| + return target_task_runner_->PostDelayedTask(from_here, std::move(task),
|
| + delay);
|
| }
|
|
|
| - QueueDeferredTask(from_here, task, delay, false /* is_non_nestable */);
|
| + QueueDeferredTask(from_here, std::move(task), delay,
|
| + false /* is_non_nestable */);
|
| return true;
|
| }
|
|
|
| @@ -46,30 +52,30 @@ bool DeferredSequencedTaskRunner::RunsTasksOnCurrentThread() const {
|
|
|
| bool DeferredSequencedTaskRunner::PostNonNestableDelayedTask(
|
| const tracked_objects::Location& from_here,
|
| - const Closure& task,
|
| + OnceClosure task,
|
| TimeDelta delay) {
|
| AutoLock lock(lock_);
|
| if (started_) {
|
| DCHECK(deferred_tasks_queue_.empty());
|
| - return target_task_runner_->PostNonNestableDelayedTask(from_here,
|
| - task,
|
| - delay);
|
| + return target_task_runner_->PostNonNestableDelayedTask(
|
| + from_here, std::move(task), delay);
|
| }
|
| - QueueDeferredTask(from_here, task, delay, true /* is_non_nestable */);
|
| + QueueDeferredTask(from_here, std::move(task), delay,
|
| + true /* is_non_nestable */);
|
| return true;
|
| }
|
|
|
| void DeferredSequencedTaskRunner::QueueDeferredTask(
|
| const tracked_objects::Location& from_here,
|
| - const Closure& task,
|
| + OnceClosure task,
|
| TimeDelta delay,
|
| bool is_non_nestable) {
|
| DeferredTask deferred_task;
|
| deferred_task.posted_from = from_here;
|
| - deferred_task.task = task;
|
| + deferred_task.task = std::move(task);
|
| deferred_task.delay = delay;
|
| deferred_task.is_non_nestable = is_non_nestable;
|
| - deferred_tasks_queue_.push_back(deferred_task);
|
| + deferred_tasks_queue_.push_back(std::move(deferred_task));
|
| }
|
|
|
|
|
| @@ -82,13 +88,11 @@ void DeferredSequencedTaskRunner::Start() {
|
| ++i) {
|
| const DeferredTask& task = *i;
|
| if (task.is_non_nestable) {
|
| - target_task_runner_->PostNonNestableDelayedTask(task.posted_from,
|
| - task.task,
|
| - task.delay);
|
| + target_task_runner_->PostNonNestableDelayedTask(
|
| + task.posted_from, std::move(task.task), task.delay);
|
| } else {
|
| target_task_runner_->PostDelayedTask(task.posted_from,
|
| - task.task,
|
| - task.delay);
|
| + std::move(task.task), task.delay);
|
| }
|
| // Replace the i-th element in the |deferred_tasks_queue_| with an empty
|
| // |DelayedTask| to ensure that |task| is destroyed before the next task
|
|
|