Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(506)

Unified Diff: components/scheduler/child/task_queue_manager_unittest.cc

Issue 1223163006: Implement PostDelayedTaskAt for guaranteed timer ordering (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add missing include to IdleHelperTest. Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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
« no previous file with comments | « components/scheduler/child/task_queue_manager_perftest.cc ('k') | components/scheduler/child/web_scheduler_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698