| 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 4c03d296471113407836d8569137dd3211e4fe4c..0836421bca1ef7dfaae3d26683520ec4e0068e20 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
|
| @@ -106,6 +106,10 @@ class TaskQueueManagerTest : public testing::Test {
|
| runners_.push_back(manager_->NewTaskQueue(TaskQueue::Spec("test_queue")));
|
| }
|
|
|
| + void UpdateWorkQueues(LazyNow lazy_now) {
|
| + manager_->UpdateWorkQueues(lazy_now);
|
| + }
|
| +
|
| std::unique_ptr<base::MessageLoop> message_loop_;
|
| std::unique_ptr<base::SimpleTestTickClock> now_src_;
|
| scoped_refptr<TaskQueueManagerDelegateForTest> main_task_runner_;
|
| @@ -433,44 +437,6 @@ TEST_F(TaskQueueManagerTest, PendingDelayedTasksRemovedOnShutdown) {
|
| EXPECT_EQ(2, TestObject::destructor_count_);
|
| }
|
|
|
| -TEST_F(TaskQueueManagerTest, ManualPumping) {
|
| - Initialize(1u);
|
| - runners_[0]->SetPumpPolicy(TaskQueue::PumpPolicy::MANUAL);
|
| -
|
| - std::vector<EnqueueOrder> run_order;
|
| - // Posting a task when pumping is disabled doesn't result in work getting
|
| - // posted.
|
| - runners_[0]->PostTask(FROM_HERE, base::Bind(&TestTask, 1, &run_order));
|
| - EXPECT_FALSE(test_task_runner_->HasPendingTasks());
|
| -
|
| - // However polling still works.
|
| - EXPECT_TRUE(runners_[0]->HasPendingImmediateWork());
|
| -
|
| - // After pumping the task runs normally.
|
| - LazyNow lazy_now(now_src_.get());
|
| - runners_[0]->PumpQueue(&lazy_now, true);
|
| - EXPECT_TRUE(test_task_runner_->HasPendingTasks());
|
| - test_task_runner_->RunUntilIdle();
|
| - EXPECT_THAT(run_order, ElementsAre(1));
|
| -}
|
| -
|
| -TEST_F(TaskQueueManagerTest, ManualPumpingToggle) {
|
| - Initialize(1u);
|
| - runners_[0]->SetPumpPolicy(TaskQueue::PumpPolicy::MANUAL);
|
| -
|
| - std::vector<EnqueueOrder> run_order;
|
| - // Posting a task when pumping is disabled doesn't result in work getting
|
| - // posted.
|
| - runners_[0]->PostTask(FROM_HERE, base::Bind(&TestTask, 1, &run_order));
|
| - EXPECT_FALSE(test_task_runner_->HasPendingTasks());
|
| -
|
| - // When pumping is enabled the task runs normally.
|
| - runners_[0]->SetPumpPolicy(TaskQueue::PumpPolicy::AUTO);
|
| - EXPECT_TRUE(test_task_runner_->HasPendingTasks());
|
| - test_task_runner_->RunUntilIdle();
|
| - EXPECT_THAT(run_order, ElementsAre(1));
|
| -}
|
| -
|
| TEST_F(TaskQueueManagerTest, DenyRunning_BeforePosting) {
|
| Initialize(1u);
|
|
|
| @@ -501,106 +467,6 @@ TEST_F(TaskQueueManagerTest, DenyRunning_AfterPosting) {
|
| EXPECT_THAT(run_order, ElementsAre(1));
|
| }
|
|
|
| -TEST_F(TaskQueueManagerTest, DenyRunning_ManuallyPumpedTransitionsToAuto) {
|
| - Initialize(1u);
|
| -
|
| - std::vector<EnqueueOrder> run_order;
|
| - runners_[0]->SetPumpPolicy(TaskQueue::PumpPolicy::MANUAL);
|
| - runners_[0]->SetQueueEnabled(false);
|
| - runners_[0]->PostTask(FROM_HERE, base::Bind(&TestTask, 1, &run_order));
|
| -
|
| - test_task_runner_->RunUntilIdle();
|
| - EXPECT_TRUE(run_order.empty());
|
| -
|
| - runners_[0]->SetPumpPolicy(TaskQueue::PumpPolicy::AUTO);
|
| - runners_[0]->SetQueueEnabled(true);
|
| - test_task_runner_->RunUntilIdle();
|
| - EXPECT_THAT(run_order, ElementsAre(1));
|
| -}
|
| -
|
| -TEST_F(TaskQueueManagerTest, ManualPumpingWithDelayedTask) {
|
| - Initialize(1u);
|
| - runners_[0]->SetPumpPolicy(TaskQueue::PumpPolicy::MANUAL);
|
| -
|
| - std::vector<EnqueueOrder> run_order;
|
| - // Posting a delayed task when pumping will apply the delay, but won't cause
|
| - // work to executed afterwards.
|
| - base::TimeDelta delay(base::TimeDelta::FromMilliseconds(10));
|
| - runners_[0]->PostDelayedTask(FROM_HERE, base::Bind(&TestTask, 1, &run_order),
|
| - delay);
|
| -
|
| - // After pumping but before the delay period has expired, task does not run.
|
| - LazyNow lazy_now1(now_src_.get());
|
| - runners_[0]->PumpQueue(&lazy_now1, true);
|
| - test_task_runner_->RunForPeriod(base::TimeDelta::FromMilliseconds(5));
|
| - EXPECT_TRUE(run_order.empty());
|
| -
|
| - // Once the delay has expired, pumping causes the task to run.
|
| - now_src_->Advance(base::TimeDelta::FromMilliseconds(5));
|
| - LazyNow lazy_now2(now_src_.get());
|
| - runners_[0]->PumpQueue(&lazy_now2, true);
|
| - EXPECT_TRUE(test_task_runner_->HasPendingTasks());
|
| - test_task_runner_->RunPendingTasks();
|
| - EXPECT_THAT(run_order, ElementsAre(1));
|
| -}
|
| -
|
| -TEST_F(TaskQueueManagerTest, ManualPumpingWithMultipleDelayedTasks) {
|
| - Initialize(1u);
|
| - runners_[0]->SetPumpPolicy(TaskQueue::PumpPolicy::MANUAL);
|
| -
|
| - std::vector<EnqueueOrder> run_order;
|
| - // Posting a delayed task when pumping will apply the delay, but won't cause
|
| - // work to executed afterwards.
|
| - base::TimeDelta delay1(base::TimeDelta::FromMilliseconds(1));
|
| - base::TimeDelta delay2(base::TimeDelta::FromMilliseconds(10));
|
| - base::TimeDelta delay3(base::TimeDelta::FromMilliseconds(20));
|
| - runners_[0]->PostDelayedTask(FROM_HERE, base::Bind(&TestTask, 1, &run_order),
|
| - delay1);
|
| - runners_[0]->PostDelayedTask(FROM_HERE, base::Bind(&TestTask, 2, &run_order),
|
| - delay2);
|
| - runners_[0]->PostDelayedTask(FROM_HERE, base::Bind(&TestTask, 3, &run_order),
|
| - delay3);
|
| -
|
| - now_src_->Advance(base::TimeDelta::FromMilliseconds(15));
|
| - test_task_runner_->RunUntilIdle();
|
| - EXPECT_TRUE(run_order.empty());
|
| -
|
| - // Once the delay has expired, pumping causes the task to run.
|
| - LazyNow lazy_now(now_src_.get());
|
| - runners_[0]->PumpQueue(&lazy_now, true);
|
| - test_task_runner_->RunUntilIdle();
|
| - EXPECT_THAT(run_order, ElementsAre(1, 2));
|
| -}
|
| -
|
| -TEST_F(TaskQueueManagerTest, DelayedTasksDontAutoRunWithManualPumping) {
|
| - Initialize(1u);
|
| - runners_[0]->SetPumpPolicy(TaskQueue::PumpPolicy::MANUAL);
|
| -
|
| - std::vector<EnqueueOrder> run_order;
|
| - base::TimeDelta delay(base::TimeDelta::FromMilliseconds(10));
|
| - runners_[0]->PostDelayedTask(FROM_HERE, base::Bind(&TestTask, 1, &run_order),
|
| - delay);
|
| -
|
| - test_task_runner_->RunForPeriod(base::TimeDelta::FromMilliseconds(10));
|
| - EXPECT_TRUE(run_order.empty());
|
| -}
|
| -
|
| -TEST_F(TaskQueueManagerTest, ManualPumpingWithNonEmptyWorkQueue) {
|
| - Initialize(1u);
|
| - runners_[0]->SetPumpPolicy(TaskQueue::PumpPolicy::MANUAL);
|
| -
|
| - std::vector<EnqueueOrder> run_order;
|
| - // Posting two tasks and pumping twice should result in two tasks in the work
|
| - // queue.
|
| - LazyNow lazy_now(now_src_.get());
|
| - runners_[0]->PostTask(FROM_HERE, base::Bind(&TestTask, 1, &run_order));
|
| - runners_[0]->PumpQueue(&lazy_now, true);
|
| - runners_[0]->PostTask(FROM_HERE, base::Bind(&TestTask, 2, &run_order));
|
| - runners_[0]->PumpQueue(&lazy_now, true);
|
| -
|
| - EXPECT_EQ(2u, runners_[0]->immediate_work_queue()->Size());
|
| -}
|
| -
|
| void ReentrantTestTask(scoped_refptr<base::SingleThreadTaskRunner> runner,
|
| int countdown,
|
| std::vector<EnqueueOrder>* out_result) {
|
| @@ -717,150 +583,6 @@ TEST_F(TaskQueueManagerTest, WorkBatching) {
|
| EXPECT_THAT(run_order, ElementsAre(1, 2, 3, 4));
|
| }
|
|
|
| -TEST_F(TaskQueueManagerTest, AutoPumpAfterWakeup) {
|
| - Initialize(2u);
|
| - runners_[0]->SetPumpPolicy(TaskQueue::PumpPolicy::AFTER_WAKEUP);
|
| -
|
| - std::vector<EnqueueOrder> run_order;
|
| - runners_[0]->PostTask(FROM_HERE, base::Bind(&TestTask, 1, &run_order));
|
| - test_task_runner_->RunUntilIdle();
|
| - EXPECT_TRUE(run_order.empty()); // Shouldn't run - no other task to wake TQM.
|
| -
|
| - runners_[0]->PostTask(FROM_HERE, base::Bind(&TestTask, 2, &run_order));
|
| - test_task_runner_->RunUntilIdle();
|
| - EXPECT_TRUE(run_order.empty()); // Still shouldn't wake TQM.
|
| -
|
| - runners_[1]->PostTask(FROM_HERE, base::Bind(&TestTask, 3, &run_order));
|
| - test_task_runner_->RunUntilIdle();
|
| - // Executing a task on an auto pumped queue should wake the TQM.
|
| - EXPECT_THAT(run_order, ElementsAre(3, 1, 2));
|
| -}
|
| -
|
| -TEST_F(TaskQueueManagerTest, AutoPumpAfterWakeupWhenAlreadyAwake) {
|
| - Initialize(2u);
|
| - runners_[0]->SetPumpPolicy(TaskQueue::PumpPolicy::AFTER_WAKEUP);
|
| -
|
| - std::vector<EnqueueOrder> run_order;
|
| - runners_[0]->PostTask(FROM_HERE, base::Bind(&TestTask, 1, &run_order));
|
| - runners_[1]->PostTask(FROM_HERE, base::Bind(&TestTask, 2, &run_order));
|
| - test_task_runner_->RunUntilIdle();
|
| - EXPECT_THAT(run_order, ElementsAre(2, 1)); // TQM was already awake.
|
| -}
|
| -
|
| -TEST_F(TaskQueueManagerTest,
|
| - AutoPumpAfterWakeupTriggeredByManuallyPumpedQueue) {
|
| - Initialize(2u);
|
| - runners_[0]->SetPumpPolicy(TaskQueue::PumpPolicy::AFTER_WAKEUP);
|
| - runners_[1]->SetPumpPolicy(TaskQueue::PumpPolicy::MANUAL);
|
| -
|
| - std::vector<EnqueueOrder> run_order;
|
| - runners_[0]->PostTask(FROM_HERE, base::Bind(&TestTask, 1, &run_order));
|
| - test_task_runner_->RunUntilIdle();
|
| - EXPECT_TRUE(run_order.empty()); // Shouldn't run - no other task to wake TQM.
|
| -
|
| - runners_[1]->PostTask(FROM_HERE, base::Bind(&TestTask, 2, &run_order));
|
| - test_task_runner_->RunUntilIdle();
|
| - // This still shouldn't wake TQM as manual queue was not pumped.
|
| - EXPECT_TRUE(run_order.empty());
|
| -
|
| - LazyNow lazy_now(now_src_.get());
|
| - runners_[1]->PumpQueue(&lazy_now, true);
|
| - test_task_runner_->RunUntilIdle();
|
| - // Executing a task on an auto pumped queue should wake the TQM.
|
| - EXPECT_THAT(run_order, ElementsAre(2, 1));
|
| -}
|
| -
|
| -void TestPostingTask(scoped_refptr<base::SingleThreadTaskRunner> task_runner,
|
| - base::Closure task) {
|
| - task_runner->PostTask(FROM_HERE, task);
|
| -}
|
| -
|
| -TEST_F(TaskQueueManagerTest, AutoPumpAfterWakeupFromTask) {
|
| - Initialize(2u);
|
| - runners_[0]->SetPumpPolicy(TaskQueue::PumpPolicy::AFTER_WAKEUP);
|
| -
|
| - std::vector<EnqueueOrder> run_order;
|
| - // Check that a task which posts a task to an auto pump after wakeup queue
|
| - // doesn't cause the queue to wake up.
|
| - base::Closure after_wakeup_task = base::Bind(&TestTask, 1, &run_order);
|
| - runners_[1]->PostTask(
|
| - FROM_HERE, base::Bind(&TestPostingTask, runners_[0], after_wakeup_task));
|
| - test_task_runner_->RunUntilIdle();
|
| - EXPECT_TRUE(run_order.empty());
|
| -
|
| - // Wake up the queue.
|
| - runners_[1]->PostTask(FROM_HERE, base::Bind(&TestTask, 2, &run_order));
|
| - test_task_runner_->RunUntilIdle();
|
| - EXPECT_THAT(run_order, ElementsAre(2, 1));
|
| -}
|
| -
|
| -TEST_F(TaskQueueManagerTest, AutoPumpAfterWakeupFromMultipleTasks) {
|
| - Initialize(2u);
|
| - runners_[0]->SetPumpPolicy(TaskQueue::PumpPolicy::AFTER_WAKEUP);
|
| -
|
| - std::vector<EnqueueOrder> run_order;
|
| - // Check that a task which posts a task to an auto pump after wakeup queue
|
| - // doesn't cause the queue to wake up.
|
| - base::Closure after_wakeup_task_1 = base::Bind(&TestTask, 1, &run_order);
|
| - base::Closure after_wakeup_task_2 = base::Bind(&TestTask, 2, &run_order);
|
| - runners_[1]->PostTask(FROM_HERE, base::Bind(&TestPostingTask, runners_[0],
|
| - after_wakeup_task_1));
|
| - runners_[1]->PostTask(FROM_HERE, base::Bind(&TestPostingTask, runners_[0],
|
| - after_wakeup_task_2));
|
| - test_task_runner_->RunUntilIdle();
|
| - EXPECT_TRUE(run_order.empty());
|
| -
|
| - // Wake up the queue.
|
| - runners_[1]->PostTask(FROM_HERE, base::Bind(&TestTask, 3, &run_order));
|
| - test_task_runner_->RunUntilIdle();
|
| - EXPECT_THAT(run_order, ElementsAre(3, 1, 2));
|
| -}
|
| -
|
| -TEST_F(TaskQueueManagerTest, AutoPumpAfterWakeupBecomesQuiescent) {
|
| - Initialize(2u);
|
| - runners_[0]->SetPumpPolicy(TaskQueue::PumpPolicy::AFTER_WAKEUP);
|
| -
|
| - int run_count = 0;
|
| - // Check that if multiple tasks reposts themselves onto a pump-after-wakeup
|
| - // queue they don't wake each other and will eventually stop when no other
|
| - // tasks execute.
|
| - runners_[0]->PostTask(
|
| - FROM_HERE, base::Bind(&RePostingTestTask, runners_[0], &run_count));
|
| - runners_[0]->PostTask(
|
| - FROM_HERE, base::Bind(&RePostingTestTask, runners_[0], &run_count));
|
| - runners_[1]->PostTask(FROM_HERE, base::Bind(&NopTask));
|
| - test_task_runner_->RunUntilIdle();
|
| - // The reposting tasks posted to the after wakeup queue shouldn't have woken
|
| - // each other up.
|
| - EXPECT_EQ(2, run_count);
|
| -}
|
| -
|
| -TEST_F(TaskQueueManagerTest, AutoPumpAfterWakeupWithDontWakeQueue) {
|
| - Initialize(1u);
|
| -
|
| - scoped_refptr<internal::TaskQueueImpl> queue0 = manager_->NewTaskQueue(
|
| - TaskQueue::Spec("test_queue 0")
|
| - .SetPumpPolicy(TaskQueue::PumpPolicy::AFTER_WAKEUP));
|
| - scoped_refptr<internal::TaskQueueImpl> queue1 = manager_->NewTaskQueue(
|
| - TaskQueue::Spec("test_queue 0")
|
| - .SetWakeupPolicy(TaskQueue::WakeupPolicy::DONT_WAKE_OTHER_QUEUES));
|
| - scoped_refptr<internal::TaskQueueImpl> queue2 = runners_[0];
|
| -
|
| - std::vector<EnqueueOrder> run_order;
|
| - queue0->PostTask(FROM_HERE, base::Bind(&TestTask, 1, &run_order));
|
| - queue1->PostTask(FROM_HERE, base::Bind(&TestTask, 2, &run_order));
|
| - test_task_runner_->RunUntilIdle();
|
| - // Executing a DONT_WAKE_OTHER_QUEUES queue shouldn't wake the autopump after
|
| - // wakeup queue.
|
| - EXPECT_THAT(run_order, ElementsAre(2));
|
| -
|
| - queue2->PostTask(FROM_HERE, base::Bind(&TestTask, 3, &run_order));
|
| - test_task_runner_->RunUntilIdle();
|
| - // Executing a CAN_WAKE_OTHER_QUEUES queue should wake the autopump after
|
| - // wakeup queue.
|
| - EXPECT_THAT(run_order, ElementsAre(2, 3, 1));
|
| -}
|
| -
|
| class MockTaskObserver : public base::MessageLoop::TaskObserver {
|
| public:
|
| MOCK_METHOD1(DidProcessTask, void(const base::PendingTask& task));
|
| @@ -1079,80 +801,36 @@ TEST_F(TaskQueueManagerTest, GetAndClearSystemIsQuiescentBit) {
|
| }
|
|
|
| TEST_F(TaskQueueManagerTest, HasPendingImmediateWork) {
|
| - 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_FALSE(queue0->HasPendingImmediateWork());
|
| - EXPECT_FALSE(queue1->HasPendingImmediateWork());
|
| + Initialize(1u);
|
|
|
| - queue0->PostTask(FROM_HERE, base::Bind(NullTask));
|
| - queue1->PostTask(FROM_HERE, base::Bind(NullTask));
|
| - EXPECT_TRUE(queue0->HasPendingImmediateWork());
|
| - EXPECT_TRUE(queue1->HasPendingImmediateWork());
|
| + EXPECT_FALSE(runners_[0]->HasPendingImmediateWork());
|
| + runners_[0]->PostTask(FROM_HERE, base::Bind(NullTask));
|
| + EXPECT_TRUE(runners_[0]->HasPendingImmediateWork());
|
|
|
| test_task_runner_->RunUntilIdle();
|
| - EXPECT_FALSE(queue0->HasPendingImmediateWork());
|
| - EXPECT_TRUE(queue1->HasPendingImmediateWork());
|
| + EXPECT_FALSE(runners_[0]->HasPendingImmediateWork());
|
| +}
|
|
|
| - LazyNow lazy_now(now_src_.get());
|
| - queue1->PumpQueue(&lazy_now, true);
|
| - EXPECT_FALSE(queue0->HasPendingImmediateWork());
|
| - EXPECT_TRUE(queue1->HasPendingImmediateWork());
|
| +TEST_F(TaskQueueManagerTest, HasPendingImmediateWork_DelayedTasks) {
|
| + Initialize(1u);
|
|
|
| - test_task_runner_->RunUntilIdle();
|
| - EXPECT_FALSE(queue0->HasPendingImmediateWork());
|
| - EXPECT_FALSE(queue1->HasPendingImmediateWork());
|
| -}
|
| + EXPECT_FALSE(runners_[0]->HasPendingImmediateWork());
|
| + runners_[0]->PostDelayedTask(FROM_HERE, base::Bind(NullTask),
|
| + base::TimeDelta::FromMilliseconds(12));
|
| + EXPECT_FALSE(runners_[0]->HasPendingImmediateWork());
|
|
|
| -TEST_F(TaskQueueManagerTest, HasPendingImmediateWorkAndNeedsPumping) {
|
| - 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_FALSE(queue0->HasPendingImmediateWork());
|
| - EXPECT_FALSE(queue0->NeedsPumping());
|
| - EXPECT_FALSE(queue1->HasPendingImmediateWork());
|
| - EXPECT_FALSE(queue1->NeedsPumping());
|
| -
|
| - queue0->PostTask(FROM_HERE, base::Bind(NullTask));
|
| - queue0->PostTask(FROM_HERE, base::Bind(NullTask));
|
| - queue1->PostTask(FROM_HERE, base::Bind(NullTask));
|
| - EXPECT_TRUE(queue0->HasPendingImmediateWork());
|
| - EXPECT_TRUE(queue0->NeedsPumping());
|
| - EXPECT_TRUE(queue1->HasPendingImmediateWork());
|
| - EXPECT_TRUE(queue1->NeedsPumping());
|
| -
|
| - test_task_runner_->SetRunTaskLimit(1);
|
| - test_task_runner_->RunPendingTasks();
|
| - EXPECT_TRUE(queue0->HasPendingImmediateWork());
|
| - EXPECT_FALSE(queue0->NeedsPumping());
|
| - EXPECT_TRUE(queue1->HasPendingImmediateWork());
|
| - EXPECT_TRUE(queue1->NeedsPumping());
|
| + // Move time forwards until just before the delayed task should run.
|
| + now_src_->Advance(base::TimeDelta::FromMilliseconds(10));
|
| + UpdateWorkQueues(LazyNow(now_src_.get()));
|
| + EXPECT_FALSE(runners_[0]->HasPendingImmediateWork());
|
|
|
| - test_task_runner_->ClearRunTaskLimit();
|
| - test_task_runner_->RunUntilIdle();
|
| - EXPECT_FALSE(queue0->HasPendingImmediateWork());
|
| - EXPECT_FALSE(queue0->NeedsPumping());
|
| - EXPECT_TRUE(queue1->HasPendingImmediateWork());
|
| - EXPECT_TRUE(queue1->NeedsPumping());
|
| -
|
| - LazyNow lazy_now(now_src_.get());
|
| - queue1->PumpQueue(&lazy_now, true);
|
| - EXPECT_FALSE(queue0->HasPendingImmediateWork());
|
| - EXPECT_FALSE(queue0->NeedsPumping());
|
| - EXPECT_TRUE(queue1->HasPendingImmediateWork());
|
| - EXPECT_FALSE(queue1->NeedsPumping());
|
| + // Force the delayed task onto the work queue.
|
| + now_src_->Advance(base::TimeDelta::FromMilliseconds(2));
|
| + UpdateWorkQueues(LazyNow(now_src_.get()));
|
| + EXPECT_TRUE(runners_[0]->HasPendingImmediateWork());
|
|
|
| test_task_runner_->RunUntilIdle();
|
| - EXPECT_FALSE(queue0->HasPendingImmediateWork());
|
| - EXPECT_FALSE(queue0->NeedsPumping());
|
| - EXPECT_FALSE(queue1->HasPendingImmediateWork());
|
| - EXPECT_FALSE(queue1->NeedsPumping());
|
| + EXPECT_FALSE(runners_[0]->HasPendingImmediateWork());
|
| }
|
|
|
| void ExpensiveTestTask(int value,
|
| @@ -1403,35 +1081,6 @@ TEST_F(TaskQueueManagerTest, UnregisterTaskQueue_InTasks) {
|
| ASSERT_THAT(run_order, ElementsAre(1));
|
| }
|
|
|
| -void PostTestTasksFromNestedMessageLoop(
|
| - base::MessageLoop* message_loop,
|
| - scoped_refptr<base::SingleThreadTaskRunner> main_runner,
|
| - scoped_refptr<base::SingleThreadTaskRunner> wake_up_runner,
|
| - std::vector<EnqueueOrder>* run_order) {
|
| - base::MessageLoop::ScopedNestableTaskAllower allow(message_loop);
|
| - main_runner->PostNonNestableTask(FROM_HERE,
|
| - base::Bind(&TestTask, 1, run_order));
|
| - // The following should never get executed.
|
| - wake_up_runner->PostTask(FROM_HERE, base::Bind(&TestTask, 2, run_order));
|
| - base::RunLoop().RunUntilIdle();
|
| -}
|
| -
|
| -TEST_F(TaskQueueManagerTest, DeferredNonNestableTaskDoesNotTriggerWakeUp) {
|
| - // This test checks that running (i.e., deferring) a non-nestable task in a
|
| - // nested run loop does not trigger the pumping of an on-wakeup queue.
|
| - InitializeWithRealMessageLoop(2u);
|
| - runners_[1]->SetPumpPolicy(TaskQueue::PumpPolicy::AFTER_WAKEUP);
|
| -
|
| - std::vector<EnqueueOrder> run_order;
|
| - runners_[0]->PostTask(
|
| - FROM_HERE,
|
| - base::Bind(&PostTestTasksFromNestedMessageLoop, message_loop_.get(),
|
| - runners_[0], runners_[1], base::Unretained(&run_order)));
|
| -
|
| - base::RunLoop().RunUntilIdle();
|
| - ASSERT_THAT(run_order, ElementsAre(1));
|
| -}
|
| -
|
| namespace {
|
|
|
| class MockObserver : public TaskQueueManager::Observer {
|
| @@ -1996,8 +1645,7 @@ TEST_F(TaskQueueManagerTest, PostCancellableTask_AndCancel_OnWorkQueue) {
|
| EXPECT_TRUE(handle);
|
|
|
| // Force the task onto the work queue.
|
| - LazyNow lazy_now(now_src_.get());
|
| - runners_[0]->PumpQueue(&lazy_now, true);
|
| + UpdateWorkQueues(LazyNow(now_src_.get()));
|
|
|
| EXPECT_TRUE(runners_[0]->IsTaskPending(handle));
|
| EXPECT_TRUE(runners_[0]->CancelTask(handle));
|
| @@ -2021,8 +1669,7 @@ TEST_F(TaskQueueManagerTest, PostThreeTasks_AndCancelOne_OnWorkQueue) {
|
| FROM_HERE, base::Bind(&TestTask, 3, &run_order), base::TimeDelta());
|
|
|
| // Force the tasks onto the work queue.
|
| - LazyNow lazy_now(now_src_.get());
|
| - runners_[0]->PumpQueue(&lazy_now, true);
|
| + UpdateWorkQueues(LazyNow(now_src_.get()));
|
|
|
| EXPECT_TRUE(runners_[0]->IsTaskPending(handle));
|
| EXPECT_TRUE(runners_[0]->CancelTask(handle));
|
| @@ -2046,10 +1693,7 @@ TEST_F(TaskQueueManagerTest, PostThreeTasksOnDifferentQueues_AndCancelOne) {
|
| FROM_HERE, base::Bind(&TestTask, 3, &run_order), base::TimeDelta());
|
|
|
| // Force the tasks onto the work queues.
|
| - LazyNow lazy_now(now_src_.get());
|
| - runners_[0]->PumpQueue(&lazy_now, true);
|
| - runners_[1]->PumpQueue(&lazy_now, true);
|
| - runners_[2]->PumpQueue(&lazy_now, true);
|
| + UpdateWorkQueues(LazyNow(now_src_.get()));
|
|
|
| EXPECT_TRUE(runners_[1]->IsTaskPending(handle));
|
| EXPECT_TRUE(runners_[1]->CancelTask(handle));
|
| @@ -2227,8 +1871,7 @@ TEST_F(TaskQueueManagerTest, PostDelayedCancellableTask_AndCancel_OnWorkQueue) {
|
|
|
| // Force the task onto the work queue.
|
| now_src_->Advance(base::TimeDelta::FromMilliseconds(10));
|
| - LazyNow lazy_now(now_src_.get());
|
| - runners_[0]->PumpQueue(&lazy_now, true);
|
| + UpdateWorkQueues(LazyNow(now_src_.get()));
|
|
|
| EXPECT_TRUE(runners_[0]->IsTaskPending(handle));
|
| EXPECT_TRUE(runners_[0]->CancelTask(handle));
|
| @@ -2256,8 +1899,7 @@ TEST_F(TaskQueueManagerTest, PostThreeDelayedTasks_AndCancelOne_OnWorkQueue) {
|
|
|
| // Force the tasks onto the work queue.
|
| now_src_->Advance(base::TimeDelta::FromMilliseconds(10));
|
| - LazyNow lazy_now(now_src_.get());
|
| - runners_[0]->PumpQueue(&lazy_now, true);
|
| + UpdateWorkQueues(LazyNow(now_src_.get()));
|
|
|
| EXPECT_TRUE(runners_[0]->IsTaskPending(handle));
|
| EXPECT_TRUE(runners_[0]->CancelTask(handle));
|
| @@ -2284,8 +1926,7 @@ TEST_F(TaskQueueManagerTest, BulkPostingDelayedTasks_AndCancelOnWorkQueue) {
|
|
|
| // Force the tasks onto the work queue.
|
| now_src_->Advance(base::TimeDelta::FromMilliseconds(2000));
|
| - LazyNow lazy_now(now_src_.get());
|
| - runners_[0]->PumpQueue(&lazy_now, true);
|
| + UpdateWorkQueues(LazyNow(now_src_.get()));
|
|
|
| // Cancel three timers.
|
| EXPECT_TRUE(runners_[0]->CancelTask(handles[123]));
|
|
|