summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjochen@chromium.org <jochen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-12-05 21:56:52 +0000
committerjochen@chromium.org <jochen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-12-05 21:56:52 +0000
commitd5a5034015168b59859cf38f4abdb5332371c283 (patch)
tree3ba73dc900c1553e7fbcfb53603f3158cd687e71
parent00227f26573092e106e486702f4c61125f467171 (diff)
downloadchromium_src-d5a5034015168b59859cf38f4abdb5332371c283.zip
chromium_src-d5a5034015168b59859cf38f4abdb5332371c283.tar.gz
chromium_src-d5a5034015168b59859cf38f4abdb5332371c283.tar.bz2
Make the transfer request code path use full referrers
BUG=105028 TEST=none Review URL: http://codereview.chromium.org/8801006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@113038 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/browser/extensions/network_delay_listener_unittest.cc1
-rw-r--r--chrome/browser/extensions/user_script_listener_unittest.cc1
-rw-r--r--chrome/browser/renderer_host/transfer_navigation_resource_handler.cc12
-rw-r--r--content/browser/renderer_host/resource_dispatcher_host.cc2
-rw-r--r--content/browser/renderer_host/resource_dispatcher_host_request_info.cc2
-rw-r--r--content/browser/renderer_host/resource_dispatcher_host_request_info.h5
-rw-r--r--content/browser/renderer_host/resource_dispatcher_host_unittest.cc1
-rw-r--r--content/browser/renderer_host/resource_queue_unittest.cc1
-rw-r--r--content/common/resource_dispatcher.cc1
-rw-r--r--content/common/resource_messages.h4
-rw-r--r--webkit/glue/resource_loader_bridge.cc3
-rw-r--r--webkit/glue/resource_loader_bridge.h4
-rw-r--r--webkit/glue/weburlloader_impl.cc4
13 files changed, 33 insertions, 8 deletions
diff --git a/chrome/browser/extensions/network_delay_listener_unittest.cc b/chrome/browser/extensions/network_delay_listener_unittest.cc
index ff3a975..4e48472 100644
--- a/chrome/browser/extensions/network_delay_listener_unittest.cc
+++ b/chrome/browser/extensions/network_delay_listener_unittest.cc
@@ -40,6 +40,7 @@ ResourceDispatcherHostRequestInfo* CreateRequestInfo(int request_id) {
new DummyResourceHandler(), content::PROCESS_TYPE_RENDERER, 0, 0, 0,
request_id, false, -1, false, -1, ResourceType::MAIN_FRAME,
content::PAGE_TRANSITION_LINK, 0, false, false, false,
+ WebKit::WebReferrerPolicyDefault,
content::MockResourceContext::GetInstance());
}
diff --git a/chrome/browser/extensions/user_script_listener_unittest.cc b/chrome/browser/extensions/user_script_listener_unittest.cc
index 073448d..f28c8d8 100644
--- a/chrome/browser/extensions/user_script_listener_unittest.cc
+++ b/chrome/browser/extensions/user_script_listener_unittest.cc
@@ -40,6 +40,7 @@ ResourceDispatcherHostRequestInfo* CreateRequestInfo(int request_id) {
new DummyResourceHandler(), content::PROCESS_TYPE_RENDERER, 0, 0, 0,
request_id, false, -1, false, -1, ResourceType::MAIN_FRAME,
content::PAGE_TRANSITION_LINK, 0, false, false, false,
+ WebKit::WebReferrerPolicyDefault,
content::MockResourceContext::GetInstance());
}
diff --git a/chrome/browser/renderer_host/transfer_navigation_resource_handler.cc b/chrome/browser/renderer_host/transfer_navigation_resource_handler.cc
index cbbfd9f..6d82b32 100644
--- a/chrome/browser/renderer_host/transfer_navigation_resource_handler.cc
+++ b/chrome/browser/renderer_host/transfer_navigation_resource_handler.cc
@@ -52,8 +52,8 @@ bool CrossesExtensionExtents(
void RequestTransferURLOnUIThread(int render_process_id,
int render_view_id,
- GURL new_url,
- GURL referrer,
+ const GURL& new_url,
+ const content::Referrer& referrer,
WindowOpenDisposition window_open_disposition,
int64 frame_id,
const GlobalRequestID& request_id) {
@@ -67,7 +67,7 @@ void RequestTransferURLOnUIThread(int render_process_id,
return;
delegate->RequestTransferURL(
- new_url, content::Referrer(referrer, WebKit::WebReferrerPolicyDefault),
+ new_url, referrer,
window_open_disposition, frame_id, request_id);
}
@@ -124,8 +124,10 @@ bool TransferNavigationResourceHandler::OnRequestRedirected(
FROM_HERE,
base::Bind(&RequestTransferURLOnUIThread,
render_process_id, render_view_id,
- new_url, GURL(request_->referrer()), CURRENT_TAB,
- info->frame_id(), global_id));
+ new_url,
+ content::Referrer(GURL(request_->referrer()),
+ info->referrer_policy()),
+ CURRENT_TAB, info->frame_id(), global_id));
*defer = true;
return true;
diff --git a/content/browser/renderer_host/resource_dispatcher_host.cc b/content/browser/renderer_host/resource_dispatcher_host.cc
index 1bd30fc..5b0fea7 100644
--- a/content/browser/renderer_host/resource_dispatcher_host.cc
+++ b/content/browser/renderer_host/resource_dispatcher_host.cc
@@ -639,6 +639,7 @@ void ResourceDispatcherHost::BeginRequest(
false, // is download
ResourceType::IsFrame(request_data.resource_type), // allow_download
request_data.has_user_gesture,
+ request_data.referrer_policy,
&resource_context);
SetRequestInfo(request, extra_info); // Request takes ownership.
@@ -808,6 +809,7 @@ ResourceDispatcherHostRequestInfo* ResourceDispatcherHost::CreateRequestInfo(
download, // is_download
download, // allow_download
false, // has_user_gesture
+ WebKit::WebReferrerPolicyDefault,
&context);
}
diff --git a/content/browser/renderer_host/resource_dispatcher_host_request_info.cc b/content/browser/renderer_host/resource_dispatcher_host_request_info.cc
index 49dd23b..6e84ca0 100644
--- a/content/browser/renderer_host/resource_dispatcher_host_request_info.cc
+++ b/content/browser/renderer_host/resource_dispatcher_host_request_info.cc
@@ -26,6 +26,7 @@ ResourceDispatcherHostRequestInfo::ResourceDispatcherHostRequestInfo(
bool is_download,
bool allow_download,
bool has_user_gesture,
+ WebKit::WebReferrerPolicy referrer_policy,
const content::ResourceContext* context)
: resource_handler_(handler),
cross_site_handler_(NULL),
@@ -49,6 +50,7 @@ ResourceDispatcherHostRequestInfo::ResourceDispatcherHostRequestInfo(
last_upload_position_(0),
waiting_for_upload_progress_ack_(false),
memory_cost_(0),
+ referrer_policy_(referrer_policy),
context_(context),
is_paused_(false),
called_on_response_started_(false),
diff --git a/content/browser/renderer_host/resource_dispatcher_host_request_info.h b/content/browser/renderer_host/resource_dispatcher_host_request_info.h
index e5ec4e2..da002c3 100644
--- a/content/browser/renderer_host/resource_dispatcher_host_request_info.h
+++ b/content/browser/renderer_host/resource_dispatcher_host_request_info.h
@@ -15,6 +15,7 @@
#include "content/public/common/process_type.h"
#include "net/base/load_states.h"
#include "net/url_request/url_request.h"
+#include "third_party/WebKit/Source/WebKit/chromium/public/WebReferrerPolicy.h"
#include "webkit/glue/resource_type.h"
class CrossSiteResourceHandler;
@@ -53,6 +54,7 @@ class ResourceDispatcherHostRequestInfo : public net::URLRequest::UserData {
bool is_download,
bool allow_download,
bool has_user_gesture,
+ WebKit::WebReferrerPolicy referrer_policy,
const content::ResourceContext* context);
virtual ~ResourceDispatcherHostRequestInfo();
@@ -183,6 +185,8 @@ class ResourceDispatcherHostRequestInfo : public net::URLRequest::UserData {
}
void set_requested_blob_data(webkit_blob::BlobData* data);
+ WebKit::WebReferrerPolicy referrer_policy() const { return referrer_policy_; }
+
const content::ResourceContext* context() const { return context_; }
private:
@@ -243,6 +247,7 @@ class ResourceDispatcherHostRequestInfo : public net::URLRequest::UserData {
bool waiting_for_upload_progress_ack_;
int memory_cost_;
scoped_refptr<webkit_blob::BlobData> requested_blob_data_;
+ WebKit::WebReferrerPolicy referrer_policy_;
const content::ResourceContext* context_;
// "Private" data accessible only to ResourceDispatcherHost (use the
diff --git a/content/browser/renderer_host/resource_dispatcher_host_unittest.cc b/content/browser/renderer_host/resource_dispatcher_host_unittest.cc
index 5c216fa..7b5f3ec 100644
--- a/content/browser/renderer_host/resource_dispatcher_host_unittest.cc
+++ b/content/browser/renderer_host/resource_dispatcher_host_unittest.cc
@@ -81,6 +81,7 @@ static ResourceHostMsg_Request CreateResourceRequest(
request.method = std::string(method);
request.url = url;
request.first_party_for_cookies = url; // bypass third-party cookie blocking
+ request.referrer_policy = WebKit::WebReferrerPolicyDefault;
request.load_flags = 0;
request.origin_pid = 0;
request.resource_type = type;
diff --git a/content/browser/renderer_host/resource_queue_unittest.cc b/content/browser/renderer_host/resource_queue_unittest.cc
index ee66cb6..54d8644 100644
--- a/content/browser/renderer_host/resource_queue_unittest.cc
+++ b/content/browser/renderer_host/resource_queue_unittest.cc
@@ -27,6 +27,7 @@ ResourceDispatcherHostRequestInfo* GetRequestInfo(int request_id) {
new DummyResourceHandler(), content::PROCESS_TYPE_RENDERER, 0, 0, 0,
request_id, false, -1, false, -1, ResourceType::MAIN_FRAME,
content::PAGE_TRANSITION_LINK, 0, false, false, false,
+ WebKit::WebReferrerPolicyDefault,
content::MockResourceContext::GetInstance());
}
diff --git a/content/common/resource_dispatcher.cc b/content/common/resource_dispatcher.cc
index 2983302..6094fc2 100644
--- a/content/common/resource_dispatcher.cc
+++ b/content/common/resource_dispatcher.cc
@@ -90,6 +90,7 @@ IPCResourceLoaderBridge::IPCResourceLoaderBridge(
request_.url = request_info.url;
request_.first_party_for_cookies = request_info.first_party_for_cookies;
request_.referrer = request_info.referrer;
+ request_.referrer_policy = request_info.referrer_policy;
request_.headers = request_info.headers;
request_.load_flags = request_info.load_flags;
request_.origin_pid = request_info.requestor_pid;
diff --git a/content/common/resource_messages.h b/content/common/resource_messages.h
index 5230206..54abfb6 100644
--- a/content/common/resource_messages.h
+++ b/content/common/resource_messages.h
@@ -10,6 +10,7 @@
#include "content/public/common/resource_response.h"
#include "ipc/ipc_message_macros.h"
#include "net/base/upload_data.h"
+#include "third_party/WebKit/Source/WebKit/chromium/public/WebReferrerPolicy.h"
#define IPC_MESSAGE_START ResourceMsgStart
#undef IPC_MESSAGE_EXPORT
@@ -67,6 +68,9 @@ IPC_STRUCT_BEGIN(ResourceHostMsg_Request)
// The referrer to use (may be empty).
IPC_STRUCT_MEMBER(GURL, referrer)
+ // The referrer policy to use.
+ IPC_STRUCT_MEMBER(WebKit::WebReferrerPolicy, referrer_policy)
+
// Additional HTTP request headers.
IPC_STRUCT_MEMBER(std::string, headers)
diff --git a/webkit/glue/resource_loader_bridge.cc b/webkit/glue/resource_loader_bridge.cc
index 9b85c82..91fc25a 100644
--- a/webkit/glue/resource_loader_bridge.cc
+++ b/webkit/glue/resource_loader_bridge.cc
@@ -49,7 +49,8 @@ ResourceResponseInfo::~ResourceResponseInfo() {
}
ResourceLoaderBridge::RequestInfo::RequestInfo()
- : load_flags(0),
+ : referrer_policy(WebKit::WebReferrerPolicyDefault),
+ load_flags(0),
requestor_pid(0),
request_type(ResourceType::MAIN_FRAME),
request_context(0),
diff --git a/webkit/glue/resource_loader_bridge.h b/webkit/glue/resource_loader_bridge.h
index 6f8266e..8976463 100644
--- a/webkit/glue/resource_loader_bridge.h
+++ b/webkit/glue/resource_loader_bridge.h
@@ -33,6 +33,7 @@
#include "net/base/host_port_pair.h"
#include "net/url_request/url_request_status.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebURLRequest.h"
+#include "third_party/WebKit/Source/WebKit/chromium/public/WebReferrerPolicy.h"
#include "webkit/glue/resource_type.h"
#include "webkit/glue/webkit_glue_export.h"
@@ -217,6 +218,9 @@ class ResourceLoaderBridge {
// encoded as the url member.
GURL referrer;
+ // The referrer policy that applies to the referrer.
+ WebKit::WebReferrerPolicy referrer_policy;
+
// For HTTP(S) requests, the headers parameter can be a \r\n-delimited and
// \r\n-terminated list of MIME headers. They should be ASCII-encoded using
// the standard MIME header encoding rules. The headers parameter can also
diff --git a/webkit/glue/weburlloader_impl.cc b/webkit/glue/weburlloader_impl.cc
index cd7f5a8..de470c4 100644
--- a/webkit/glue/weburlloader_impl.cc
+++ b/webkit/glue/weburlloader_impl.cc
@@ -420,12 +420,12 @@ void WebURLLoaderImpl::Context::Start(
request_info.download_to_file = request.downloadToFile();
request_info.has_user_gesture = request.hasUserGesture();
request_info.extra_data = request.extraData();
- bridge_.reset(platform->CreateResourceLoader(request_info));
-
if (request.extraData()) {
referrer_policy_ = static_cast<WebURLRequestExtraDataImpl*>(
request.extraData())->referrer_policy();
+ request_info.referrer_policy = referrer_policy_;
}
+ bridge_.reset(platform->CreateResourceLoader(request_info));
if (!request.httpBody().isNull()) {
// GET and HEAD requests shouldn't have http bodies.