diff options
6 files changed, 14 insertions, 1 deletions
diff --git a/content/browser/service_worker/service_worker_browsertest.cc b/content/browser/service_worker/service_worker_browsertest.cc index 6da943d..fd79cc1 100644 --- a/content/browser/service_worker/service_worker_browsertest.cc +++ b/content/browser/service_worker/service_worker_browsertest.cc @@ -456,6 +456,7 @@ class ServiceWorkerVersionBrowserTest : public ServiceWorkerBrowserTest { embedded_test_server()->GetURL("/service_worker/empty.html"), "GET", std::map<std::string, std::string>(), + GURL(""), false); version_->SetStatus(ServiceWorkerVersion::ACTIVATED); version_->DispatchFetchEvent( diff --git a/content/browser/service_worker/service_worker_fetch_dispatcher.cc b/content/browser/service_worker/service_worker_fetch_dispatcher.cc index 6bddaec..cc920c2 100644 --- a/content/browser/service_worker/service_worker_fetch_dispatcher.cc +++ b/content/browser/service_worker/service_worker_fetch_dispatcher.cc @@ -24,6 +24,7 @@ ServiceWorkerFetchDispatcher::ServiceWorkerFetchDispatcher( const net::HttpRequestHeaders& headers = request->extra_request_headers(); for (net::HttpRequestHeaders::Iterator it(headers); it.GetNext();) request_.headers[it.name()] = it.value(); + request_.referrer = GURL(request->referrer()); const ResourceRequestInfo* info = ResourceRequestInfo::ForRequest(request); if (info) { request_.is_reload = PageTransitionCoreTypeIs(info->GetPageTransition(), diff --git a/content/common/service_worker/service_worker_messages.h b/content/common/service_worker/service_worker_messages.h index c5eae18..8a1d8cd 100644 --- a/content/common/service_worker/service_worker_messages.h +++ b/content/common/service_worker/service_worker_messages.h @@ -31,6 +31,7 @@ IPC_STRUCT_TRAITS_BEGIN(content::ServiceWorkerFetchRequest) IPC_STRUCT_TRAITS_MEMBER(url) IPC_STRUCT_TRAITS_MEMBER(method) IPC_STRUCT_TRAITS_MEMBER(headers) + IPC_STRUCT_TRAITS_MEMBER(referrer) IPC_STRUCT_TRAITS_MEMBER(is_reload) IPC_STRUCT_TRAITS_END() diff --git a/content/common/service_worker/service_worker_types.cc b/content/common/service_worker/service_worker_types.cc index 25da8d9..0b2c343 100644 --- a/content/common/service_worker/service_worker_types.cc +++ b/content/common/service_worker/service_worker_types.cc @@ -13,8 +13,13 @@ ServiceWorkerFetchRequest::ServiceWorkerFetchRequest( const GURL& url, const std::string& method, const std::map<std::string, std::string>& headers, + const GURL& referrer, bool is_reload) - : url(url), method(method), headers(headers), is_reload(is_reload) { + : url(url), + method(method), + headers(headers), + referrer(referrer), + is_reload(is_reload) { } ServiceWorkerFetchRequest::~ServiceWorkerFetchRequest() {} diff --git a/content/common/service_worker/service_worker_types.h b/content/common/service_worker/service_worker_types.h index 86324ba..43e8ebb 100644 --- a/content/common/service_worker/service_worker_types.h +++ b/content/common/service_worker/service_worker_types.h @@ -48,12 +48,14 @@ struct CONTENT_EXPORT ServiceWorkerFetchRequest { ServiceWorkerFetchRequest(const GURL& url, const std::string& method, const std::map<std::string, std::string>& headers, + const GURL& referrer, bool is_reload); ~ServiceWorkerFetchRequest(); GURL url; std::string method; std::map<std::string, std::string> headers; + GURL referrer; bool is_reload; }; diff --git a/content/renderer/service_worker/service_worker_script_context.cc b/content/renderer/service_worker/service_worker_script_context.cc index 59264e5..0f56e3f 100644 --- a/content/renderer/service_worker/service_worker_script_context.cc +++ b/content/renderer/service_worker/service_worker_script_context.cc @@ -10,6 +10,7 @@ #include "content/common/service_worker/service_worker_messages.h" #include "content/renderer/service_worker/embedded_worker_context_client.h" #include "ipc/ipc_message.h" +#include "third_party/WebKit/public/platform/WebReferrerPolicy.h" #include "third_party/WebKit/public/platform/WebServiceWorkerRequest.h" #include "third_party/WebKit/public/platform/WebString.h" #include "third_party/WebKit/public/platform/WebURL.h" @@ -135,6 +136,8 @@ void ServiceWorkerScriptContext::OnFetchEvent( webRequest.setHeader(blink::WebString::fromUTF8(it->first), blink::WebString::fromUTF8(it->second)); } + webRequest.setReferrer(blink::WebString::fromUTF8(request.referrer.spec()), + blink::WebReferrerPolicyDefault); webRequest.setIsReload(request.is_reload); proxy_->dispatchFetchEvent(request_id, webRequest); } |