Chromium Code Reviews| Index: content/browser/service_worker/link_header_support_unittest.cc |
| diff --git a/content/browser/service_worker/link_header_support_unittest.cc b/content/browser/service_worker/link_header_support_unittest.cc |
| index ce7406f30246c01eee1d5d750f8f36063899e32b..21d3d066669664c20e7d0e11ca06d555fe6bb062 100644 |
| --- a/content/browser/service_worker/link_header_support_unittest.cc |
| +++ b/content/browser/service_worker/link_header_support_unittest.cc |
| @@ -13,6 +13,7 @@ |
| #include "content/browser/service_worker/service_worker_registration.h" |
| #include "content/browser/service_worker/service_worker_request_handler.h" |
| #include "content/browser/service_worker/service_worker_test_utils.h" |
| +#include "content/common/service_worker/service_worker_utils.h" |
| #include "content/public/common/content_switches.h" |
| #include "content/public/test/mock_resource_context.h" |
| #include "content/public/test/test_browser_thread_bundle.h" |
| @@ -49,6 +50,8 @@ SaveFoundRegistrations( |
| registrations); |
| } |
| +} // namespace |
| + |
| class LinkHeaderServiceWorkerTest : public ::testing::Test { |
| public: |
| LinkHeaderServiceWorkerTest() |
| @@ -80,6 +83,28 @@ class LinkHeaderServiceWorkerTest : public ::testing::Test { |
| return helper_->context_wrapper(); |
| } |
| ServiceWorkerProviderHost* provider_host() { return provider_host_.get(); } |
| + int render_process_id() const { return helper_->mock_render_process_id(); } |
|
falken
2016/11/21 04:13:42
nit: If we introduce this, there's several helper_
Marijn Kruisselbrink
2016/11/21 05:10:56
Done
|
| + |
| + void CreateServiceWorkerProviderHost() { |
| + std::unique_ptr<ServiceWorkerProviderHost> host( |
| + new ServiceWorkerProviderHost( |
| + helper_->mock_render_process_id(), MSG_ROUTING_NONE, |
| + kMockProviderId, SERVICE_WORKER_PROVIDER_FOR_CONTROLLER, |
| + ServiceWorkerProviderHost::FrameSecurityLevel::UNINITIALIZED, |
| + context()->AsWeakPtr(), nullptr)); |
| + provider_host_ = host->AsWeakPtr(); |
| + context()->RemoveProviderHost(host->process_id(), host->provider_id()); |
| + context()->AddProviderHost(std::move(host)); |
| + |
| + scoped_refptr<ServiceWorkerRegistration> registration = |
| + new ServiceWorkerRegistration(GURL("https://host/scope"), 1L, |
| + context()->AsWeakPtr()); |
| + scoped_refptr<ServiceWorkerVersion> version = new ServiceWorkerVersion( |
| + registration.get(), GURL("https://host/script.js"), 1L, |
| + context()->AsWeakPtr()); |
| + |
| + provider_host_->running_hosted_version_ = version; |
| + } |
| std::unique_ptr<net::URLRequest> CreateRequest(const GURL& request_url, |
| ResourceType resource_type) { |
| @@ -334,10 +359,41 @@ TEST_P(LinkHeaderServiceWorkerTestP, |
| ASSERT_EQ(0u, registrations.size()); |
| } |
| +TEST_P(LinkHeaderServiceWorkerTestP, |
| + InstallServiceWorker_FromWorkerWithoutControllees) { |
| + CreateServiceWorkerProviderHost(); |
| + ProcessLinkHeaderForRequest( |
| + CreateSubresourceRequest(GURL("https://example.com/foo/bar/")).get(), |
| + "<../foo.js>; rel=serviceworker", context_wrapper()); |
| + base::RunLoop().RunUntilIdle(); |
| + |
| + std::vector<ServiceWorkerRegistrationInfo> registrations = GetRegistrations(); |
| + ASSERT_EQ(0u, registrations.size()); |
| +} |
| + |
| +TEST_P(LinkHeaderServiceWorkerTestP, |
| + InstallServiceWorker_FromWorkerWithControllees) { |
| + CreateServiceWorkerProviderHost(); |
| + |
| + std::unique_ptr<ServiceWorkerProviderHost> controllee( |
| + new ServiceWorkerProviderHost( |
| + render_process_id(), MSG_ROUTING_NONE, kMockProviderId, |
| + SERVICE_WORKER_PROVIDER_FOR_WINDOW, |
| + ServiceWorkerProviderHost::FrameSecurityLevel::UNINITIALIZED, |
| + context()->AsWeakPtr(), nullptr)); |
| + provider_host()->running_hosted_version()->AddControllee(controllee.get()); |
| + |
| + ProcessLinkHeaderForRequest( |
| + CreateSubresourceRequest(GURL("https://example.com/foo/bar/")).get(), |
| + "<../foo.js>; rel=serviceworker", context_wrapper()); |
| + base::RunLoop().RunUntilIdle(); |
| + |
| + std::vector<ServiceWorkerRegistrationInfo> registrations = GetRegistrations(); |
| + ASSERT_EQ(1u, registrations.size()); |
| +} |
| + |
| INSTANTIATE_TEST_CASE_P(LinkHeaderServiceWorkerTest, |
| LinkHeaderServiceWorkerTestP, |
| testing::Bool()); |
| -} // namespace |
| - |
| } // namespace content |