Index: components/scheduler/base/task_queue_manager_unittest.cc |
diff --git a/components/scheduler/base/task_queue_manager_unittest.cc b/components/scheduler/base/task_queue_manager_unittest.cc |
index caf00b9b79e5ef10042e249866c5f024fd07a7ea..8f37a1f0cd31db788a8b75d9a5674f8ad7f6a876 100644 |
--- a/components/scheduler/base/task_queue_manager_unittest.cc |
+++ b/components/scheduler/base/task_queue_manager_unittest.cc |
@@ -1627,6 +1627,31 @@ TEST_F(TaskQueueManagerTest, TimeDomainMigration) { |
manager_->UnregisterTimeDomain(domain_b.get()); |
} |
+TEST_F(TaskQueueManagerTest, TimeDomainMigrationWithIncomingImmediateTasks) { |
+ Initialize(1u); |
+ |
+ base::TimeTicks start_time = manager_->delegate()->NowTicks(); |
+ std::unique_ptr<VirtualTimeDomain> domain_a( |
+ new VirtualTimeDomain(nullptr, start_time)); |
+ std::unique_ptr<VirtualTimeDomain> domain_b( |
+ new VirtualTimeDomain(nullptr, start_time)); |
+ manager_->RegisterTimeDomain(domain_a.get()); |
+ manager_->RegisterTimeDomain(domain_b.get()); |
+ |
+ runners_[0]->SetTimeDomain(domain_a.get()); |
+ std::vector<EnqueueOrder> run_order; |
+ runners_[0]->PostTask(FROM_HERE, base::Bind(&TestTask, 1, &run_order)); |
+ runners_[0]->SetTimeDomain(domain_b.get()); |
+ |
+ test_task_runner_->RunUntilIdle(); |
+ EXPECT_THAT(run_order, ElementsAre(1)); |
+ |
+ runners_[0]->UnregisterTaskQueue(); |
+ |
+ manager_->UnregisterTimeDomain(domain_a.get()); |
+ manager_->UnregisterTimeDomain(domain_b.get()); |
+} |
+ |
namespace { |
void ChromiumRunloopInspectionTask( |
scoped_refptr<cc::OrderedSimpleTaskRunner> test_task_runner) { |