Chromium Code Reviews| 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) |