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

Side by Side Diff: content/renderer/scheduler/task_queue_manager_unittest.cc

Issue 922733002: scheduler: Implement task observers (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Review comments. Created 5 years, 10 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/renderer/scheduler/task_queue_manager.h" 5 #include "content/renderer/scheduler/task_queue_manager.h"
6 6
7 #include "base/test/test_simple_task_runner.h" 7 #include "base/test/test_simple_task_runner.h"
8 #include "base/threading/thread.h" 8 #include "base/threading/thread.h"
9 #include "cc/test/test_now_source.h" 9 #include "cc/test/test_now_source.h"
10 #include "content/renderer/scheduler/task_queue_selector.h" 10 #include "content/renderer/scheduler/task_queue_selector.h"
(...skipping 564 matching lines...) Expand 10 before | Expand all | Expand 10 after
575 // the work batch is interrupted by the pending delayed task. 575 // the work batch is interrupted by the pending delayed task.
576 EXPECT_EQ(test_task_runner_->GetPendingTasks().size(), 2u); 576 EXPECT_EQ(test_task_runner_->GetPendingTasks().size(), 2u);
577 test_task_runner_->RunPendingTasks(); 577 test_task_runner_->RunPendingTasks();
578 EXPECT_THAT(run_order, ElementsAre(2)); 578 EXPECT_THAT(run_order, ElementsAre(2));
579 579
580 // Running all remaining tasks should execute both pending tasks. 580 // Running all remaining tasks should execute both pending tasks.
581 test_task_runner_->RunUntilIdle(); 581 test_task_runner_->RunUntilIdle();
582 EXPECT_THAT(run_order, ElementsAre(2, 3, 1)); 582 EXPECT_THAT(run_order, ElementsAre(2, 3, 1));
583 } 583 }
584 584
585 class TestTaskObserver : public base::MessageLoop::TaskObserver {
586 public:
587 TestTaskObserver() : will_count_(0), did_count_(0) {}
588
589 void DidProcessTask(const base::PendingTask& task) override { did_count_++; }
590
591 void WillProcessTask(const base::PendingTask& task) override {
592 will_count_++;
593 }
594
595 int CallsToWillProcess() const { return will_count_; }
596 int CallsToDidProcess() const { return did_count_; }
597
598 private:
599 int will_count_;
600 int did_count_;
601 };
602
603 TEST_F(TaskQueueManagerTest, TaskObserverAdding) {
604 Initialize(1u);
605 TestTaskObserver observer;
606
607 EXPECT_EQ(0, observer.CallsToWillProcess());
608 EXPECT_EQ(0, observer.CallsToDidProcess());
609 manager_->AddTaskObserver(&observer);
610
611 std::vector<int> run_order;
612 scoped_refptr<base::SingleThreadTaskRunner> runner =
613 manager_->TaskRunnerForQueue(0);
614
615 runner->PostTask(FROM_HERE, base::Bind(&TestTask, 1, &run_order));
616 runner->PostTask(FROM_HERE, base::Bind(&TestTask, 2, &run_order));
617
618 selector_->AppendQueueToService(0);
619 selector_->AppendQueueToService(0);
620 test_task_runner_->RunUntilIdle();
621
622 EXPECT_EQ(2, observer.CallsToWillProcess());
623 EXPECT_EQ(2, observer.CallsToDidProcess());
624 }
625
626 TEST_F(TaskQueueManagerTest, TaskObserverRemoving) {
627 Initialize(1u);
628 TestTaskObserver observer;
629 manager_->AddTaskObserver(&observer);
630 manager_->RemoveTaskObserver(&observer);
rmcilroy 2015/02/13 12:53:22 nit - could you add a test where the observer is r
Sami 2015/02/13 14:27:26 Good idea, done.
631
632 std::vector<int> run_order;
633 scoped_refptr<base::SingleThreadTaskRunner> runner =
634 manager_->TaskRunnerForQueue(0);
635
636 runner->PostTask(FROM_HERE, base::Bind(&TestTask, 1, &run_order));
637
638 selector_->AppendQueueToService(0);
639 test_task_runner_->RunUntilIdle();
640
641 EXPECT_EQ(0, observer.CallsToWillProcess());
642 EXPECT_EQ(0, observer.CallsToDidProcess());
643 }
644
585 } // namespace 645 } // namespace
586 } // namespace content 646 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698