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

Unified Diff: third_party/WebKit/Source/platform/scheduler/base/task_queue_manager_unittest.cc

Issue 2798563003: [scheduler] Add TaskQueue::Observer (Closed)
Patch Set: Rebased Created 3 years, 8 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 side-by-side diff with in-line comments
Download patch
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 b797052f84d67d7fdfe9df28f3e5653eb765d180..52fa223c956bde03cb35363958be5501015eaf05 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
@@ -1545,9 +1545,9 @@ TEST_F(TaskQueueManagerTest, TimeDomainsAreIndependant) {
base::TimeTicks start_time = manager_->Delegate()->NowTicks();
std::unique_ptr<VirtualTimeDomain> domain_a(
- new VirtualTimeDomain(nullptr, start_time));
+ new VirtualTimeDomain(start_time));
std::unique_ptr<VirtualTimeDomain> domain_b(
- new VirtualTimeDomain(nullptr, start_time));
+ new VirtualTimeDomain(start_time));
manager_->RegisterTimeDomain(domain_a.get());
manager_->RegisterTimeDomain(domain_b.get());
runners_[0]->SetTimeDomain(domain_a.get());
@@ -1592,7 +1592,7 @@ TEST_F(TaskQueueManagerTest, TimeDomainMigration) {
base::TimeTicks start_time = manager_->Delegate()->NowTicks();
std::unique_ptr<VirtualTimeDomain> domain_a(
- new VirtualTimeDomain(nullptr, start_time));
+ new VirtualTimeDomain(start_time));
manager_->RegisterTimeDomain(domain_a.get());
runners_[0]->SetTimeDomain(domain_a.get());
@@ -1612,7 +1612,7 @@ TEST_F(TaskQueueManagerTest, TimeDomainMigration) {
EXPECT_THAT(run_order, ElementsAre(1, 2));
std::unique_ptr<VirtualTimeDomain> domain_b(
- new VirtualTimeDomain(nullptr, start_time));
+ new VirtualTimeDomain(start_time));
manager_->RegisterTimeDomain(domain_b.get());
runners_[0]->SetTimeDomain(domain_b.get());
@@ -1633,9 +1633,9 @@ TEST_F(TaskQueueManagerTest, TimeDomainMigrationWithIncomingImmediateTasks) {
base::TimeTicks start_time = manager_->Delegate()->NowTicks();
std::unique_ptr<VirtualTimeDomain> domain_a(
- new VirtualTimeDomain(nullptr, start_time));
+ new VirtualTimeDomain(start_time));
std::unique_ptr<VirtualTimeDomain> domain_b(
- new VirtualTimeDomain(nullptr, start_time));
+ new VirtualTimeDomain(start_time));
manager_->RegisterTimeDomain(domain_a.get());
manager_->RegisterTimeDomain(domain_b.get());
@@ -1690,68 +1690,64 @@ TEST_F(TaskQueueManagerTest,
}
namespace {
-class MockTimeDomainObserver : public TimeDomain::Observer {
+
+class MockTaskQueueObserver : public TaskQueue::Observer {
public:
- ~MockTimeDomainObserver() override {}
+ ~MockTaskQueueObserver() override {}
- MOCK_METHOD1(OnTimeDomainHasImmediateWork, void(TaskQueue*));
- MOCK_METHOD1(OnTimeDomainHasDelayedWork, void(TaskQueue*));
+ MOCK_METHOD2(OnQueueNextWakeUpChanged, void(TaskQueue*, base::TimeTicks));
};
+
} // namespace
-TEST_F(TaskQueueManagerTest, TimeDomainObserver_ImmediateTask) {
+TEST_F(TaskQueueManagerTest, TaskQueueObserver_ImmediateTask) {
Initialize(1u);
- MockTimeDomainObserver observer;
- std::unique_ptr<VirtualTimeDomain> domain(
- new VirtualTimeDomain(&observer, manager_->Delegate()->NowTicks()));
- manager_->RegisterTimeDomain(domain.get());
- runners_[0]->SetTimeDomain(domain.get());
+ MockTaskQueueObserver observer;
+ runners_[0]->SetObserver(&observer);
// We should get a notification when a task is posted on an empty queue.
- EXPECT_CALL(observer, OnTimeDomainHasImmediateWork(runners_[0].get()));
+ EXPECT_CALL(observer,
+ OnQueueNextWakeUpChanged(runners_[0].get(), base::TimeTicks()));
runners_[0]->PostTask(FROM_HERE, base::Bind(&NopTask));
Mock::VerifyAndClearExpectations(&observer);
// But not subsequently.
- EXPECT_CALL(observer, OnTimeDomainHasImmediateWork(_)).Times(0);
+ EXPECT_CALL(observer, OnQueueNextWakeUpChanged(_, _)).Times(0);
runners_[0]->PostTask(FROM_HERE, base::Bind(&NopTask));
Mock::VerifyAndClearExpectations(&observer);
// Unless the immediate work queue is emptied.
runners_[0]->ReloadImmediateWorkQueueIfEmpty();
- EXPECT_CALL(observer, OnTimeDomainHasImmediateWork(runners_[0].get()));
+ EXPECT_CALL(observer,
+ OnQueueNextWakeUpChanged(runners_[0].get(), base::TimeTicks()));
runners_[0]->PostTask(FROM_HERE, base::Bind(&NopTask));
// Tidy up.
runners_[0]->UnregisterTaskQueue();
- manager_->UnregisterTimeDomain(domain.get());
}
-TEST_F(TaskQueueManagerTest, TimeDomainObserver_DelayedTask) {
+TEST_F(TaskQueueManagerTest, TaskQueueObserver_DelayedTask) {
Initialize(1u);
- MockTimeDomainObserver observer;
- std::unique_ptr<VirtualTimeDomain> domain(
- new VirtualTimeDomain(&observer, manager_->Delegate()->NowTicks()));
- manager_->RegisterTimeDomain(domain.get());
- runners_[0]->SetTimeDomain(domain.get());
+ MockTaskQueueObserver observer;
+ runners_[0]->SetObserver(&observer);
// We should get a notification when a delayed task is posted on an empty
// queue.
- EXPECT_CALL(observer, OnTimeDomainHasDelayedWork(runners_[0].get()));
+ EXPECT_CALL(observer, OnQueueNextWakeUpChanged(runners_[0].get(), _));
runners_[0]->PostDelayedTask(FROM_HERE, base::Bind(&NopTask),
base::TimeDelta::FromSeconds(10));
Mock::VerifyAndClearExpectations(&observer);
// We should not get a notification for a longer delay.
- EXPECT_CALL(observer, OnTimeDomainHasDelayedWork(_)).Times(0);
+ EXPECT_CALL(observer, OnQueueNextWakeUpChanged(_, _)).Times(0);
runners_[0]->PostDelayedTask(FROM_HERE, base::Bind(&NopTask),
base::TimeDelta::FromSeconds(100));
Mock::VerifyAndClearExpectations(&observer);
// We should get a notification for a shorter delay.
- EXPECT_CALL(observer, OnTimeDomainHasDelayedWork(runners_[0].get()));
+ EXPECT_CALL(observer, OnQueueNextWakeUpChanged(runners_[0].get(), _));
runners_[0]->PostDelayedTask(FROM_HERE, base::Bind(&NopTask),
base::TimeDelta::FromSeconds(1));
Mock::VerifyAndClearExpectations(&observer);
@@ -1762,26 +1758,24 @@ TEST_F(TaskQueueManagerTest, TimeDomainObserver_DelayedTask) {
// When a queue has been enabled, we may get a notification if the
// TimeDomain's next scheduled wake-up has changed.
- EXPECT_CALL(observer, OnTimeDomainHasDelayedWork(runners_[0].get()));
+ EXPECT_CALL(observer, OnQueueNextWakeUpChanged(runners_[0].get(), _));
voter->SetQueueEnabled(true);
// Tidy up.
runners_[0]->UnregisterTaskQueue();
- manager_->UnregisterTimeDomain(domain.get());
}
-TEST_F(TaskQueueManagerTest, TimeDomainObserver_DelayedTaskMultipleQueues) {
+TEST_F(TaskQueueManagerTest, TaskQueueObserver_DelayedTaskMultipleQueues) {
Initialize(2u);
- MockTimeDomainObserver observer;
- std::unique_ptr<VirtualTimeDomain> domain(
- new VirtualTimeDomain(&observer, manager_->Delegate()->NowTicks()));
- manager_->RegisterTimeDomain(domain.get());
- runners_[0]->SetTimeDomain(domain.get());
- runners_[1]->SetTimeDomain(domain.get());
+ MockTaskQueueObserver observer;
+ runners_[0]->SetObserver(&observer);
+ runners_[1]->SetObserver(&observer);
- EXPECT_CALL(observer, OnTimeDomainHasDelayedWork(runners_[0].get())).Times(1);
- EXPECT_CALL(observer, OnTimeDomainHasDelayedWork(runners_[1].get())).Times(1);
+ EXPECT_CALL(observer, OnQueueNextWakeUpChanged(runners_[0].get(), _))
+ .Times(1);
+ EXPECT_CALL(observer, OnQueueNextWakeUpChanged(runners_[1].get(), _))
+ .Times(1);
runners_[0]->PostDelayedTask(FROM_HERE, base::Bind(&NopTask),
base::TimeDelta::FromSeconds(1));
runners_[1]->PostDelayedTask(FROM_HERE, base::Bind(&NopTask),
@@ -1794,30 +1788,29 @@ TEST_F(TaskQueueManagerTest, TimeDomainObserver_DelayedTaskMultipleQueues) {
runners_[1]->CreateQueueEnabledVoter();
// Disabling a queue should not trigger a notification.
- EXPECT_CALL(observer, OnTimeDomainHasDelayedWork(_)).Times(0);
+ EXPECT_CALL(observer, OnQueueNextWakeUpChanged(_, _)).Times(0);
voter0->SetQueueEnabled(false);
Mock::VerifyAndClearExpectations(&observer);
// Re-enabling it should should also trigger a notification.
- EXPECT_CALL(observer, OnTimeDomainHasDelayedWork(runners_[0].get()));
+ EXPECT_CALL(observer, OnQueueNextWakeUpChanged(runners_[0].get(), _));
voter0->SetQueueEnabled(true);
Mock::VerifyAndClearExpectations(&observer);
// Disabling a queue should not trigger a notification.
- EXPECT_CALL(observer, OnTimeDomainHasDelayedWork(_)).Times(0);
+ EXPECT_CALL(observer, OnQueueNextWakeUpChanged(_, _)).Times(0);
voter1->SetQueueEnabled(false);
Mock::VerifyAndClearExpectations(&observer);
// Re-enabling it should should trigger a notification.
- EXPECT_CALL(observer, OnTimeDomainHasDelayedWork(runners_[1].get()));
+ EXPECT_CALL(observer, OnQueueNextWakeUpChanged(runners_[1].get(), _));
voter1->SetQueueEnabled(true);
Mock::VerifyAndClearExpectations(&observer);
// Tidy up.
- EXPECT_CALL(observer, OnTimeDomainHasDelayedWork(_)).Times(AnyNumber());
+ EXPECT_CALL(observer, OnQueueNextWakeUpChanged(_, _)).Times(AnyNumber());
runners_[0]->UnregisterTaskQueue();
runners_[1]->UnregisterTaskQueue();
- manager_->UnregisterTimeDomain(domain.get());
}
namespace {
@@ -2860,6 +2853,9 @@ TEST_F(TaskQueueManagerTest, GetNextScheduledWakeUp) {
TEST_F(TaskQueueManagerTest, SetTimeDomainForDisabledQueue) {
Initialize(1u);
+ MockTaskQueueObserver observer;
+ runners_[0]->SetObserver(&observer);
+
runners_[0]->PostDelayedTask(FROM_HERE, base::Bind(&NopTask),
base::TimeDelta::FromMilliseconds(1));
@@ -2867,12 +2863,11 @@ TEST_F(TaskQueueManagerTest, SetTimeDomainForDisabledQueue) {
runners_[0]->CreateQueueEnabledVoter();
voter->SetQueueEnabled(false);
- MockTimeDomainObserver observer;
// We should not get a notification for a disabled queue.
- EXPECT_CALL(observer, OnTimeDomainHasDelayedWork(_)).Times(0);
+ EXPECT_CALL(observer, OnQueueNextWakeUpChanged(_, _)).Times(0);
std::unique_ptr<VirtualTimeDomain> domain(
- new VirtualTimeDomain(&observer, manager_->Delegate()->NowTicks()));
+ new VirtualTimeDomain(manager_->Delegate()->NowTicks()));
manager_->RegisterTimeDomain(domain.get());
runners_[0]->SetTimeDomain(domain.get());

Powered by Google App Engine
This is Rietveld 408576698