Index: content/renderer/render_frame_impl.cc |
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc |
index 8ea64238fc6355989e22e1a5398045ffeaa59c66..c8151dabd8776390e6ae1d24b7bac2bb7397bb82 100644 |
--- a/content/renderer/render_frame_impl.cc |
+++ b/content/renderer/render_frame_impl.cc |
@@ -60,6 +60,7 @@ |
#include "third_party/WebKit/public/web/WebPluginParams.h" |
#include "third_party/WebKit/public/web/WebSearchableFormData.h" |
#include "third_party/WebKit/public/web/WebSecurityOrigin.h" |
+#include "third_party/WebKit/public/web/WebSecurityPolicy.h" |
#include "third_party/WebKit/public/web/WebUserGestureIndicator.h" |
#include "third_party/WebKit/public/web/WebView.h" |
#include "webkit/child/weburlresponse_extradata_impl.h" |
@@ -85,6 +86,7 @@ using blink::WebPluginParams; |
using blink::WebReferrerPolicy; |
using blink::WebSearchableFormData; |
using blink::WebSecurityOrigin; |
+using blink::WebSecurityPolicy; |
using blink::WebServiceWorkerProvider; |
using blink::WebStorageQuotaCallbacks; |
using blink::WebString; |
@@ -1163,7 +1165,6 @@ void RenderFrameImpl::didUpdateCurrentHistoryItem(blink::WebFrame* frame) { |
void RenderFrameImpl::willRequestAfterPreconnect( |
blink::WebFrame* frame, |
blink::WebURLRequest& request) { |
- blink::WebReferrerPolicy referrer_policy = frame->document().referrerPolicy(); |
// FIXME(kohei): This will never be set. |
WebString custom_user_agent; |
@@ -1173,7 +1174,7 @@ void RenderFrameImpl::willRequestAfterPreconnect( |
// The args after |was_after_preconnect_request| are not used, and set to |
// correct values at |willSendRequest|. |
request.setExtraData(new webkit_glue::WebURLRequestExtraDataImpl( |
- referrer_policy, custom_user_agent, was_after_preconnect_request)); |
+ custom_user_agent, was_after_preconnect_request)); |
} |
void RenderFrameImpl::willSendRequest( |
@@ -1215,13 +1216,6 @@ void RenderFrameImpl::willSendRequest( |
if (internal_data->is_cache_policy_override_set()) |
request.setCachePolicy(internal_data->cache_policy_override()); |
- blink::WebReferrerPolicy referrer_policy; |
- if (internal_data->is_referrer_policy_set()) { |
- referrer_policy = internal_data->referrer_policy(); |
- } else { |
- referrer_policy = frame->document().referrerPolicy(); |
- } |
- |
// The request's extra data may indicate that we should set a custom user |
// agent. This needs to be done here, after WebKit is through with setting the |
// user agent on its own. |
@@ -1259,8 +1253,7 @@ void RenderFrameImpl::willSendRequest( |
navigation_state->should_replace_current_entry(); |
} |
request.setExtraData( |
- new RequestExtraData(referrer_policy, |
- render_view_->visibilityState(), |
+ new RequestExtraData(render_view_->visibilityState(), |
custom_user_agent, |
was_after_preconnect_request, |
routing_id_, |
@@ -1299,13 +1292,21 @@ void RenderFrameImpl::willSendRequest( |
navigation_state->extra_headers().begin(), |
navigation_state->extra_headers().end(), "\n"); |
i.GetNext(); ) { |
- request.setHTTPHeaderField(WebString::fromUTF8(i.name()), |
- WebString::fromUTF8(i.values())); |
+ if (LowerCaseEqualsASCII(i.name(), "referer")) { |
+ WebString referrer = WebSecurityPolicy::generateReferrerHeader( |
+ blink::WebReferrerPolicyDefault, |
+ request.url(), |
+ WebString::fromUTF8(i.values())); |
+ request.setHTTPReferrer(referrer, blink::WebReferrerPolicyDefault); |
+ } else { |
+ request.setHTTPHeaderField(WebString::fromUTF8(i.name()), |
+ WebString::fromUTF8(i.values())); |
+ } |
} |
} |
if (!render_view_->renderer_preferences_.enable_referrers) |
- request.clearHTTPHeaderField("Referer"); |
+ request.setHTTPReferrer(WebString(), blink::WebReferrerPolicyDefault); |
} |
void RenderFrameImpl::didReceiveResponse( |