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 251ac56523ae93077f53192525332fa6f95d4c9c..f1d9dc4c0683607d143c26f543099a0994211817 100644 |
--- a/components/scheduler/base/task_queue_manager_unittest.cc |
+++ b/components/scheduler/base/task_queue_manager_unittest.cc |
@@ -216,12 +216,12 @@ TEST_F(TaskQueueManagerTest, QueuePolling) { |
Initialize(1u); |
std::vector<int> run_order; |
- EXPECT_TRUE(runners_[0]->IsQueueEmpty()); |
+ EXPECT_FALSE(runners_[0]->HasPendingImmediateTask()); |
runners_[0]->PostTask(FROM_HERE, base::Bind(&TestTask, 1, &run_order)); |
- EXPECT_FALSE(runners_[0]->IsQueueEmpty()); |
+ EXPECT_TRUE(runners_[0]->HasPendingImmediateTask()); |
test_task_runner_->RunUntilIdle(); |
- EXPECT_TRUE(runners_[0]->IsQueueEmpty()); |
+ EXPECT_FALSE(runners_[0]->HasPendingImmediateTask()); |
} |
TEST_F(TaskQueueManagerTest, DelayedTaskPosting) { |
@@ -232,7 +232,8 @@ TEST_F(TaskQueueManagerTest, DelayedTaskPosting) { |
runners_[0]->PostDelayedTask(FROM_HERE, base::Bind(&TestTask, 1, &run_order), |
delay); |
EXPECT_EQ(delay, test_task_runner_->DelayToNextTaskTime()); |
- EXPECT_TRUE(runners_[0]->IsQueueEmpty()); |
+ EXPECT_EQ(TaskQueue::QueueState::NO_IMMEDIATE_WORK, |
+ runners_[0]->GetQueueState()); |
EXPECT_TRUE(run_order.empty()); |
// The task doesn't run before the delay has completed. |
@@ -242,6 +243,7 @@ TEST_F(TaskQueueManagerTest, DelayedTaskPosting) { |
// After the delay has completed, the task runs normally. |
test_task_runner_->RunForPeriod(base::TimeDelta::FromMilliseconds(1)); |
EXPECT_THAT(run_order, ElementsAre(1)); |
+ EXPECT_EQ(TaskQueue::QueueState::EMPTY, runners_[0]->GetQueueState()); |
} |
bool MessageLoopTaskCounter(size_t* count) { |
@@ -375,7 +377,7 @@ TEST_F(TaskQueueManagerTest, ManualPumping) { |
EXPECT_FALSE(test_task_runner_->HasPendingTasks()); |
// However polling still works. |
- EXPECT_FALSE(runners_[0]->IsQueueEmpty()); |
+ EXPECT_TRUE(runners_[0]->HasPendingImmediateTask()); |
// After pumping the task runs normally. |
runners_[0]->PumpQueue(); |
@@ -1003,32 +1005,32 @@ TEST_F(TaskQueueManagerTest, GetAndClearSystemIsQuiescentBit) { |
EXPECT_TRUE(manager_->GetAndClearSystemIsQuiescentBit()); |
} |
-TEST_F(TaskQueueManagerTest, IsQueueEmpty) { |
+TEST_F(TaskQueueManagerTest, HasPendingImmediateTask) { |
Initialize(2u); |
internal::TaskQueueImpl* queue0 = runners_[0].get(); |
internal::TaskQueueImpl* queue1 = runners_[1].get(); |
queue0->SetPumpPolicy(TaskQueue::PumpPolicy::AUTO); |
queue1->SetPumpPolicy(TaskQueue::PumpPolicy::MANUAL); |
- EXPECT_TRUE(queue0->IsQueueEmpty()); |
- EXPECT_TRUE(queue1->IsQueueEmpty()); |
+ EXPECT_FALSE(queue0->HasPendingImmediateTask()); |
+ EXPECT_FALSE(queue1->HasPendingImmediateTask()); |
queue0->PostTask(FROM_HERE, base::Bind(NullTask)); |
queue1->PostTask(FROM_HERE, base::Bind(NullTask)); |
- EXPECT_FALSE(queue0->IsQueueEmpty()); |
- EXPECT_FALSE(queue1->IsQueueEmpty()); |
+ EXPECT_TRUE(queue0->HasPendingImmediateTask()); |
+ EXPECT_TRUE(queue1->HasPendingImmediateTask()); |
test_task_runner_->RunUntilIdle(); |
- EXPECT_TRUE(queue0->IsQueueEmpty()); |
- EXPECT_FALSE(queue1->IsQueueEmpty()); |
+ EXPECT_FALSE(queue0->HasPendingImmediateTask()); |
+ EXPECT_TRUE(queue1->HasPendingImmediateTask()); |
queue1->PumpQueue(); |
- EXPECT_TRUE(queue0->IsQueueEmpty()); |
- EXPECT_FALSE(queue1->IsQueueEmpty()); |
+ EXPECT_FALSE(queue0->HasPendingImmediateTask()); |
+ EXPECT_TRUE(queue1->HasPendingImmediateTask()); |
test_task_runner_->RunUntilIdle(); |
- EXPECT_TRUE(queue0->IsQueueEmpty()); |
- EXPECT_TRUE(queue1->IsQueueEmpty()); |
+ EXPECT_FALSE(queue0->HasPendingImmediateTask()); |
+ EXPECT_FALSE(queue1->HasPendingImmediateTask()); |
} |
TEST_F(TaskQueueManagerTest, GetQueueState) { |
@@ -1102,33 +1104,6 @@ TEST_F(TaskQueueManagerTest, DelayedTaskDoesNotSkipAHeadOfShorterDelayedTask) { |
EXPECT_THAT(run_order, ElementsAre(2, 1)); |
} |
-TEST_F(TaskQueueManagerTest, DelayedTaskWithAbsoluteRunTime) { |
- Initialize(1u); |
- |
- // 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; |
- |
- std::vector<int> run_order; |
- runners_[0]->PostDelayedTaskAt( |
- FROM_HERE, base::Bind(&TestTask, 1, &run_order), runTime1); |
- runners_[0]->PostDelayedTaskAt( |
- FROM_HERE, base::Bind(&TestTask, 2, &run_order), runTime2); |
- runners_[0]->PostDelayedTaskAt( |
- FROM_HERE, base::Bind(&TestTask, 3, &run_order), runTime3); |
- runners_[0]->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)); |
-} |
- |
void CheckIsNested(bool* is_nested) { |
*is_nested = base::MessageLoop::current()->IsNested(); |
} |
@@ -1323,20 +1298,6 @@ TEST_F(TaskQueueManagerTest, OnUnregisterTaskQueue) { |
manager_->SetObserver(nullptr); |
} |
-TEST_F(TaskQueueManagerTest, ScheduleDelayedWorkIsNotReEntrant) { |
- Initialize(1u); |
- |
- // Post two tasks into the past. The second one used to trigger a deadlock |
- // because it tried to re-entrantly wake the first task in the same queue. |
- runners_[0]->PostDelayedTaskAt( |
- FROM_HERE, base::Bind(&NullTask), |
- base::TimeTicks() + base::TimeDelta::FromMicroseconds(100)); |
- runners_[0]->PostDelayedTaskAt( |
- FROM_HERE, base::Bind(&NullTask), |
- base::TimeTicks() + base::TimeDelta::FromMicroseconds(200)); |
- test_task_runner_->RunUntilIdle(); |
-} |
- |
void HasOneRefTask(std::vector<bool>* log, internal::TaskQueueImpl* tq) { |
log->push_back(tq->HasOneRef()); |
} |
@@ -1387,12 +1348,14 @@ TEST_F(TaskQueueManagerTest, TimeDomainsAreIndependant) { |
Initialize(2u); |
base::TimeTicks start_time = manager_->delegate()->NowTicks(); |
- scoped_refptr<VirtualTimeDomain> domain_a(new VirtualTimeDomain(start_time)); |
- scoped_refptr<VirtualTimeDomain> domain_b(new VirtualTimeDomain(start_time)); |
- manager_->RegisterTimeDomain(domain_a); |
- manager_->RegisterTimeDomain(domain_b); |
- runners_[0]->SetTimeDomain(domain_a); |
- runners_[1]->SetTimeDomain(domain_b); |
+ scoped_ptr<VirtualTimeDomain> domain_a( |
+ new VirtualTimeDomain(nullptr, start_time)); |
+ scoped_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()); |
+ runners_[1]->SetTimeDomain(domain_b.get()); |
std::vector<int> run_order; |
runners_[0]->PostDelayedTask(FROM_HERE, base::Bind(&TestTask, 1, &run_order), |
@@ -1419,17 +1382,18 @@ TEST_F(TaskQueueManagerTest, TimeDomainsAreIndependant) { |
test_task_runner_->RunUntilIdle(); |
EXPECT_THAT(run_order, ElementsAre(4, 5, 6, 1, 2, 3)); |
- manager_->UnregisterTimeDomain(domain_a); |
- manager_->UnregisterTimeDomain(domain_b); |
+ manager_->UnregisterTimeDomain(domain_a.get()); |
+ manager_->UnregisterTimeDomain(domain_b.get()); |
} |
TEST_F(TaskQueueManagerTest, TimeDomainMigration) { |
Initialize(1u); |
base::TimeTicks start_time = manager_->delegate()->NowTicks(); |
- scoped_refptr<VirtualTimeDomain> domain_a(new VirtualTimeDomain(start_time)); |
- manager_->RegisterTimeDomain(domain_a); |
- runners_[0]->SetTimeDomain(domain_a); |
+ scoped_ptr<VirtualTimeDomain> domain_a( |
+ new VirtualTimeDomain(nullptr, start_time)); |
+ manager_->RegisterTimeDomain(domain_a.get()); |
+ runners_[0]->SetTimeDomain(domain_a.get()); |
std::vector<int> run_order; |
runners_[0]->PostDelayedTask(FROM_HERE, base::Bind(&TestTask, 1, &run_order), |
@@ -1445,17 +1409,18 @@ TEST_F(TaskQueueManagerTest, TimeDomainMigration) { |
test_task_runner_->RunUntilIdle(); |
EXPECT_THAT(run_order, ElementsAre(1, 2)); |
- scoped_refptr<VirtualTimeDomain> domain_b(new VirtualTimeDomain(start_time)); |
- manager_->RegisterTimeDomain(domain_b); |
- runners_[0]->SetTimeDomain(domain_b); |
+ scoped_ptr<VirtualTimeDomain> domain_b( |
+ new VirtualTimeDomain(nullptr, start_time)); |
+ manager_->RegisterTimeDomain(domain_b.get()); |
+ runners_[0]->SetTimeDomain(domain_b.get()); |
domain_b->AdvanceTo(start_time + base::TimeDelta::FromMilliseconds(50)); |
test_task_runner_->RunUntilIdle(); |
EXPECT_THAT(run_order, ElementsAre(1, 2, 3, 4)); |
- manager_->UnregisterTimeDomain(domain_a); |
- manager_->UnregisterTimeDomain(domain_b); |
+ manager_->UnregisterTimeDomain(domain_a.get()); |
+ manager_->UnregisterTimeDomain(domain_b.get()); |
} |
namespace { |