Index: content/browser/service_worker/service_worker_provider_host_unittest.cc |
diff --git a/content/browser/service_worker/service_worker_provider_host_unittest.cc b/content/browser/service_worker/service_worker_provider_host_unittest.cc |
index 440ad5877d62b41080f6d87a02fb4b197205265a..94baf11c027a5a94816530c292c2960c3f0ba8b0 100644 |
--- a/content/browser/service_worker/service_worker_provider_host_unittest.cc |
+++ b/content/browser/service_worker/service_worker_provider_host_unittest.cc |
@@ -59,16 +59,15 @@ class ServiceWorkerProviderHostTest : public testing::Test { |
context_.reset(); |
} |
- void SetActiveVersion( |
+ void VerifyVersionAttributes( |
base::WeakPtr<ServiceWorkerProviderHost> provider_host, |
- ServiceWorkerVersion* version) { |
- provider_host->SetActiveVersion(version); |
- } |
- |
- void SetWaitingVersion( |
- base::WeakPtr<ServiceWorkerProviderHost> provider_host, |
- ServiceWorkerVersion* version) { |
- provider_host->SetWaitingVersion(version); |
+ ServiceWorkerVersion* installing, |
+ ServiceWorkerVersion* waiting, |
+ ServiceWorkerVersion* active) { |
+ EXPECT_EQ(installing, provider_host->installing_version_); |
+ EXPECT_EQ(waiting, provider_host->waiting_version_); |
+ EXPECT_EQ(active, provider_host->active_version_); |
+ EXPECT_FALSE(provider_host->controlling_version_); |
} |
content::TestBrowserThreadBundle thread_bundle_; |
@@ -85,77 +84,146 @@ class ServiceWorkerProviderHostTest : public testing::Test { |
}; |
TEST_F(ServiceWorkerProviderHostTest, SetActiveVersion_ProcessStatus) { |
+ provider_host1_->AssociateRegistration(registration_); |
ASSERT_FALSE(version_->HasProcessToRun()); |
// Associating version_ to a provider_host's active version will internally |
// add the provider_host's process ref to the version. |
- SetActiveVersion(provider_host1_, version_); |
+ registration_->SetActiveVersion(version_); |
ASSERT_TRUE(version_->HasProcessToRun()); |
// Re-associating the same version and provider_host should just work too. |
- SetActiveVersion(provider_host1_, version_); |
+ registration_->SetActiveVersion(version_); |
ASSERT_TRUE(version_->HasProcessToRun()); |
// Resetting the provider_host's active version should remove process refs |
// from the version. |
- SetActiveVersion(provider_host1_, NULL); |
+ provider_host1_->UnassociateRegistration(); |
ASSERT_FALSE(version_->HasProcessToRun()); |
} |
TEST_F(ServiceWorkerProviderHostTest, |
SetActiveVersion_MultipleHostsForSameProcess) { |
+ provider_host1_->AssociateRegistration(registration_); |
+ provider_host2_->AssociateRegistration(registration_); |
ASSERT_FALSE(version_->HasProcessToRun()); |
// Associating version_ to two providers as active version. |
- SetActiveVersion(provider_host1_, version_); |
- SetActiveVersion(provider_host2_, version_); |
+ registration_->SetActiveVersion(version_); |
ASSERT_TRUE(version_->HasProcessToRun()); |
// Disassociating one provider_host shouldn't remove all process refs |
// from the version yet. |
- SetActiveVersion(provider_host1_, NULL); |
+ provider_host1_->UnassociateRegistration(); |
ASSERT_TRUE(version_->HasProcessToRun()); |
// Disassociating the other provider_host will remove all process refs. |
- SetActiveVersion(provider_host2_, NULL); |
+ provider_host2_->UnassociateRegistration(); |
ASSERT_FALSE(version_->HasProcessToRun()); |
} |
TEST_F(ServiceWorkerProviderHostTest, SetWaitingVersion_ProcessStatus) { |
+ provider_host1_->AssociateRegistration(registration_); |
ASSERT_FALSE(version_->HasProcessToRun()); |
// Associating version_ to a provider_host's waiting version will internally |
// add the provider_host's process ref to the version. |
- SetWaitingVersion(provider_host1_, version_); |
+ registration_->SetWaitingVersion(version_); |
ASSERT_TRUE(version_->HasProcessToRun()); |
// Re-associating the same version and provider_host should just work too. |
- SetWaitingVersion(provider_host1_, version_); |
+ registration_->SetWaitingVersion(version_); |
ASSERT_TRUE(version_->HasProcessToRun()); |
// Resetting the provider_host's waiting version should remove process refs |
// from the version. |
- SetWaitingVersion(provider_host1_, NULL); |
+ provider_host1_->UnassociateRegistration(); |
ASSERT_FALSE(version_->HasProcessToRun()); |
} |
TEST_F(ServiceWorkerProviderHostTest, |
SetWaitingVersion_MultipleHostsForSameProcess) { |
+ provider_host1_->AssociateRegistration(registration_); |
+ provider_host2_->AssociateRegistration(registration_); |
ASSERT_FALSE(version_->HasProcessToRun()); |
- // Associating version_ to two providers as active version. |
- SetWaitingVersion(provider_host1_, version_); |
- SetWaitingVersion(provider_host2_, version_); |
+ // Associating version_ to two providers as waiting version. |
+ registration_->SetWaitingVersion(version_); |
ASSERT_TRUE(version_->HasProcessToRun()); |
// Disassociating one provider_host shouldn't remove all process refs |
// from the version yet. |
- SetWaitingVersion(provider_host1_, NULL); |
+ provider_host1_->UnassociateRegistration(); |
ASSERT_TRUE(version_->HasProcessToRun()); |
// Disassociating the other provider_host will remove all process refs. |
- SetWaitingVersion(provider_host2_, NULL); |
+ provider_host2_->UnassociateRegistration(); |
ASSERT_FALSE(version_->HasProcessToRun()); |
} |
+TEST_F(ServiceWorkerProviderHostTest, |
+ ObserveVersionAttributesChanged_Basic) { |
+ provider_host1_->AssociateRegistration(registration_); |
+ provider_host2_->AssociateRegistration(registration_); |
+ VerifyVersionAttributes(provider_host1_, NULL, NULL, NULL); |
+ VerifyVersionAttributes(provider_host2_, NULL, NULL, NULL); |
+ |
+ registration_->SetInstallingVersion(version_); |
+ VerifyVersionAttributes(provider_host1_, version_, NULL, NULL); |
+ VerifyVersionAttributes(provider_host2_, version_, NULL, NULL); |
+ |
+ registration_->SetWaitingVersion(version_); |
+ VerifyVersionAttributes(provider_host1_, NULL, version_, NULL); |
+ VerifyVersionAttributes(provider_host2_, NULL, version_, NULL); |
+ |
+ // Disassociating the registration should clear all version attributes. |
+ provider_host2_->UnassociateRegistration(); |
+ VerifyVersionAttributes(provider_host1_, NULL, version_, NULL); |
+ VerifyVersionAttributes(provider_host2_, NULL, NULL, NULL); |
+ |
+ // Shouldn't notify the disassociated provider of the change. |
+ registration_->SetActiveVersion(version_); |
+ VerifyVersionAttributes(provider_host1_, NULL, NULL, version_); |
+ VerifyVersionAttributes(provider_host2_, NULL, NULL, NULL); |
+} |
+ |
+TEST_F(ServiceWorkerProviderHostTest, |
+ ObserveVersionAttributesChanged_MultipleVersions) { |
+ provider_host1_->AssociateRegistration(registration_); |
+ provider_host2_->AssociateRegistration(registration_); |
+ VerifyVersionAttributes(provider_host1_, NULL, NULL, NULL); |
+ VerifyVersionAttributes(provider_host2_, NULL, NULL, NULL); |
+ |
+ scoped_refptr<ServiceWorkerVersion> version1 = |
+ new ServiceWorkerVersion(registration_, 10L, context_->AsWeakPtr()); |
+ scoped_refptr<ServiceWorkerVersion> version2 = |
+ new ServiceWorkerVersion(registration_, 20L, context_->AsWeakPtr()); |
+ |
+ registration_->SetInstallingVersion(version1); |
+ VerifyVersionAttributes(provider_host1_, version1, NULL, NULL); |
+ VerifyVersionAttributes(provider_host2_, version1, NULL, NULL); |
+ |
+ registration_->SetWaitingVersion(version1); |
+ VerifyVersionAttributes(provider_host1_, NULL, version1, NULL); |
+ VerifyVersionAttributes(provider_host2_, NULL, version1, NULL); |
+ |
+ registration_->SetInstallingVersion(version2); |
+ VerifyVersionAttributes(provider_host1_, version2, version1, NULL); |
+ VerifyVersionAttributes(provider_host2_, version2, version1, NULL); |
+ |
+ // Disassociating the registration should clear all version attributes. |
+ provider_host2_->UnassociateRegistration(); |
+ VerifyVersionAttributes(provider_host1_, version2, version1, NULL); |
+ VerifyVersionAttributes(provider_host2_, NULL, NULL, NULL); |
+ |
+ // Shouldn't notify the disassociated provider of the change. |
+ registration_->SetActiveVersion(version1); |
+ VerifyVersionAttributes(provider_host1_, version2, NULL, version1); |
+ VerifyVersionAttributes(provider_host2_, NULL, NULL, NULL); |
+ |
+ registration_->SetActiveVersion(version2); |
+ VerifyVersionAttributes(provider_host1_, NULL, NULL, version2); |
+ VerifyVersionAttributes(provider_host2_, NULL, NULL, NULL); |
+} |
+ |
} // namespace content |