summaryrefslogtreecommitdiffstats
path: root/chrome/browser/renderer_host
diff options
context:
space:
mode:
authoratwilson@chromium.org <atwilson@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-06-12 02:47:26 +0000
committeratwilson@chromium.org <atwilson@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-06-12 02:47:26 +0000
commit8ab0465a0a52812b600580540a69ba4687e4ef22 (patch)
tree12c5483360d5174a2906e84234f4d3db72d8471d /chrome/browser/renderer_host
parent69a83853994057c9bb81fbc8e184cf36650293db (diff)
downloadchromium_src-8ab0465a0a52812b600580540a69ba4687e4ef22.zip
chromium_src-8ab0465a0a52812b600580540a69ba4687e4ef22.tar.gz
chromium_src-8ab0465a0a52812b600580540a69ba4687e4ef22.tar.bz2
Added plumbing to transport the frame name between RenderViewHost and the Webkit layer.
Extended ViewMsg_New and ViewHostMsg_CreateWindow to have a new frame_name parameter. This allows the RVH to know the initial name of the frame associated with its RenderView, and also to set the name of the frame when creating a new RenderView. Review URL: http://codereview.chromium.org/2775003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@49622 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/renderer_host')
-rw-r--r--chrome/browser/renderer_host/render_view_host.cc8
-rw-r--r--chrome/browser/renderer_host/render_view_host.h9
-rw-r--r--chrome/browser/renderer_host/render_view_host_delegate.h6
-rw-r--r--chrome/browser/renderer_host/render_widget_helper.cc8
-rw-r--r--chrome/browser/renderer_host/render_widget_helper.h4
-rwxr-xr-xchrome/browser/renderer_host/resource_message_filter.cc15
-rwxr-xr-xchrome/browser/renderer_host/resource_message_filter.h6
-rw-r--r--chrome/browser/renderer_host/test/test_render_view_host.cc2
-rw-r--r--chrome/browser/renderer_host/test/test_render_view_host.h3
9 files changed, 37 insertions, 24 deletions
diff --git a/chrome/browser/renderer_host/render_view_host.cc b/chrome/browser/renderer_host/render_view_host.cc
index b14d9d5..a5414b6 100644
--- a/chrome/browser/renderer_host/render_view_host.cc
+++ b/chrome/browser/renderer_host/render_view_host.cc
@@ -146,7 +146,7 @@ RenderViewHost::~RenderViewHost() {
}
bool RenderViewHost::CreateRenderView(
- URLRequestContextGetter* request_context) {
+ URLRequestContextGetter* request_context, const string16& frame_name) {
DCHECK(!IsRenderViewLive()) << "Creating view twice";
// The process may (if we're sharing a process with another host that already
@@ -191,6 +191,7 @@ bool RenderViewHost::CreateRenderView(
params.web_preferences = webkit_prefs;
params.view_id = routing_id();
params.session_storage_namespace_id = session_storage_namespace_id_;
+ params.frame_name = frame_name;
Send(new ViewMsg_New(params));
// Set the alternate error page, which is profile specific, in the renderer.
@@ -863,12 +864,13 @@ void RenderViewHost::Shutdown() {
void RenderViewHost::CreateNewWindow(
int route_id,
- WindowContainerType window_container_type) {
+ WindowContainerType window_container_type,
+ const string16& frame_name) {
RenderViewHostDelegate::View* view = delegate_->GetViewDelegate();
if (!view)
return;
- view->CreateNewWindow(route_id, window_container_type);
+ view->CreateNewWindow(route_id, window_container_type, frame_name);
}
void RenderViewHost::CreateNewWidget(int route_id,
diff --git a/chrome/browser/renderer_host/render_view_host.h b/chrome/browser/renderer_host/render_view_host.h
index 53793e0..8619094 100644
--- a/chrome/browser/renderer_host/render_view_host.h
+++ b/chrome/browser/renderer_host/render_view_host.h
@@ -103,8 +103,10 @@ class RenderViewHost : public RenderWidgetHost {
RenderViewHostDelegate* delegate() const { return delegate_; }
// Set up the RenderView child process. Virtual because it is overridden by
- // TestRenderViewHost.
- virtual bool CreateRenderView(URLRequestContextGetter* request_context);
+ // TestRenderViewHost. If the |frame_name| parameter is non-empty, it is used
+ // as the name of the new top-level frame.
+ virtual bool CreateRenderView(URLRequestContextGetter* request_context,
+ const string16& frame_name);
// Returns true if the RenderView is active and has not crashed. Virtual
// because it is overridden by TestRenderViewHost.
@@ -417,7 +419,8 @@ class RenderViewHost : public RenderWidgetHost {
// Creates a new RenderView with the given route id.
void CreateNewWindow(int route_id,
- WindowContainerType window_container_type);
+ WindowContainerType window_container_type,
+ const string16& frame_name);
// Creates a new RenderWidget with the given route id. |popup_type| indicates
// if this widget is a popup and what kind of popup it is (select, autofill).
diff --git a/chrome/browser/renderer_host/render_view_host_delegate.h b/chrome/browser/renderer_host/render_view_host_delegate.h
index 80ae7be..e2bd3864 100644
--- a/chrome/browser/renderer_host/render_view_host_delegate.h
+++ b/chrome/browser/renderer_host/render_view_host_delegate.h
@@ -93,13 +93,17 @@ class RenderViewHostDelegate {
// that is requested -- in particular, the window.open call may have
// specified 'background' and 'persistent' in the feature string.
//
+ // The passed |frame_name| parameter is the name parameter that was passed
+ // to window.open(), and will be empty if none was passed.
+ //
// Note: this is not called "CreateWindow" because that will clash with
// the Windows function which is actually a #define.
//
// NOTE: this takes ownership of @modal_dialog_event
virtual void CreateNewWindow(
int route_id,
- WindowContainerType window_container_type) = 0;
+ WindowContainerType window_container_type,
+ const string16& frame_name) = 0;
// The page is trying to open a new widget (e.g. a select popup). The
// widget should be created associated with the given route, but it should
diff --git a/chrome/browser/renderer_host/render_widget_helper.cc b/chrome/browser/renderer_host/render_widget_helper.cc
index 2c3b6f4..baa8045 100644
--- a/chrome/browser/renderer_host/render_widget_helper.cc
+++ b/chrome/browser/renderer_host/render_widget_helper.cc
@@ -203,6 +203,7 @@ void RenderWidgetHelper::CreateNewWindow(
int opener_id,
bool user_gesture,
WindowContainerType window_container_type,
+ const string16& frame_name,
base::ProcessHandle render_process,
int* route_id) {
*route_id = GetNextRoutingID();
@@ -215,16 +216,17 @@ void RenderWidgetHelper::CreateNewWindow(
ChromeThread::UI, FROM_HERE,
NewRunnableMethod(
this, &RenderWidgetHelper::OnCreateWindowOnUI, opener_id, *route_id,
- window_container_type));
+ window_container_type, frame_name));
}
void RenderWidgetHelper::OnCreateWindowOnUI(
int opener_id,
int route_id,
- WindowContainerType window_container_type) {
+ WindowContainerType window_container_type,
+ string16 frame_name) {
RenderViewHost* host = RenderViewHost::FromID(render_process_id_, opener_id);
if (host)
- host->CreateNewWindow(route_id, window_container_type);
+ host->CreateNewWindow(route_id, window_container_type, frame_name);
ChromeThread::PostTask(
ChromeThread::IO, FROM_HERE,
diff --git a/chrome/browser/renderer_host/render_widget_helper.h b/chrome/browser/renderer_host/render_widget_helper.h
index f942903..d31bf66 100644
--- a/chrome/browser/renderer_host/render_widget_helper.h
+++ b/chrome/browser/renderer_host/render_widget_helper.h
@@ -123,6 +123,7 @@ class RenderWidgetHelper
void CreateNewWindow(int opener_id,
bool user_gesture,
WindowContainerType window_container_type,
+ const string16& frame_name,
base::ProcessHandle render_process,
int* route_id);
void CreateNewWidget(int opener_id,
@@ -164,7 +165,8 @@ class RenderWidgetHelper
// Called on the UI thread to finish creating a window.
void OnCreateWindowOnUI(int opener_id,
int route_id,
- WindowContainerType window_container_type);
+ WindowContainerType window_container_type,
+ string16 frame_name);
// Called on the IO thread after a window was created on the UI thread.
void OnCreateWindowOnIO(int route_id);
diff --git a/chrome/browser/renderer_host/resource_message_filter.cc b/chrome/browser/renderer_host/resource_message_filter.cc
index 61ac3d1..a382042 100755
--- a/chrome/browser/renderer_host/resource_message_filter.cc
+++ b/chrome/browser/renderer_host/resource_message_filter.cc
@@ -640,15 +640,14 @@ URLRequestContext* ResourceMessageFilter::GetRequestContext(
}
void ResourceMessageFilter::OnMsgCreateWindow(
- int opener_id, bool user_gesture,
- WindowContainerType window_container_type,
- int64 session_storage_namespace_id, int* route_id,
- int64* cloned_session_storage_namespace_id) {
+ const ViewHostMsg_CreateWindow_Params& params,
+ int* route_id, int64* cloned_session_storage_namespace_id) {
*cloned_session_storage_namespace_id = dom_storage_dispatcher_host_->
- CloneSessionStorage(session_storage_namespace_id);
- render_widget_helper_->CreateNewWindow(opener_id,
- user_gesture,
- window_container_type,
+ CloneSessionStorage(params.session_storage_namespace_id);
+ render_widget_helper_->CreateNewWindow(params.opener_id,
+ params.user_gesture,
+ params.window_container_type,
+ params.frame_name,
handle(),
route_id);
}
diff --git a/chrome/browser/renderer_host/resource_message_filter.h b/chrome/browser/renderer_host/resource_message_filter.h
index 33a6d44..e79934a 100755
--- a/chrome/browser/renderer_host/resource_message_filter.h
+++ b/chrome/browser/renderer_host/resource_message_filter.h
@@ -46,6 +46,7 @@ class NotificationsPrefsCache;
class Profile;
class RenderWidgetHelper;
class URLRequestContextGetter;
+struct ViewHostMsg_CreateWindow_Params;
struct ViewHostMsg_CreateWorker_Params;
struct WebPluginInfo;
@@ -132,9 +133,8 @@ class ResourceMessageFilter : public IPC::ChannelProxy::MessageFilter,
virtual ~ResourceMessageFilter();
- void OnMsgCreateWindow(int opener_id, bool user_gesture,
- WindowContainerType window_container_type,
- int64 session_storage_namespace_id, int* route_id,
+ void OnMsgCreateWindow(const ViewHostMsg_CreateWindow_Params& params,
+ int* route_id,
int64* cloned_session_storage_namespace_id);
void OnMsgCreateWidget(int opener_id,
WebKit::WebPopupType popup_type,
diff --git a/chrome/browser/renderer_host/test/test_render_view_host.cc b/chrome/browser/renderer_host/test/test_render_view_host.cc
index 33c7529..c1d15599 100644
--- a/chrome/browser/renderer_host/test/test_render_view_host.cc
+++ b/chrome/browser/renderer_host/test/test_render_view_host.cc
@@ -32,7 +32,7 @@ TestRenderViewHost::~TestRenderViewHost() {
}
bool TestRenderViewHost::CreateRenderView(
- URLRequestContextGetter* request_context) {
+ URLRequestContextGetter* request_context, const string16& frame_name) {
DCHECK(!render_view_created_);
render_view_created_ = true;
process()->ViewCreated();
diff --git a/chrome/browser/renderer_host/test/test_render_view_host.h b/chrome/browser/renderer_host/test/test_render_view_host.h
index c50ba06..bda5712 100644
--- a/chrome/browser/renderer_host/test/test_render_view_host.h
+++ b/chrome/browser/renderer_host/test/test_render_view_host.h
@@ -165,7 +165,8 @@ class TestRenderViewHost : public RenderViewHost {
// RenderViewHost overrides --------------------------------------------------
- virtual bool CreateRenderView(URLRequestContextGetter* request_context);
+ virtual bool CreateRenderView(URLRequestContextGetter* request_context,
+ const string16& frame_name);
virtual bool IsRenderViewLive() const;
private: