Index: webkit/glue/weburlloader_impl.cc |
diff --git a/webkit/glue/weburlloader_impl.cc b/webkit/glue/weburlloader_impl.cc |
index 871f5a39986db5f0479823de0cc2c34514fed329..930651597ff9fd9ab44dc6be17295b7470332831 100644 |
--- a/webkit/glue/weburlloader_impl.cc |
+++ b/webkit/glue/weburlloader_impl.cc |
@@ -31,6 +31,7 @@ |
#include "webkit/glue/multipart_response_delegate.h" |
#include "webkit/glue/resource_loader_bridge.h" |
#include "webkit/glue/webkit_glue.h" |
+#include "webkit/glue/weburlrequest_extradata_impl.h" |
using base::Time; |
using base::TimeDelta; |
@@ -38,6 +39,7 @@ using WebKit::WebData; |
using WebKit::WebHTTPBody; |
using WebKit::WebHTTPHeaderVisitor; |
using WebKit::WebHTTPLoadInfo; |
+using WebKit::WebReferrerPolicy; |
using WebKit::WebSecurityPolicy; |
using WebKit::WebString; |
using WebKit::WebURL; |
@@ -292,6 +294,7 @@ class WebURLLoaderImpl::Context : public base::RefCounted<Context>, |
WebURLLoaderImpl* loader_; |
WebURLRequest request_; |
WebURLLoaderClient* client_; |
+ WebReferrerPolicy referrer_policy_; |
scoped_ptr<ResourceLoaderBridge> bridge_; |
scoped_ptr<FtpDirectoryListingResponseDelegate> ftp_listing_delegate_; |
scoped_ptr<MultipartResponseDelegate> multipart_delegate_; |
@@ -300,7 +303,8 @@ class WebURLLoaderImpl::Context : public base::RefCounted<Context>, |
WebURLLoaderImpl::Context::Context(WebURLLoaderImpl* loader) |
: loader_(loader), |
- client_(NULL) { |
+ client_(NULL), |
+ referrer_policy_(WebKit::WebReferrerPolicyDefault) { |
} |
void WebURLLoaderImpl::Context::Cancel() { |
@@ -414,6 +418,9 @@ void WebURLLoaderImpl::Context::Start( |
request_info.extra_data = request.extraData(); |
bridge_.reset(ResourceLoaderBridge::Create(request_info)); |
+ referrer_policy_ = static_cast<WebURLRequestExtraDataImpl*>( |
darin (slow to review)
2011/11/21 22:44:37
should you null check request.extraData() here? o
jochen (gone - plz use gerrit)
2011/11/22 10:38:28
I've added both the null check, and code to the te
|
+ request.extraData())->referrer_policy(); |
+ |
if (!request.httpBody().isNull()) { |
// GET and HEAD requests shouldn't have http bodies. |
DCHECK(method != "GET" && method != "HEAD"); |
@@ -488,8 +495,11 @@ bool WebURLLoaderImpl::Context::OnReceivedRedirect( |
new_request.setDownloadToFile(request_.downloadToFile()); |
WebString referrer_string = WebString::fromUTF8("Referer"); |
- WebString referrer = request_.httpHeaderField(referrer_string); |
- if (!WebSecurityPolicy::shouldHideReferrer(new_url, referrer)) |
+ WebString referrer = WebSecurityPolicy::generateReferrerHeader( |
+ referrer_policy_, |
+ new_url, |
+ request_.httpHeaderField(referrer_string)); |
+ if (!referrer.isEmpty()) |
new_request.setHTTPHeaderField(referrer_string, referrer); |
if (response.httpStatusCode() == 307) |