Index: content/renderer/render_frame_impl.cc |
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc |
index f0e86cf610b5f2fa69c5f393ef322ca5cfa1480a..bddc8e8acb0819048a6ec79c430b5d57d4dbd041 100644 |
--- a/content/renderer/render_frame_impl.cc |
+++ b/content/renderer/render_frame_impl.cc |
@@ -415,17 +415,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)); |