Index: content/browser/service_worker/service_worker_controllee_request_handler_unittest.cc |
diff --git a/content/browser/service_worker/service_worker_controllee_request_handler_unittest.cc b/content/browser/service_worker/service_worker_controllee_request_handler_unittest.cc |
index 37330150cf04cd9b1f4d01a96483d190486b95c7..eb4c1808ccfb1e3b0959b352e9a63efb4c9adf83 100644 |
--- a/content/browser/service_worker/service_worker_controllee_request_handler_unittest.cc |
+++ b/content/browser/service_worker/service_worker_controllee_request_handler_unittest.cc |
@@ -55,6 +55,45 @@ class FailureHelper : public EmbeddedWorkerTestHelper { |
class ServiceWorkerControlleeRequestHandlerTest : public testing::Test { |
public: |
+ class ServiceWorkerRequestTestResources { |
+ public: |
+ ServiceWorkerRequestTestResources( |
+ ServiceWorkerControlleeRequestHandlerTest* test, |
+ const GURL& url, |
+ ResourceType type) |
+ : test_(test), |
+ request_(test->url_request_context_.CreateRequest( |
+ url, |
+ net::DEFAULT_PRIORITY, |
+ &test->url_request_delegate_)), |
+ handler_(new ServiceWorkerControlleeRequestHandler( |
+ test->context()->AsWeakPtr(), |
+ test->provider_host_, |
+ base::WeakPtr<storage::BlobStorageContext>(), |
+ FETCH_REQUEST_MODE_NO_CORS, |
+ FETCH_CREDENTIALS_MODE_OMIT, |
+ FetchRedirectMode::FOLLOW_MODE, |
+ type, |
+ REQUEST_CONTEXT_TYPE_HYPERLINK, |
+ REQUEST_CONTEXT_FRAME_TYPE_TOP_LEVEL, |
+ scoped_refptr<ResourceRequestBody>())), |
+ job_(nullptr) {} |
+ |
+ ServiceWorkerURLRequestJob* MaybeCreateJob() { |
+ job_.reset(handler_->MaybeCreateJob(request_.get(), nullptr, |
+ &test_->mock_resource_context_)); |
+ return static_cast<ServiceWorkerURLRequestJob*>(job_.get()); |
+ } |
+ |
+ void ResetHandler() { handler_.reset(nullptr); } |
+ |
+ private: |
+ ServiceWorkerControlleeRequestHandlerTest* test_; |
+ std::unique_ptr<net::URLRequest> request_; |
+ std::unique_ptr<ServiceWorkerControlleeRequestHandler> handler_; |
+ std::unique_ptr<net::URLRequestJob> job_; |
+ }; |
+ |
ServiceWorkerControlleeRequestHandlerTest() |
: browser_thread_bundle_(TestBrowserThreadBundle::IO_MAINLOOP) {} |
@@ -66,8 +105,8 @@ class ServiceWorkerControlleeRequestHandlerTest : public testing::Test { |
helper_.reset(helper); |
// A new unstored registration/version. |
- scope_ = GURL("http://host/scope/"); |
- script_url_ = GURL("http://host/script.js"); |
+ scope_ = GURL("https://host/scope/"); |
+ script_url_ = GURL("https://host/script.js"); |
registration_ = new ServiceWorkerRegistration( |
scope_, 1L, context()->AsWeakPtr()); |
version_ = new ServiceWorkerVersion( |
@@ -80,10 +119,11 @@ class ServiceWorkerControlleeRequestHandlerTest : public testing::Test { |
// An empty host. |
std::unique_ptr<ServiceWorkerProviderHost> host( |
- new ServiceWorkerProviderHost(helper_->mock_render_process_id(), |
- MSG_ROUTING_NONE, kMockProviderId, |
- SERVICE_WORKER_PROVIDER_FOR_WINDOW, |
- context()->AsWeakPtr(), NULL)); |
+ new ServiceWorkerProviderHost( |
+ helper_->mock_render_process_id(), MSG_ROUTING_NONE, |
+ kMockProviderId, SERVICE_WORKER_PROVIDER_FOR_WINDOW, |
+ ServiceWorkerProviderHost::FrameSecurityLevel::SECURE, |
+ context()->AsWeakPtr(), NULL)); |
provider_host_ = host->AsWeakPtr(); |
context()->AddProviderHost(std::move(host)); |
@@ -139,21 +179,9 @@ TEST_F(ServiceWorkerControlleeRequestHandlerTest, DisallowServiceWorker) { |
base::RunLoop().RunUntilIdle(); |
// Conduct a main resource load. |
- const GURL kDocUrl("http://host/scope/doc"); |
- std::unique_ptr<net::URLRequest> request = url_request_context_.CreateRequest( |
- kDocUrl, net::DEFAULT_PRIORITY, &url_request_delegate_); |
- std::unique_ptr<ServiceWorkerControlleeRequestHandler> handler( |
- new ServiceWorkerControlleeRequestHandler( |
- context()->AsWeakPtr(), provider_host_, |
- base::WeakPtr<storage::BlobStorageContext>(), |
- FETCH_REQUEST_MODE_NO_CORS, FETCH_CREDENTIALS_MODE_OMIT, |
- FetchRedirectMode::FOLLOW_MODE, RESOURCE_TYPE_MAIN_FRAME, |
- REQUEST_CONTEXT_TYPE_HYPERLINK, REQUEST_CONTEXT_FRAME_TYPE_TOP_LEVEL, |
- scoped_refptr<ResourceRequestBody>())); |
- std::unique_ptr<net::URLRequestJob> job( |
- handler->MaybeCreateJob(request.get(), nullptr, &mock_resource_context_)); |
- ServiceWorkerURLRequestJob* sw_job = |
- static_cast<ServiceWorkerURLRequestJob*>(job.get()); |
+ ServiceWorkerRequestTestResources test_resources( |
+ this, GURL("https://host/scope/doc"), RESOURCE_TYPE_MAIN_FRAME); |
+ ServiceWorkerURLRequestJob* sw_job = test_resources.MaybeCreateJob(); |
EXPECT_FALSE(sw_job->ShouldFallbackToNetwork()); |
EXPECT_FALSE(sw_job->ShouldForwardToServiceWorker()); |
@@ -179,21 +207,9 @@ TEST_F(ServiceWorkerControlleeRequestHandlerTest, ActivateWaitingVersion) { |
base::RunLoop().RunUntilIdle(); |
// Conduct a main resource load. |
- const GURL kDocUrl("http://host/scope/doc"); |
- std::unique_ptr<net::URLRequest> request = url_request_context_.CreateRequest( |
- kDocUrl, net::DEFAULT_PRIORITY, &url_request_delegate_); |
- std::unique_ptr<ServiceWorkerControlleeRequestHandler> handler( |
- new ServiceWorkerControlleeRequestHandler( |
- context()->AsWeakPtr(), provider_host_, |
- base::WeakPtr<storage::BlobStorageContext>(), |
- FETCH_REQUEST_MODE_NO_CORS, FETCH_CREDENTIALS_MODE_OMIT, |
- FetchRedirectMode::FOLLOW_MODE, RESOURCE_TYPE_MAIN_FRAME, |
- REQUEST_CONTEXT_TYPE_HYPERLINK, REQUEST_CONTEXT_FRAME_TYPE_TOP_LEVEL, |
- scoped_refptr<ResourceRequestBody>())); |
- std::unique_ptr<net::URLRequestJob> job( |
- handler->MaybeCreateJob(request.get(), nullptr, &mock_resource_context_)); |
- ServiceWorkerURLRequestJob* sw_job = |
- static_cast<ServiceWorkerURLRequestJob*>(job.get()); |
+ ServiceWorkerRequestTestResources test_resources( |
+ this, GURL("https://host/scope/doc"), RESOURCE_TYPE_MAIN_FRAME); |
+ ServiceWorkerURLRequestJob* sw_job = test_resources.MaybeCreateJob(); |
EXPECT_FALSE(sw_job->ShouldFallbackToNetwork()); |
EXPECT_FALSE(sw_job->ShouldForwardToServiceWorker()); |
@@ -208,7 +224,7 @@ TEST_F(ServiceWorkerControlleeRequestHandlerTest, ActivateWaitingVersion) { |
EXPECT_TRUE(version_->HasControllee()); |
// Navigations should trigger an update too. |
- handler.reset(NULL); |
+ test_resources.ResetHandler(); |
EXPECT_TRUE(version_->update_timer_.IsRunning()); |
} |
@@ -220,19 +236,10 @@ TEST_F(ServiceWorkerControlleeRequestHandlerTest, InstallingRegistration) { |
context()->storage()->NotifyInstallingRegistration(registration_.get()); |
// Conduct a main resource load. |
- const GURL kDocUrl("http://host/scope/doc"); |
- std::unique_ptr<net::URLRequest> request = url_request_context_.CreateRequest( |
- kDocUrl, net::DEFAULT_PRIORITY, &url_request_delegate_); |
- std::unique_ptr<ServiceWorkerControlleeRequestHandler> handler( |
- new ServiceWorkerControlleeRequestHandler( |
- context()->AsWeakPtr(), provider_host_, |
- base::WeakPtr<storage::BlobStorageContext>(), |
- FETCH_REQUEST_MODE_NO_CORS, FETCH_CREDENTIALS_MODE_OMIT, |
- FetchRedirectMode::FOLLOW_MODE, RESOURCE_TYPE_MAIN_FRAME, |
- REQUEST_CONTEXT_TYPE_HYPERLINK, REQUEST_CONTEXT_FRAME_TYPE_TOP_LEVEL, |
- scoped_refptr<ResourceRequestBody>())); |
- std::unique_ptr<net::URLRequestJob> job( |
- handler->MaybeCreateJob(request.get(), nullptr, &mock_resource_context_)); |
+ ServiceWorkerRequestTestResources test_resources( |
+ this, GURL("https://host/scope/doc"), RESOURCE_TYPE_MAIN_FRAME); |
+ ServiceWorkerURLRequestJob* job = test_resources.MaybeCreateJob(); |
+ |
base::RunLoop().RunUntilIdle(); |
// The handler should have fallen back to network and destroyed the job. The |
@@ -260,21 +267,9 @@ TEST_F(ServiceWorkerControlleeRequestHandlerTest, DeletedProviderHost) { |
registration_ = NULL; |
// Conduct a main resource load. |
- const GURL kDocUrl("http://host/scope/doc"); |
- std::unique_ptr<net::URLRequest> request = url_request_context_.CreateRequest( |
- kDocUrl, net::DEFAULT_PRIORITY, &url_request_delegate_); |
- std::unique_ptr<ServiceWorkerControlleeRequestHandler> handler( |
- new ServiceWorkerControlleeRequestHandler( |
- context()->AsWeakPtr(), provider_host_, |
- base::WeakPtr<storage::BlobStorageContext>(), |
- FETCH_REQUEST_MODE_NO_CORS, FETCH_CREDENTIALS_MODE_OMIT, |
- FetchRedirectMode::FOLLOW_MODE, RESOURCE_TYPE_MAIN_FRAME, |
- REQUEST_CONTEXT_TYPE_HYPERLINK, REQUEST_CONTEXT_FRAME_TYPE_TOP_LEVEL, |
- scoped_refptr<ResourceRequestBody>())); |
- std::unique_ptr<net::URLRequestJob> job( |
- handler->MaybeCreateJob(request.get(), nullptr, &mock_resource_context_)); |
- ServiceWorkerURLRequestJob* sw_job = |
- static_cast<ServiceWorkerURLRequestJob*>(job.get()); |
+ ServiceWorkerRequestTestResources test_resources( |
+ this, GURL("https://host/scope/doc"), RESOURCE_TYPE_MAIN_FRAME); |
+ ServiceWorkerURLRequestJob* sw_job = test_resources.MaybeCreateJob(); |
EXPECT_FALSE(sw_job->ShouldFallbackToNetwork()); |
EXPECT_FALSE(sw_job->ShouldForwardToServiceWorker()); |