Commit a11d82cd authored by Hiroki Nakagawa's avatar Hiroki Nakagawa Committed by Commit Bot

S13nServiceWorker: Call SetMainScriptHttpResponseInfo() only when main script load

Before this CL, in ServiceWorkerScriptURLLoader,
ServiceWorkerVersion::SetMainScriptHttpResponseInfo() is called regardless of
a resource request type. As the function name indicates, that must be called
only when the main script of the service worker is being loaded. This CL fixes
it.

Bug: 748415
Change-Id: Idcf2a295340eaa03bccd4f49b8759cf149665fa9
Reviewed-on: https://chromium-review.googlesource.com/662957
Commit-Queue: Hiroki Nakagawa <nhiroki@chromium.org>
Reviewed-by: default avatarMatt Falkenhagen <falken@chromium.org>
Reviewed-by: default avatarKinuko Yasuda <kinuko@chromium.org>
Cr-Commit-Position: refs/heads/master@{#501534}
parent 714aff4e
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
#include <memory> #include <memory>
#include "content/browser/service_worker/service_worker_context_core.h" #include "content/browser/service_worker/service_worker_context_core.h"
#include "content/browser/service_worker/service_worker_version.h"
#include "content/browser/url_loader_factory_getter.h" #include "content/browser/url_loader_factory_getter.h"
#include "content/public/common/resource_response.h" #include "content/public/common/resource_response.h"
...@@ -20,9 +21,14 @@ ServiceWorkerScriptURLLoader::ServiceWorkerScriptURLLoader( ...@@ -20,9 +21,14 @@ ServiceWorkerScriptURLLoader::ServiceWorkerScriptURLLoader(
scoped_refptr<ServiceWorkerVersion> version, scoped_refptr<ServiceWorkerVersion> version,
scoped_refptr<URLLoaderFactoryGetter> loader_factory_getter, scoped_refptr<URLLoaderFactoryGetter> loader_factory_getter,
const net::MutableNetworkTrafficAnnotationTag& traffic_annotation) const net::MutableNetworkTrafficAnnotationTag& traffic_annotation)
: network_client_binding_(this), : resource_type_(resource_request.resource_type),
network_client_binding_(this),
forwarding_client_(std::move(client)), forwarding_client_(std::move(client)),
version_(version) { version_(version) {
DCHECK_EQ(ServiceWorkerVersion::NEW, version->status());
DCHECK(resource_type_ == RESOURCE_TYPE_SERVICE_WORKER ||
resource_type_ == RESOURCE_TYPE_SCRIPT);
mojom::URLLoaderClientPtr network_client; mojom::URLLoaderClientPtr network_client;
network_client_binding_.Bind(mojo::MakeRequest(&network_client)); network_client_binding_.Bind(mojo::MakeRequest(&network_client));
loader_factory_getter->GetNetworkFactory()->get()->CreateLoaderAndStart( loader_factory_getter->GetNetworkFactory()->get()->CreateLoaderAndStart(
...@@ -63,7 +69,8 @@ void ServiceWorkerScriptURLLoader::OnReceiveResponse( ...@@ -63,7 +69,8 @@ void ServiceWorkerScriptURLLoader::OnReceiveResponse(
response_info.connection_info = response_head.connection_info; response_info.connection_info = response_head.connection_info;
response_info.socket_address = response_head.socket_address; response_info.socket_address = response_head.socket_address;
version_->SetMainScriptHttpResponseInfo(response_info); if (resource_type_ == RESOURCE_TYPE_SERVICE_WORKER)
version_->SetMainScriptHttpResponseInfo(response_info);
forwarding_client_->OnReceiveResponse(response_head, ssl_info, forwarding_client_->OnReceiveResponse(response_head, ssl_info,
std::move(downloaded_file)); std::move(downloaded_file));
......
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
namespace content { namespace content {
class ServiceWorkerVersion;
class URLLoaderFactoryGetter; class URLLoaderFactoryGetter;
// S13nServiceWorker: // S13nServiceWorker:
...@@ -60,6 +61,10 @@ class CONTENT_EXPORT ServiceWorkerScriptURLLoader ...@@ -60,6 +61,10 @@ class CONTENT_EXPORT ServiceWorkerScriptURLLoader
void OnComplete(const ResourceRequestCompletionStatus& status) override; void OnComplete(const ResourceRequestCompletionStatus& status) override;
private: private:
// This is RESOURCE_TYPE_SERVICE_WORKER for the main script or
// RESOURCE_TYPE_SCRIPT for an imported script.
const ResourceType resource_type_;
mojom::URLLoaderPtr network_loader_; mojom::URLLoaderPtr network_loader_;
mojo::Binding<mojom::URLLoaderClient> network_client_binding_; mojo::Binding<mojom::URLLoaderClient> network_client_binding_;
mojom::URLLoaderClientPtr forwarding_client_; mojom::URLLoaderClientPtr forwarding_client_;
......
...@@ -110,6 +110,7 @@ class ServiceWorkerScriptURLLoaderTest : public testing::Test { ...@@ -110,6 +110,7 @@ class ServiceWorkerScriptURLLoaderTest : public testing::Test {
ResourceRequest request; ResourceRequest request;
request.url = version_->script_url(); request.url = version_->script_url();
request.method = "GET"; request.method = "GET";
request.resource_type = RESOURCE_TYPE_SERVICE_WORKER;
DCHECK(!loader_); DCHECK(!loader_);
loader_ = base::MakeUnique<ServiceWorkerScriptURLLoader>( loader_ = base::MakeUnique<ServiceWorkerScriptURLLoader>(
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment