Chromium Code Reviews| 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 a9bec57a6651e1768ce17bf6f3fcf8d2c866e2d1..a3c1dfef619a755dda1e8e394251304f605dbef4 100644 |
| --- a/content/browser/service_worker/service_worker_provider_host_unittest.cc |
| +++ b/content/browser/service_worker/service_worker_provider_host_unittest.cc |
| @@ -49,6 +49,8 @@ class ServiceWorkerProviderHostTest : public testing::Test { |
| GURL("https://www.example.com/"), 1L, context_->AsWeakPtr()); |
| registration2_ = new ServiceWorkerRegistration( |
| GURL("https://www.example.com/example"), 2L, context_->AsWeakPtr()); |
| + registration3_ = new ServiceWorkerRegistration( |
| + GURL("https://other.example.com/"), 3L, context_->AsWeakPtr()); |
| // Prepare provider hosts (for the same process). |
| std::unique_ptr<ServiceWorkerProviderHost> host1( |
| @@ -87,6 +89,7 @@ class ServiceWorkerProviderHostTest : public testing::Test { |
| ServiceWorkerContextCore* context_; |
| scoped_refptr<ServiceWorkerRegistration> registration1_; |
| scoped_refptr<ServiceWorkerRegistration> registration2_; |
| + scoped_refptr<ServiceWorkerRegistration> registration3_; |
| base::WeakPtr<ServiceWorkerProviderHost> provider_host1_; |
| base::WeakPtr<ServiceWorkerProviderHost> provider_host2_; |
| GURL script_url_; |
| @@ -99,29 +102,31 @@ class ServiceWorkerProviderHostTest : public testing::Test { |
| }; |
| TEST_F(ServiceWorkerProviderHostTest, PotentialRegistration_ProcessStatus) { |
| - provider_host1_->AddMatchingRegistration(registration1_.get()); |
| + // Matching registrations have already been set by SetDocumentUrl. |
| ASSERT_TRUE(PatternHasProcessToRun(registration1_->pattern())); |
| + // Different matching registrations have already been added. |
| + ASSERT_TRUE(PatternHasProcessToRun(registration2_->pattern())); |
| // Adding the same registration twice has no effect. |
| provider_host1_->AddMatchingRegistration(registration1_.get()); |
| ASSERT_TRUE(PatternHasProcessToRun(registration1_->pattern())); |
| - // Different matching registrations can be added. |
| - provider_host1_->AddMatchingRegistration(registration2_.get()); |
| - ASSERT_TRUE(PatternHasProcessToRun(registration2_->pattern())); |
| - |
| // Removing a matching registration will decrease the process refs for its |
| // pattern. |
| provider_host1_->RemoveMatchingRegistration(registration1_.get()); |
| + ASSERT_TRUE(PatternHasProcessToRun(registration1_->pattern())); |
| + provider_host2_->RemoveMatchingRegistration(registration1_.get()); |
| ASSERT_FALSE(PatternHasProcessToRun(registration1_->pattern())); |
| - // Multiple provider hosts could add the same matching registration. |
| - // 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())); |
| + // Matching registration will be removed when moving out of scope |
| + ASSERT_TRUE(PatternHasProcessToRun(registration2_->pattern())); // host1,2 |
| + ASSERT_FALSE(PatternHasProcessToRun(registration3_->pattern())); // no host |
| + provider_host1_->SetDocumentUrl(GURL("https://other.example.com/")); |
| + ASSERT_TRUE(PatternHasProcessToRun(registration2_->pattern())); // host2 |
| + ASSERT_TRUE(PatternHasProcessToRun(registration3_->pattern())); // host1 |
| + provider_host2_->SetDocumentUrl(GURL("https://other.example.com/")); |
| + ASSERT_FALSE(PatternHasProcessToRun(registration2_->pattern())); // no host |
| + ASSERT_TRUE(PatternHasProcessToRun(registration3_->pattern())); // host1,2 |
| } |
| TEST_F(ServiceWorkerProviderHostTest, AssociatedRegistration_ProcessStatus) { |
| @@ -138,9 +143,6 @@ TEST_F(ServiceWorkerProviderHostTest, AssociatedRegistration_ProcessStatus) { |
| } |
| TEST_F(ServiceWorkerProviderHostTest, MatchRegistration) { |
| - provider_host1_->AddMatchingRegistration(registration1_.get()); |
| - provider_host1_->AddMatchingRegistration(registration2_.get()); |
| - |
| // Match registration should return the longest matching one. |
| ASSERT_EQ(provider_host1_->MatchRegistration(), registration2_); |
| provider_host1_->RemoveMatchingRegistration(registration2_.get()); |
| @@ -149,6 +151,18 @@ TEST_F(ServiceWorkerProviderHostTest, MatchRegistration) { |
| // Should return nullptr after removing all matching registrations. |
| provider_host1_->RemoveMatchingRegistration(registration1_.get()); |
| ASSERT_EQ(provider_host1_->MatchRegistration(), nullptr); |
| + |
| + // SetDocumentUrl sets all of matching registrations |
| + provider_host1_->SetDocumentUrl(GURL("https://www.example.com/example1")); |
| + ASSERT_EQ(provider_host1_->MatchRegistration(), registration2_); |
|
nhiroki
2016/08/19 05:26:51
An expected value should be placed at left-side (t
shimazu
2016/08/19 09:43:15
Done.
|
| + provider_host1_->RemoveMatchingRegistration(registration2_.get()); |
| + ASSERT_EQ(provider_host1_->MatchRegistration(), registration1_); |
| + |
| + // SetDocumentUrl with another origin also updates matching registrations |
| + provider_host1_->SetDocumentUrl(GURL("https://other.example.com/example")); |
| + ASSERT_EQ(provider_host1_->MatchRegistration(), registration3_); |
| + provider_host1_->RemoveMatchingRegistration(registration3_.get()); |
| + ASSERT_EQ(provider_host1_->MatchRegistration(), nullptr); |
| } |
| TEST_F(ServiceWorkerProviderHostTest, ContextSecurity) { |