summaryrefslogtreecommitdiffstats
path: root/chrome/browser/renderer_host
diff options
context:
space:
mode:
authorananta@chromium.org <ananta@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-11-07 15:39:55 +0000
committerananta@chromium.org <ananta@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-11-07 15:39:55 +0000
commit2799c02a46d0d8d2726f19c8b100ff67504a7349 (patch)
tree184426e3ce12615457a274e62ab3abcdf2152d81 /chrome/browser/renderer_host
parent2fa7c5c06d6fd30d23af3e71942d18d91eaf9b58 (diff)
downloadchromium_src-2799c02a46d0d8d2726f19c8b100ff67504a7349.zip
chromium_src-2799c02a46d0d8d2726f19c8b100ff67504a7349.tar.gz
chromium_src-2799c02a46d0d8d2726f19c8b100ff67504a7349.tar.bz2
Amit, please review everything.
jam, please review changes to the plugin create channel IPCs. mpcomplete, please review changes to chrome_plugin_host.cc ChromeFrame needs to intercept URL requests issued directly by plugins like gears to ensure that they get routed through the host browser network stack. We decide whether or not a request is to be handled based on the renderer process id and the render view id (routing id), which get passed in the ViewHostMsg_RequestResource IPC. If this request is issued by Gears then the routing id comes in as MSG_ROUTING_NONE, which causes the request to go through the chrome network stack. Fix is to pass the host render view id to the plugin in the PluginMsg_Init IPC. The plugin already receives the renderer process id. Both these ids now come back in the ViewHostMsg_RequestResource IPC. This fixes an issue with wave when rendered in full tab mode in ChromeFrame, where dropping a file into a wave would cause the renderer to hang. Fixes bug http://code.google.com/p/chromium/issues/detail?id=23992 Bug=23992 Review URL: http://codereview.chromium.org/370007 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@31387 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/renderer_host')
-rw-r--r--chrome/browser/renderer_host/resource_dispatcher_host.cc13
-rw-r--r--chrome/browser/renderer_host/resource_dispatcher_host_request_info.cc8
-rw-r--r--chrome/browser/renderer_host/resource_dispatcher_host_request_info.h15
3 files changed, 30 insertions, 6 deletions
diff --git a/chrome/browser/renderer_host/resource_dispatcher_host.cc b/chrome/browser/renderer_host/resource_dispatcher_host.cc
index 8f51253..7ab4a67 100644
--- a/chrome/browser/renderer_host/resource_dispatcher_host.cc
+++ b/chrome/browser/renderer_host/resource_dispatcher_host.cc
@@ -600,7 +600,9 @@ void ResourceDispatcherHost::BeginRequest(
request_data.resource_type,
upload_size,
false, // is download
- ResourceType::IsFrame(request_data.resource_type)); // allow_download
+ ResourceType::IsFrame(request_data.resource_type), // allow_download
+ request_data.host_renderer_id,
+ request_data.host_render_view_id);
SetRequestInfo(request, extra_info); // Request takes ownership.
chrome_browser_net::SetOriginProcessUniqueIDForRequest(
request_data.origin_child_id, request);
@@ -753,7 +755,9 @@ void ResourceDispatcherHost::BeginDownload(const GURL& url,
ResourceType::SUB_RESOURCE,
0, // upload_size
true, // is_download
- true); // allow_download
+ true, // allow_download
+ -1, // Host renderer id
+ -1); // Host render view id
SetRequestInfo(request, extra_info); // Request takes ownership.
chrome_browser_net::SetOriginProcessUniqueIDForRequest(child_id, request);
@@ -809,7 +813,10 @@ void ResourceDispatcherHost::BeginSaveFile(const GURL& url,
ResourceType::SUB_RESOURCE,
0, // upload_size
false, // is_download
- false); // allow_download
+ false, // allow_download
+ -1, // Host renderer id
+ -1); // Host render view id
+
SetRequestInfo(request, extra_info); // Request takes ownership.
chrome_browser_net::SetOriginProcessUniqueIDForRequest(child_id, request);
diff --git a/chrome/browser/renderer_host/resource_dispatcher_host_request_info.cc b/chrome/browser/renderer_host/resource_dispatcher_host_request_info.cc
index bd488e7..23ba684 100644
--- a/chrome/browser/renderer_host/resource_dispatcher_host_request_info.cc
+++ b/chrome/browser/renderer_host/resource_dispatcher_host_request_info.cc
@@ -17,7 +17,9 @@ ResourceDispatcherHostRequestInfo::ResourceDispatcherHostRequestInfo(
ResourceType::Type resource_type,
uint64 upload_size,
bool is_download,
- bool allow_download)
+ bool allow_download,
+ int host_renderer_id,
+ int host_render_view_id)
: resource_handler_(handler),
cross_site_handler_(NULL),
login_handler_(NULL),
@@ -42,7 +44,9 @@ ResourceDispatcherHostRequestInfo::ResourceDispatcherHostRequestInfo(
is_paused_(false),
called_on_response_started_(false),
has_started_reading_(false),
- paused_read_bytes_(0) {
+ paused_read_bytes_(0),
+ host_renderer_id_(host_renderer_id),
+ host_render_view_id_(host_render_view_id) {
}
ResourceDispatcherHostRequestInfo::~ResourceDispatcherHostRequestInfo() {
diff --git a/chrome/browser/renderer_host/resource_dispatcher_host_request_info.h b/chrome/browser/renderer_host/resource_dispatcher_host_request_info.h
index 7ceb760..affd32d 100644
--- a/chrome/browser/renderer_host/resource_dispatcher_host_request_info.h
+++ b/chrome/browser/renderer_host/resource_dispatcher_host_request_info.h
@@ -37,7 +37,9 @@ class ResourceDispatcherHostRequestInfo : public URLRequest::UserData {
ResourceType::Type resource_type,
uint64 upload_size,
bool is_download,
- bool allow_download);
+ bool allow_download,
+ int host_renderer_id,
+ int host_render_view_id);
virtual ~ResourceDispatcherHostRequestInfo();
// Top-level ResourceHandler servicing this request.
@@ -157,6 +159,9 @@ class ResourceDispatcherHostRequestInfo : public URLRequest::UserData {
int memory_cost() const { return memory_cost_; }
void set_memory_cost(int cost) { memory_cost_ = cost; }
+ int host_renderer_id() const { return host_renderer_id_; }
+ int host_render_view_id() const { return host_render_view_id_; }
+
private:
friend class ResourceDispatcherHost;
@@ -219,6 +224,14 @@ class ResourceDispatcherHostRequestInfo : public URLRequest::UserData {
bool has_started_reading_;
int paused_read_bytes_;
+ // The following two members are specified if the request is initiated by
+ // a plugin like Gears.
+
+ // Contains the id of the host renderer.
+ int host_renderer_id_;
+ // Contains the id of the host render view.
+ int host_render_view_id_;
+
DISALLOW_COPY_AND_ASSIGN(ResourceDispatcherHostRequestInfo);
};