summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--content/browser/service_worker/service_worker_browsertest.cc1
-rw-r--r--content/browser/service_worker/service_worker_fetch_dispatcher.cc1
-rw-r--r--content/common/service_worker/service_worker_messages.h1
-rw-r--r--content/common/service_worker/service_worker_types.cc7
-rw-r--r--content/common/service_worker/service_worker_types.h2
-rw-r--r--content/renderer/service_worker/service_worker_script_context.cc3
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);
}