| Index: base/task_scheduler/utils.cc
|
| diff --git a/base/task_scheduler/utils.cc b/base/task_scheduler/utils.cc
|
| index d43028fe7773dcf82199470d98bb971d58393220..3623b438f83e373aa9fba0f2289208da1600cb6b 100644
|
| --- a/base/task_scheduler/utils.cc
|
| +++ b/base/task_scheduler/utils.cc
|
| @@ -8,6 +8,7 @@
|
|
|
| #include "base/logging.h"
|
| #include "base/memory/ptr_util.h"
|
| +#include "base/task_scheduler/delayed_task_manager.h"
|
| #include "base/task_scheduler/priority_queue.h"
|
| #include "base/task_scheduler/sequence_sort_key.h"
|
| #include "base/task_scheduler/task_tracker.h"
|
| @@ -15,17 +16,12 @@
|
| namespace base {
|
| namespace internal {
|
|
|
| -bool PostTaskHelper(std::unique_ptr<Task> task,
|
| - scoped_refptr<Sequence> sequence,
|
| - PriorityQueue* priority_queue,
|
| - TaskTracker* task_tracker) {
|
| +void BASE_EXPORT PostTaskNowHelper(std::unique_ptr<Task> task,
|
| + scoped_refptr<Sequence> sequence,
|
| + PriorityQueue* priority_queue) {
|
| DCHECK(task);
|
| DCHECK(sequence);
|
| DCHECK(priority_queue);
|
| - DCHECK(task_tracker);
|
| -
|
| - if (!task_tracker->WillPostTask(task.get()))
|
| - return false;
|
|
|
| const bool sequence_was_empty = sequence->PushTask(std::move(task));
|
| if (sequence_was_empty) {
|
| @@ -39,6 +35,27 @@ bool PostTaskHelper(std::unique_ptr<Task> task,
|
| WrapUnique(new PriorityQueue::SequenceAndSortKey(std::move(sequence),
|
| sequence_sort_key)));
|
| }
|
| +}
|
| +
|
| +bool PostTaskHelper(std::unique_ptr<Task> task,
|
| + scoped_refptr<Sequence> sequence,
|
| + PriorityQueue* priority_queue,
|
| + TaskTracker* task_tracker,
|
| + DelayedTaskManager* delayed_task_manager) {
|
| + DCHECK(task);
|
| + DCHECK(sequence);
|
| + DCHECK(priority_queue);
|
| + DCHECK(task_tracker);
|
| +
|
| + if (!task_tracker->WillPostTask(task.get()))
|
| + return false;
|
| +
|
| + if (task->delayed_run_time.is_null()) {
|
| + PostTaskNowHelper(std::move(task), std::move(sequence), priority_queue);
|
| + } else {
|
| + delayed_task_manager->AddDelayedTask(std::move(task), std::move(sequence),
|
| + priority_queue);
|
| + }
|
|
|
| return true;
|
| }
|
|
|