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

Unified Diff: content/browser/service_worker/service_worker_provider_host_unittest.cc

Issue 894973003: ServiceWorker: Make "ready" fetches registration from browser process(2/3). (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: #13 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 side-by-side diff with in-line comments
Download patch
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 76b418eb8699ba46deba41eb14ca564251655ad5..347846401f1212ee25af7c31d154473444b048bb 100644
--- a/content/browser/service_worker/service_worker_provider_host_unittest.cc
+++ b/content/browser/service_worker/service_worker_provider_host_unittest.cc
@@ -27,22 +27,23 @@ class ServiceWorkerProviderHostTest : public testing::Test {
void SetUp() override {
helper_.reset(new EmbeddedWorkerTestHelper(kRenderProcessId));
context_ = helper_->context();
- pattern_ = GURL("http://www.example.com/");
script_url_ = GURL("http://www.example.com/service_worker.js");
- registration_ = new ServiceWorkerRegistration(
- pattern_, 1L, context_->AsWeakPtr());
- version_ = new ServiceWorkerVersion(
- registration_.get(), script_url_, 1L, context_->AsWeakPtr());
+ registration1_ = new ServiceWorkerRegistration(
+ GURL("http://www.example.com/"), 1L, context_->AsWeakPtr());
+ registration2_ = new ServiceWorkerRegistration(
+ GURL("http://www.example.com/example"), 2L, context_->AsWeakPtr());
// Prepare provider hosts (for the same process).
scoped_ptr<ServiceWorkerProviderHost> host1(new ServiceWorkerProviderHost(
kRenderProcessId, MSG_ROUTING_NONE, 1 /* provider_id */,
SERVICE_WORKER_PROVIDER_FOR_CONTROLLEE,
context_->AsWeakPtr(), NULL));
+ host1->SetDocumentUrl(GURL("http://www.example.com/example1.html"));
scoped_ptr<ServiceWorkerProviderHost> host2(new ServiceWorkerProviderHost(
kRenderProcessId, MSG_ROUTING_NONE, 2 /* provider_id */,
SERVICE_WORKER_PROVIDER_FOR_CONTROLLEE,
context_->AsWeakPtr(), NULL));
+ host2->SetDocumentUrl(GURL("http://www.example.com/example2.html"));
provider_host1_ = host1->AsWeakPtr();
provider_host2_ = host2->AsWeakPtr();
context_->AddProviderHost(make_scoped_ptr(host1.release()));
@@ -50,105 +51,78 @@ class ServiceWorkerProviderHostTest : public testing::Test {
}
void TearDown() override {
- version_ = 0;
- registration_ = 0;
+ registration1_ = 0;
+ registration2_ = 0;
helper_.reset();
}
- bool HasProcessToRun() const {
- return context_->process_manager()->PatternHasProcessToRun(pattern_);
+ bool PatternHasProcessToRun(const GURL& pattern) const {
+ return context_->process_manager()->PatternHasProcessToRun(pattern);
}
content::TestBrowserThreadBundle thread_bundle_;
scoped_ptr<EmbeddedWorkerTestHelper> helper_;
ServiceWorkerContextCore* context_;
- scoped_refptr<ServiceWorkerRegistration> registration_;
- scoped_refptr<ServiceWorkerVersion> version_;
+ scoped_refptr<ServiceWorkerRegistration> registration1_;
+ scoped_refptr<ServiceWorkerRegistration> registration2_;
base::WeakPtr<ServiceWorkerProviderHost> provider_host1_;
base::WeakPtr<ServiceWorkerProviderHost> provider_host2_;
- GURL pattern_;
GURL script_url_;
private:
DISALLOW_COPY_AND_ASSIGN(ServiceWorkerProviderHostTest);
};
-TEST_F(ServiceWorkerProviderHostTest, SetActiveVersion_ProcessStatus) {
- provider_host1_->AssociateRegistration(registration_.get());
- ASSERT_TRUE(HasProcessToRun());
-
- // Associating version_ to a provider_host's active version will internally
- // add the provider_host's process ref to the version.
- registration_->SetActiveVersion(version_.get());
- ASSERT_TRUE(HasProcessToRun());
-
- // Re-associating the same version and provider_host should just work too.
- registration_->SetActiveVersion(version_.get());
- ASSERT_TRUE(HasProcessToRun());
-
- // Resetting the provider_host's active version should remove process refs
- // from the version.
- provider_host1_->DisassociateRegistration();
- ASSERT_FALSE(HasProcessToRun());
-}
-
-TEST_F(ServiceWorkerProviderHostTest,
- SetActiveVersion_MultipleHostsForSameProcess) {
- provider_host1_->AssociateRegistration(registration_.get());
- provider_host2_->AssociateRegistration(registration_.get());
- ASSERT_TRUE(HasProcessToRun());
-
- // Associating version_ to two providers as active version.
- registration_->SetActiveVersion(version_.get());
- ASSERT_TRUE(HasProcessToRun());
-
- // Disassociating one provider_host shouldn't remove all process refs
- // from the version yet.
- provider_host1_->DisassociateRegistration();
- ASSERT_TRUE(HasProcessToRun());
-
- // Disassociating the other provider_host will remove all process refs.
- provider_host2_->DisassociateRegistration();
- ASSERT_FALSE(HasProcessToRun());
+TEST_F(ServiceWorkerProviderHostTest, PotentialRegistration_ProcessStatus) {
+ provider_host1_->AddMatchingRegistration(registration1_.get());
+ ASSERT_TRUE(PatternHasProcessToRun(registration1_->pattern()));
+
+ // Add a same registration twice has no effect.
falken 2015/03/02 02:09:41 nit: "Add a" -> "Adding the"
xiang 2015/03/03 08:56:04 Done.
+ provider_host1_->AddMatchingRegistration(registration1_.get());
+ ASSERT_TRUE(PatternHasProcessToRun(registration1_->pattern()));
+
+ // Different matching registrations could be added.
falken 2015/03/02 02:09:41 nit: "could" -> "can"
xiang 2015/03/03 08:56:04 Done.
+ provider_host1_->AddMatchingRegistration(registration2_.get());
+ ASSERT_TRUE(PatternHasProcessToRun(registration2_->pattern()));
+
+ // Remove matching registration will decrease the process refs for its
falken 2015/03/02 02:09:41 nit: "Remove" -> "Removing a"
xiang 2015/03/03 08:56:04 Done.
+ // pattern.
+ provider_host1_->RemoveMatchingRegistration(registration1_.get());
+ ASSERT_FALSE(PatternHasProcessToRun(registration1_->pattern()));
+
+ // Multiple provider hosts could add the same matching registration.
falken 2015/03/02 02:09:41 nit: "could" -> "can"
xiang 2015/03/03 08:56:04 Done.
+ // The process refs will become 0 after all provider hosts removed them.
+ provider_host2_->AddMatchingRegistration(registration2_.get());
+ provider_host1_->RemoveMatchingRegistration(registration2_.get());
+ ASSERT_TRUE(PatternHasProcessToRun(registration2_->pattern()));
+ provider_host2_->RemoveMatchingRegistration(registration2_.get());
+ ASSERT_FALSE(PatternHasProcessToRun(registration2_->pattern()));
}
-TEST_F(ServiceWorkerProviderHostTest, SetWaitingVersion_ProcessStatus) {
- provider_host1_->AssociateRegistration(registration_.get());
- ASSERT_TRUE(HasProcessToRun());
-
- // Associating version_ to a provider_host's waiting version will internally
- // add the provider_host's process ref to the version.
- registration_->SetWaitingVersion(version_.get());
- ASSERT_TRUE(HasProcessToRun());
+TEST_F(ServiceWorkerProviderHostTest, AssociatedRegistration_ProcessStatus) {
+ // Associate the registration will also increases the process refs for
falken 2015/03/02 02:09:41 nit: "Associate" -> "Associating", "increases" ->
xiang 2015/03/03 08:56:04 Done.
+ // the registration's pattern.
+ provider_host1_->AssociateRegistration(registration1_.get());
+ ASSERT_TRUE(PatternHasProcessToRun(registration1_->pattern()));
- // Re-associating the same version and provider_host should just work too.
- registration_->SetWaitingVersion(version_.get());
- ASSERT_TRUE(HasProcessToRun());
-
- // Resetting the provider_host's waiting version should remove process refs
- // from the version.
+ // Disassociate the registration shouldn't effect the process refs for
falken 2015/03/02 02:09:41 nit: "Disassociate" -> "Disassociating", "effect"
xiang 2015/03/03 08:56:04 Done.
+ // the registration's pattern.
provider_host1_->DisassociateRegistration();
- ASSERT_FALSE(HasProcessToRun());
+ ASSERT_TRUE(PatternHasProcessToRun(registration1_->pattern()));
}
-TEST_F(ServiceWorkerProviderHostTest,
- SetWaitingVersion_MultipleHostsForSameProcess) {
- provider_host1_->AssociateRegistration(registration_.get());
- provider_host2_->AssociateRegistration(registration_.get());
- ASSERT_TRUE(HasProcessToRun());
-
- // Associating version_ to two providers as waiting version.
- registration_->SetWaitingVersion(version_.get());
- ASSERT_TRUE(HasProcessToRun());
+TEST_F(ServiceWorkerProviderHostTest, MatchRegistration) {
+ provider_host1_->AddMatchingRegistration(registration1_.get());
+ provider_host1_->AddMatchingRegistration(registration2_.get());
- // Disassociating one provider_host shouldn't remove all process refs
- // from the version yet.
- provider_host1_->DisassociateRegistration();
- ASSERT_TRUE(HasProcessToRun());
+ // Match registration should return the longest matching one.
+ ASSERT_EQ(provider_host1_->MatchRegistration(), registration2_);
+ provider_host1_->RemoveMatchingRegistration(registration2_.get());
+ ASSERT_EQ(provider_host1_->MatchRegistration(), registration1_);
- // Disassociating the other provider_host will remove all process refs.
- provider_host2_->DisassociateRegistration();
- ASSERT_FALSE(HasProcessToRun());
+ // Should return nullptr after remove all matching registrations.
falken 2015/03/02 02:09:41 nit: "remove" -> "removing"
xiang 2015/03/03 08:56:04 Done.
+ provider_host1_->RemoveMatchingRegistration(registration1_.get());
+ ASSERT_EQ(provider_host1_->MatchRegistration(), nullptr);
}
} // namespace content

Powered by Google App Engine
This is Rietveld 408576698