Chromium Code Reviews| Index: base/task_scheduler/utils.cc |
| diff --git a/base/task_scheduler/utils.cc b/base/task_scheduler/utils.cc |
| index f47ca931c907c01b63b2ca9df907c515557516e9..194ab7f35cb6419d4e36a85f5dda3fd97f6f2804 100644 |
| --- a/base/task_scheduler/utils.cc |
| +++ b/base/task_scheduler/utils.cc |
| @@ -9,6 +9,7 @@ |
| #include "base/callback.h" |
| #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/scheduler_task_executor.h" |
| #include "base/task_scheduler/sequence_sort_key.h" |
| @@ -24,21 +25,28 @@ bool PostTaskToExecutor(const tracked_objects::Location& posted_from, |
| const TimeDelta& delay, |
| scoped_refptr<Sequence> sequence, |
| SchedulerTaskExecutor* executor, |
| - TaskTracker* task_tracker) { |
| + TaskTracker* task_tracker, |
| + DelayedTaskManager* delayed_task_manager) { |
| DCHECK(!closure.is_null()); |
| DCHECK(sequence); |
| DCHECK(executor); |
| DCHECK(task_tracker); |
| - |
| - // TODO(fdoray): Support delayed tasks. |
| - DCHECK(delay.is_zero()); |
| + DCHECK(delayed_task_manager); |
| std::unique_ptr<Task> task(new Task(posted_from, closure, traits)); |
|
gab
2016/04/15 15:39:10
TrackingInfo (Task's subsubclass) has a constructo
fdoray
2016/04/15 17:41:47
Done. Related CL: https://codereview.chromium.org/
|
| + if (!delay.is_zero()) |
| + task->delayed_run_time = TimeTicks::Now() + delay; |
| if (!task_tracker->WillPostTask(task.get())) |
| return false; |
| - executor->PostTaskWithSequence(std::move(task), std::move(sequence)); |
| + if (delay.is_zero()) { |
| + executor->PostTaskWithSequence(std::move(task), std::move(sequence)); |
| + } else { |
| + delayed_task_manager->AddDelayedTask(std::move(task), std::move(sequence), |
| + executor); |
| + } |
| + |
| return true; |
| } |