Index: content/renderer/render_frame_impl.cc |
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc |
index 9a8d0e84e6791203c525d5874c96bfda1af37a74..c1bb6104da985ef8631975cc329c0529f099c14a 100644 |
--- a/content/renderer/render_frame_impl.cc |
+++ b/content/renderer/render_frame_impl.cc |
@@ -412,17 +412,23 @@ WebURLRequest CreateURLRequestForNavigation( |
if (is_view_source_mode_enabled) |
request.SetCachePolicy(WebCachePolicy::kReturnCacheDataElseLoad); |
+ WebString web_referrer; |
if (common_params.referrer.url.is_valid()) { |
- WebString web_referrer = WebSecurityPolicy::GenerateReferrerHeader( |
+ web_referrer = WebSecurityPolicy::GenerateReferrerHeader( |
common_params.referrer.policy, common_params.url, |
WebString::FromUTF8(common_params.referrer.url.spec())); |
+ request.SetHTTPReferrer(web_referrer, common_params.referrer.policy); |
if (!web_referrer.IsEmpty()) { |
- request.SetHTTPReferrer(web_referrer, common_params.referrer.policy); |
request.AddHTTPOriginIfNeeded( |
WebSecurityOrigin(url::Origin(common_params.referrer.url))); |
} |
} |
+ if (!web_referrer.IsEmpty() || |
+ common_params.referrer.policy != blink::kWebReferrerPolicyDefault) { |
+ request.SetHTTPReferrer(web_referrer, common_params.referrer.policy); |
+ } |
+ |
request.SetIsSameDocumentNavigation(is_same_document_navigation); |
request.SetPreviewsState( |
static_cast<WebURLRequest::PreviewsState>(common_params.previews_state)); |