| Index: components/scheduler/child/task_queue_manager_unittest.cc
|
| diff --git a/components/scheduler/child/task_queue_manager_unittest.cc b/components/scheduler/child/task_queue_manager_unittest.cc
|
| index 55f738ff472d094b0e84b44eebe01c6d91c1f1bb..8b6839b20c0052e305944ec3dae313da18055b27 100644
|
| --- a/components/scheduler/child/task_queue_manager_unittest.cc
|
| +++ b/components/scheduler/child/task_queue_manager_unittest.cc
|
| @@ -11,6 +11,7 @@
|
| #include "cc/test/ordered_simple_task_runner.h"
|
| #include "components/scheduler/child/nestable_task_runner_for_test.h"
|
| #include "components/scheduler/child/scheduler_message_loop_delegate.h"
|
| +#include "components/scheduler/child/task_queue.h"
|
| #include "components/scheduler/child/task_queue_selector.h"
|
| #include "components/scheduler/child/test_time_source.h"
|
| #include "components/scheduler/test/test_always_fail_time_source.h"
|
| @@ -1297,4 +1298,34 @@ TEST_F(TaskQueueManagerTest, DelayedTaskDoesNotSkipAHeadOfShorterDelayedTask) {
|
| EXPECT_THAT(run_order, ElementsAre(2, 1));
|
| }
|
|
|
| +TEST_F(TaskQueueManagerTest, DelayedTaskWithAbsoluteRunTime) {
|
| + Initialize(1u, SelectorType::Automatic);
|
| +
|
| + scoped_refptr<TaskQueue> runner = manager_->TaskRunnerForQueue(0);
|
| +
|
| + std::vector<int> run_order;
|
| +
|
| + // One task in the past, two with the exact same run time and one in the
|
| + // future.
|
| + base::TimeDelta delay = base::TimeDelta::FromMilliseconds(10);
|
| + base::TimeTicks runTime1 = now_src_->NowTicks() - delay;
|
| + base::TimeTicks runTime2 = now_src_->NowTicks();
|
| + base::TimeTicks runTime3 = now_src_->NowTicks();
|
| + base::TimeTicks runTime4 = now_src_->NowTicks() + delay;
|
| +
|
| + runner->PostDelayedTaskAt(FROM_HERE, base::Bind(&TestTask, 1, &run_order),
|
| + runTime1);
|
| + runner->PostDelayedTaskAt(FROM_HERE, base::Bind(&TestTask, 2, &run_order),
|
| + runTime2);
|
| + runner->PostDelayedTaskAt(FROM_HERE, base::Bind(&TestTask, 3, &run_order),
|
| + runTime3);
|
| + runner->PostDelayedTaskAt(FROM_HERE, base::Bind(&TestTask, 4, &run_order),
|
| + runTime4);
|
| +
|
| + now_src_->Advance(2 * delay);
|
| + test_task_runner_->RunUntilIdle();
|
| +
|
| + EXPECT_THAT(run_order, ElementsAre(1, 2, 3, 4));
|
| +}
|
| +
|
| } // namespace scheduler
|
|
|