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

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

Issue 2602853002: Eliminate network fallback from ServiceWorkerContextRequestHandler. (Closed)
Patch Set: rm class Created 3 years, 11 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_context_request_handler_unittest.cc
diff --git a/content/browser/service_worker/service_worker_context_request_handler_unittest.cc b/content/browser/service_worker/service_worker_context_request_handler_unittest.cc
index 93583b3832f3a6ceb48ac9b62129f6dcc3c09c13..96486459fe14170d8394696a2070ad420270b2e6 100644
--- a/content/browser/service_worker/service_worker_context_request_handler_unittest.cc
+++ b/content/browser/service_worker/service_worker_context_request_handler_unittest.cc
@@ -14,14 +14,17 @@
#include "content/browser/service_worker/embedded_worker_test_helper.h"
#include "content/browser/service_worker/service_worker_context_core.h"
#include "content/browser/service_worker/service_worker_provider_host.h"
+#include "content/browser/service_worker/service_worker_read_from_cache_job.h"
#include "content/browser/service_worker/service_worker_registration.h"
#include "content/browser/service_worker/service_worker_test_utils.h"
#include "content/browser/service_worker/service_worker_write_to_cache_job.h"
#include "content/common/service_worker/service_worker_utils.h"
#include "content/public/browser/resource_request_info.h"
+#include "content/public/test/test_browser_context.h"
#include "content/public/test/test_browser_thread_bundle.h"
#include "net/base/load_flags.h"
#include "net/url_request/url_request_context.h"
+#include "net/url_request/url_request_job_factory_impl.h"
#include "storage/browser/blob/blob_storage_context.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -31,7 +34,26 @@ namespace {
void EmptyCallback() {}
-}
+} // namespace
+
+class MockHttpProtocolHandler
+ : public net::URLRequestJobFactory::ProtocolHandler {
+ public:
+ MockHttpProtocolHandler(ResourceContext* resource_context)
+ : resource_context_(resource_context) {}
+
+ net::URLRequestJob* MaybeCreateJob(
+ net::URLRequest* request,
+ net::NetworkDelegate* network_delegate) const override {
+ ServiceWorkerRequestHandler* handler =
+ ServiceWorkerRequestHandler::GetHandler(request);
+ return handler->MaybeCreateJob(request, network_delegate,
+ resource_context_);
+ }
+
+ private:
+ ResourceContext* resource_context_;
+};
class ServiceWorkerContextRequestHandlerTest : public testing::Test {
public:
@@ -42,14 +64,14 @@ class ServiceWorkerContextRequestHandlerTest : public testing::Test {
helper_.reset(new EmbeddedWorkerTestHelper(base::FilePath()));
// 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(
registration_.get(), script_url_, 1L, context()->AsWeakPtr());
- // An empty host.
+ // A provider host for the version.
std::unique_ptr<ServiceWorkerProviderHost> host(
new ServiceWorkerProviderHost(
helper_->mock_render_process_id(),
@@ -59,9 +81,16 @@ class ServiceWorkerContextRequestHandlerTest : public testing::Test {
context()->AsWeakPtr(), nullptr));
provider_host_ = host->AsWeakPtr();
context()->AddProviderHost(std::move(host));
+ provider_host_->running_hosted_version_ = version_;
context()->storage()->LazyInitialize(base::Bind(&EmptyCallback));
base::RunLoop().RunUntilIdle();
+
+ std::unique_ptr<MockHttpProtocolHandler> handler(
+ new MockHttpProtocolHandler(
+ helper_->browser_context()->GetResourceContext()));
+ url_request_job_factory_.SetProtocolHandler("https", std::move(handler));
+ url_request_context_.set_job_factory(&url_request_job_factory_);
}
void TearDown() override {
@@ -72,6 +101,13 @@ class ServiceWorkerContextRequestHandlerTest : public testing::Test {
ServiceWorkerContextCore* context() const { return helper_->context(); }
+ EmbeddedWorkerTestHelper* helper() { return helper_.get(); }
+ ServiceWorkerVersion* version() { return version_.get(); }
+ ServiceWorkerProviderHost* provider_host() { return provider_host_.get(); }
+ storage::BlobStorageContext* blob_storage_context() {
+ return &blob_storage_context_;
+ }
+
protected:
TestBrowserThreadBundle browser_thread_bundle_;
std::unique_ptr<EmbeddedWorkerTestHelper> helper_;
@@ -80,6 +116,7 @@ class ServiceWorkerContextRequestHandlerTest : public testing::Test {
base::WeakPtr<ServiceWorkerProviderHost> provider_host_;
net::URLRequestContext url_request_context_;
MockURLRequestDelegate url_request_delegate_;
+ net::URLRequestJobFactoryImpl url_request_job_factory_;
GURL scope_;
GURL script_url_;
storage::BlobStorageContext blob_storage_context_;
@@ -90,10 +127,9 @@ TEST_F(ServiceWorkerContextRequestHandlerTest, UpdateBefore24Hours) {
// we're installing a new version.
registration_->set_last_update_check(base::Time::Now());
version_->SetStatus(ServiceWorkerVersion::NEW);
- provider_host_->running_hosted_version_ = version_;
// Conduct a resource fetch for the main script.
- const GURL kScriptUrl("http://host/script.js");
+ const GURL kScriptUrl("https://host/script.js");
std::unique_ptr<net::URLRequest> request = url_request_context_.CreateRequest(
kScriptUrl, net::DEFAULT_PRIORITY, &url_request_delegate_);
std::unique_ptr<ServiceWorkerContextRequestHandler> handler(
@@ -117,10 +153,9 @@ TEST_F(ServiceWorkerContextRequestHandlerTest, UpdateAfter24Hours) {
registration_->set_last_update_check(
base::Time::Now() - base::TimeDelta::FromDays(7));
version_->SetStatus(ServiceWorkerVersion::NEW);
- provider_host_->running_hosted_version_ = version_;
// Conduct a resource fetch for the main script.
- const GURL kScriptUrl("http://host/script.js");
+ const GURL kScriptUrl("https://host/script.js");
std::unique_ptr<net::URLRequest> request = url_request_context_.CreateRequest(
kScriptUrl, net::DEFAULT_PRIORITY, &url_request_delegate_);
std::unique_ptr<ServiceWorkerContextRequestHandler> handler(
@@ -144,10 +179,9 @@ TEST_F(ServiceWorkerContextRequestHandlerTest, UpdateForceBypassCache) {
registration_->set_last_update_check(base::Time::Now());
version_->SetStatus(ServiceWorkerVersion::NEW);
version_->set_force_bypass_cache_for_scripts(true);
- provider_host_->running_hosted_version_ = version_;
// Conduct a resource fetch for the main script.
- const GURL kScriptUrl("http://host/script.js");
+ const GURL kScriptUrl("https://host/script.js");
std::unique_ptr<net::URLRequest> request = url_request_context_.CreateRequest(
kScriptUrl, net::DEFAULT_PRIORITY, &url_request_delegate_);
std::unique_ptr<ServiceWorkerContextRequestHandler> handler(
@@ -168,10 +202,9 @@ TEST_F(ServiceWorkerContextRequestHandlerTest, UpdateForceBypassCache) {
TEST_F(ServiceWorkerContextRequestHandlerTest,
ServiceWorkerDataRequestAnnotation) {
version_->SetStatus(ServiceWorkerVersion::NEW);
- provider_host_->running_hosted_version_ = version_;
// Conduct a resource fetch for the main script.
- const GURL kScriptUrl("http://host/script.js");
+ const GURL kScriptUrl("https://host/script.js");
std::unique_ptr<net::URLRequest> request = url_request_context_.CreateRequest(
kScriptUrl, net::DEFAULT_PRIORITY, &url_request_delegate_);
std::unique_ptr<ServiceWorkerContextRequestHandler> handler(
@@ -197,8 +230,7 @@ TEST_F(ServiceWorkerContextRequestHandlerTest,
SkipServiceWorkerForServiceWorkerRequest) {
// Conduct a resource fetch for the main script.
version_->SetStatus(ServiceWorkerVersion::NEW);
- provider_host_->running_hosted_version_ = version_;
- const GURL kScriptUrl("http://host/script.js");
+ const GURL kScriptUrl("https://host/script.js");
std::unique_ptr<net::URLRequest> request = url_request_context_.CreateRequest(
kScriptUrl, net::DEFAULT_PRIORITY, &url_request_delegate_);
ServiceWorkerRequestHandler::InitializeHandler(
@@ -214,4 +246,25 @@ TEST_F(ServiceWorkerContextRequestHandlerTest,
EXPECT_TRUE(handler);
}
+TEST_F(ServiceWorkerContextRequestHandlerTest, RedundantVersion) {
+ // Create a redundant version.
+ version_->SetStatus(ServiceWorkerVersion::REDUNDANT);
+
+ // Conduct a resource fetch for the main script.
+ std::unique_ptr<net::URLRequest> request = url_request_context_.CreateRequest(
+ version_->script_url(), net::DEFAULT_PRIORITY, &url_request_delegate_);
+ ServiceWorkerRequestHandler::InitializeHandler(
+ request.get(), helper()->context_wrapper(), blob_storage_context(),
+ helper()->mock_render_process_id(), provider_host()->provider_id(),
+ true /* skip_service_worker */, FETCH_REQUEST_MODE_NO_CORS,
+ FETCH_CREDENTIALS_MODE_OMIT, FetchRedirectMode::FOLLOW_MODE,
+ RESOURCE_TYPE_SERVICE_WORKER, REQUEST_CONTEXT_TYPE_SERVICE_WORKER,
+ REQUEST_CONTEXT_FRAME_TYPE_NONE, nullptr);
+
+ // Verify that the request fails.
+ request->Start();
+ base::RunLoop().Run();
+ EXPECT_EQ(net::ERR_FAILED, url_request_delegate_.request_status());
+}
+
} // namespace content

Powered by Google App Engine
This is Rietveld 408576698