Index: content/browser/service_worker/service_worker_url_request_job.cc |
diff --git a/content/browser/service_worker/service_worker_url_request_job.cc b/content/browser/service_worker/service_worker_url_request_job.cc |
index b2d836b947d3d99e65539ed5fb1ac42d556b6f75..78cdfd182c831ac585f2152cd0b09562448465d9 100644 |
--- a/content/browser/service_worker/service_worker_url_request_job.cc |
+++ b/content/browser/service_worker/service_worker_url_request_job.cc |
@@ -24,6 +24,7 @@ |
#include "content/public/browser/blob_handle.h" |
#include "content/public/browser/resource_request_info.h" |
#include "content/public/browser/service_worker_context.h" |
+#include "content/public/common/referrer.h" |
#include "net/base/net_errors.h" |
#include "net/http/http_request_headers.h" |
#include "net/http/http_response_headers.h" |
@@ -394,12 +395,19 @@ ServiceWorkerURLRequestJob::CreateFetchRequest() { |
} |
request->blob_uuid = blob_uuid; |
request->blob_size = blob_size; |
- request->referrer = GURL(request_->referrer()); |
request->credentials_mode = credentials_mode_; |
const ResourceRequestInfo* info = ResourceRequestInfo::ForRequest(request_); |
if (info) { |
request->is_reload = ui::PageTransitionCoreTypeIs( |
info->GetPageTransition(), ui::PAGE_TRANSITION_RELOAD); |
+ request->referrer = |
+ Referrer(GURL(request_->referrer()), info->GetReferrerPolicy()); |
+ } else { |
+ CHECK( |
+ request_->referrer_policy() == |
+ net::URLRequest::CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE); |
+ request->referrer = |
+ Referrer(GURL(request_->referrer()), blink::WebReferrerPolicyDefault); |
} |
return request.Pass(); |
} |