Index: third_party/WebKit/Source/platform/scheduler/base/task_queue_manager_unittest.cc |
diff --git a/third_party/WebKit/Source/platform/scheduler/base/task_queue_manager_unittest.cc b/third_party/WebKit/Source/platform/scheduler/base/task_queue_manager_unittest.cc |
index 79e17b6869ca2ffc83ad70616b1f966997a82e88..97ef5e9597650c1e1b6d4b50d9ffe272a17922a7 100644 |
--- a/third_party/WebKit/Source/platform/scheduler/base/task_queue_manager_unittest.cc |
+++ b/third_party/WebKit/Source/platform/scheduler/base/task_queue_manager_unittest.cc |
@@ -116,37 +116,8 @@ |
manager_->NewTaskQueue(TaskQueue::Spec(TaskQueue::QueueType::TEST))); |
} |
- void UpdateWorkQueues( |
- const std::set<internal::TaskQueueImpl*>* queues_to_reload, |
- LazyNow lazy_now) { |
- manager_->UpdateWorkQueues(queues_to_reload, &lazy_now); |
- } |
- |
- base::Optional<base::TimeDelta> ComputeDelayTillNextTask(LazyNow* lazy_now) { |
- base::AutoLock lock(manager_->any_thread_lock_); |
- return manager_->ComputeDelayTillNextTaskLocked(lazy_now); |
- } |
- |
- void PostDoWorkContinuation(base::Optional<base::TimeDelta> next_delay, |
- LazyNow* lazy_now) { |
- MoveableAutoLock lock(manager_->any_thread_lock_); |
- return manager_->PostDoWorkContinuationLocked(next_delay, lazy_now, |
- std::move(lock)); |
- } |
- |
- int immediate_do_work_posted_count() const { |
- base::AutoLock lock(manager_->any_thread_lock_); |
- return manager_->any_thread().immediate_do_work_posted_count; |
- } |
- |
- base::TimeTicks next_delayed_do_work() const { |
- return manager_->next_delayed_do_work_; |
- } |
- |
- void MaybeScheduleImmediateWorkLocked( |
- const tracked_objects::Location& from_here) { |
- MoveableAutoLock lock(manager_->any_thread_lock_); |
- manager_->MaybeScheduleImmediateWorkLocked(from_here, std::move(lock)); |
+ void UpdateWorkQueues(LazyNow lazy_now) { |
+ manager_->UpdateWorkQueues(lazy_now); |
} |
// Runs all immediate tasks until there is no more work to do and advances |
@@ -518,34 +489,6 @@ |
EXPECT_THAT(run_order, ElementsAre(1)); |
} |
-TEST_F(TaskQueueManagerTest, RemovingFenceForDisabledQueueDoesNotPostDoWork) { |
- Initialize(1u); |
- |
- std::vector<EnqueueOrder> run_order; |
- std::unique_ptr<TaskQueue::QueueEnabledVoter> voter = |
- runners_[0]->CreateQueueEnabledVoter(); |
- voter->SetQueueEnabled(false); |
- runners_[0]->InsertFence(TaskQueue::InsertFencePosition::NOW); |
- runners_[0]->PostTask(FROM_HERE, base::Bind(&TestTask, 1, &run_order)); |
- |
- runners_[0]->RemoveFence(); |
- EXPECT_FALSE(test_task_runner_->HasPendingTasks()); |
-} |
- |
-TEST_F(TaskQueueManagerTest, EnablingFencedQueueDoesNotPostDoWork) { |
- Initialize(1u); |
- |
- std::vector<EnqueueOrder> run_order; |
- std::unique_ptr<TaskQueue::QueueEnabledVoter> voter = |
- runners_[0]->CreateQueueEnabledVoter(); |
- voter->SetQueueEnabled(false); |
- runners_[0]->InsertFence(TaskQueue::InsertFencePosition::NOW); |
- runners_[0]->PostTask(FROM_HERE, base::Bind(&TestTask, 1, &run_order)); |
- |
- voter->SetQueueEnabled(true); |
- EXPECT_FALSE(test_task_runner_->HasPendingTasks()); |
-} |
- |
TEST_F(TaskQueueManagerTest, DenyRunning_BeforePosting) { |
Initialize(1u); |
@@ -1094,12 +1037,12 @@ |
// Move time forwards until just before the delayed task should run. |
now_src_->Advance(base::TimeDelta::FromMilliseconds(10)); |
- UpdateWorkQueues(nullptr, LazyNow(now_src_.get())); |
+ UpdateWorkQueues(LazyNow(now_src_.get())); |
EXPECT_FALSE(runners_[0]->HasPendingImmediateWork()); |
// Force the delayed task onto the work queue. |
now_src_->Advance(base::TimeDelta::FromMilliseconds(2)); |
- UpdateWorkQueues(nullptr, LazyNow(now_src_.get())); |
+ UpdateWorkQueues(LazyNow(now_src_.get())); |
EXPECT_TRUE(runners_[0]->HasPendingImmediateWork()); |
test_task_runner_->RunUntilIdle(); |
@@ -2219,199 +2162,5 @@ |
voter.reset(); |
} |
-TEST_F(TaskQueueManagerTest, ComputeDelayTillNextTask) { |
- Initialize(2u); |
- |
- std::unique_ptr<RealTimeDomain> domain2(new RealTimeDomain("test")); |
- manager_->RegisterTimeDomain(domain2.get()); |
- runners_[1]->SetTimeDomain(domain2.get()); |
- |
- LazyNow lazy_now(now_src_.get()); |
- EXPECT_FALSE(static_cast<bool>(ComputeDelayTillNextTask(&lazy_now))); |
- |
- runners_[0]->PostDelayedTask(FROM_HERE, base::Bind(&NopTask), |
- base::TimeDelta::FromSeconds(10)); |
- |
- EXPECT_EQ(base::TimeDelta::FromSeconds(10), |
- ComputeDelayTillNextTask(&lazy_now).value()); |
- |
- runners_[1]->PostDelayedTask(FROM_HERE, base::Bind(&NopTask), |
- base::TimeDelta::FromSeconds(15)); |
- |
- EXPECT_EQ(base::TimeDelta::FromSeconds(10), |
- ComputeDelayTillNextTask(&lazy_now).value()); |
- |
- runners_[1]->PostDelayedTask(FROM_HERE, base::Bind(&NopTask), |
- base::TimeDelta::FromSeconds(5)); |
- |
- EXPECT_EQ(base::TimeDelta::FromSeconds(5), |
- ComputeDelayTillNextTask(&lazy_now).value()); |
- |
- runners_[0]->PostTask(FROM_HERE, base::Bind(&NopTask)); |
- |
- EXPECT_EQ(base::TimeDelta(), ComputeDelayTillNextTask(&lazy_now).value()); |
- |
- // Tidy up. |
- runners_[1]->UnregisterTaskQueue(); |
- manager_->UnregisterTimeDomain(domain2.get()); |
-} |
- |
-TEST_F(TaskQueueManagerTest, PostDoWorkContinuation_NoMoreWork) { |
- Initialize(1u); |
- |
- LazyNow lazy_now(now_src_.get()); |
- PostDoWorkContinuation(base::Optional<base::TimeDelta>(), &lazy_now); |
- |
- EXPECT_EQ(0u, test_task_runner_->NumPendingTasks()); |
- EXPECT_EQ(0, immediate_do_work_posted_count()); |
- EXPECT_TRUE(next_delayed_do_work().is_null()); |
-} |
- |
-TEST_F(TaskQueueManagerTest, PostDoWorkContinuation_ImmediateWork) { |
- Initialize(1u); |
- |
- LazyNow lazy_now(now_src_.get()); |
- PostDoWorkContinuation(base::TimeDelta(), &lazy_now); |
- |
- EXPECT_EQ(1u, test_task_runner_->NumPendingTasks()); |
- EXPECT_EQ(base::TimeDelta(), test_task_runner_->DelayToNextTaskTime()); |
- EXPECT_EQ(1, immediate_do_work_posted_count()); |
- EXPECT_TRUE(next_delayed_do_work().is_null()); |
-} |
- |
-TEST_F(TaskQueueManagerTest, PostDoWorkContinuation_DelayedWork) { |
- Initialize(1u); |
- |
- LazyNow lazy_now(now_src_.get()); |
- PostDoWorkContinuation(base::TimeDelta::FromSeconds(1), &lazy_now); |
- |
- EXPECT_EQ(1u, test_task_runner_->NumPendingTasks()); |
- EXPECT_EQ(base::TimeDelta::FromSeconds(1), |
- test_task_runner_->DelayToNextTaskTime()); |
- EXPECT_EQ(0, immediate_do_work_posted_count()); |
- EXPECT_EQ(lazy_now.Now() + base::TimeDelta::FromSeconds(1), |
- next_delayed_do_work()); |
-} |
- |
-TEST_F(TaskQueueManagerTest, |
- PostDoWorkContinuation_DelayedWorkButImmediateDoWorkAlreadyPosted) { |
- Initialize(1u); |
- |
- MaybeScheduleImmediateWorkLocked(FROM_HERE); |
- EXPECT_EQ(1u, test_task_runner_->NumPendingTasks()); |
- EXPECT_EQ(base::TimeDelta(), test_task_runner_->DelayToNextTaskTime()); |
- EXPECT_EQ(1, immediate_do_work_posted_count()); |
- |
- LazyNow lazy_now(now_src_.get()); |
- PostDoWorkContinuation(base::TimeDelta::FromSeconds(1), &lazy_now); |
- |
- // Test that a delayed task didn't get posted. |
- EXPECT_EQ(1u, test_task_runner_->NumPendingTasks()); |
- EXPECT_EQ(base::TimeDelta(), test_task_runner_->DelayToNextTaskTime()); |
- EXPECT_EQ(1, immediate_do_work_posted_count()); |
- EXPECT_TRUE(next_delayed_do_work().is_null()); |
-} |
- |
-TEST_F(TaskQueueManagerTest, PostDoWorkContinuation_DelayedWorkTimeChanges) { |
- Initialize(1u); |
- |
- LazyNow lazy_now(now_src_.get()); |
- PostDoWorkContinuation(base::TimeDelta::FromSeconds(1), &lazy_now); |
- |
- EXPECT_TRUE(test_task_runner_->HasPendingTasks()); |
- EXPECT_EQ(0, immediate_do_work_posted_count()); |
- EXPECT_EQ(base::TimeDelta::FromSeconds(1), |
- test_task_runner_->DelayToNextTaskTime()); |
- EXPECT_EQ(lazy_now.Now() + base::TimeDelta::FromSeconds(1), |
- next_delayed_do_work()); |
- |
- PostDoWorkContinuation(base::TimeDelta::FromSeconds(10), &lazy_now); |
- |
- // This should have resulted in the previous task getting canceled and a new |
- // one getting posted. |
- EXPECT_EQ(2u, test_task_runner_->NumPendingTasks()); |
- test_task_runner_->RemoveCancelledTasks(); |
- EXPECT_EQ(1u, test_task_runner_->NumPendingTasks()); |
- EXPECT_EQ(base::TimeDelta::FromSeconds(10), |
- test_task_runner_->DelayToNextTaskTime()); |
- EXPECT_EQ(0, immediate_do_work_posted_count()); |
- EXPECT_EQ(lazy_now.Now() + base::TimeDelta::FromSeconds(10), |
- next_delayed_do_work()); |
-} |
- |
-TEST_F(TaskQueueManagerTest, |
- PostDoWorkContinuation_ImmediateWorkButDelayedDoWorkPending) { |
- Initialize(1u); |
- |
- LazyNow lazy_now(now_src_.get()); |
- PostDoWorkContinuation(base::TimeDelta::FromSeconds(1), &lazy_now); |
- |
- now_src_->Advance(base::TimeDelta::FromSeconds(1)); |
- lazy_now = LazyNow(now_src_.get()); |
- PostDoWorkContinuation(base::TimeDelta(), &lazy_now); |
- |
- // Because the delayed DoWork was pending we don't expect an immediate DoWork |
- // to get posted. |
- EXPECT_EQ(1u, test_task_runner_->NumPendingTasks()); |
- EXPECT_EQ(base::TimeDelta(), test_task_runner_->DelayToNextTaskTime()); |
- EXPECT_EQ(0, immediate_do_work_posted_count()); |
- EXPECT_EQ(lazy_now.Now(), next_delayed_do_work()); |
-} |
- |
-namespace { |
-void MessageLoopTaskWithDelayedQuit( |
- base::MessageLoop* message_loop, |
- base::SimpleTestTickClock* now_src, |
- scoped_refptr<internal::TaskQueueImpl> task_queue) { |
- base::MessageLoop::ScopedNestableTaskAllower allow(message_loop); |
- base::RunLoop run_loop; |
- task_queue->PostDelayedTask(FROM_HERE, run_loop.QuitClosure(), |
- base::TimeDelta::FromMilliseconds(100)); |
- now_src->Advance(base::TimeDelta::FromMilliseconds(200)); |
- run_loop.Run(); |
-} |
-} // namespace |
- |
-TEST_F(TaskQueueManagerTest, DelayedTaskRunsInNestedMessageLoop) { |
- InitializeWithRealMessageLoop(1u); |
- base::RunLoop run_loop; |
- runners_[0]->PostTask( |
- FROM_HERE, |
- base::Bind(&MessageLoopTaskWithDelayedQuit, message_loop_.get(), |
- now_src_.get(), base::RetainedRef(runners_[0]))); |
- run_loop.RunUntilIdle(); |
-} |
- |
-namespace { |
-void MessageLoopTaskWithImmediateQuit( |
- base::MessageLoop* message_loop, |
- base::Closure non_nested_quit_closure, |
- scoped_refptr<internal::TaskQueueImpl> task_queue) { |
- base::MessageLoop::ScopedNestableTaskAllower allow(message_loop); |
- |
- base::RunLoop run_loop; |
- // Needed because entering the nested message loop causes a DoWork to get |
- // posted. |
- task_queue->PostTask(FROM_HERE, base::Bind(&NopTask)); |
- task_queue->PostTask(FROM_HERE, run_loop.QuitClosure()); |
- run_loop.Run(); |
- non_nested_quit_closure.Run(); |
-} |
-} // namespace |
- |
-TEST_F(TaskQueueManagerTest, |
- DelayedNestedMessageLoopDoesntPreventTasksRunning) { |
- InitializeWithRealMessageLoop(1u); |
- base::RunLoop run_loop; |
- runners_[0]->PostDelayedTask( |
- FROM_HERE, |
- base::Bind(&MessageLoopTaskWithImmediateQuit, message_loop_.get(), |
- run_loop.QuitClosure(), base::RetainedRef(runners_[0])), |
- base::TimeDelta::FromMilliseconds(100)); |
- |
- now_src_->Advance(base::TimeDelta::FromMilliseconds(200)); |
- run_loop.Run(); |
-} |
- |
} // namespace scheduler |
} // namespace blink |