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

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

Issue 2142523004: M52: Merge "Reland: service worker: Don't control a subframe of an insecure context" (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@2743
Patch Set: fix compile errors Created 4 years, 5 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_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());

Powered by Google App Engine
This is Rietveld 408576698