Index: content/browser/web_contents/web_contents_impl.cc |
diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc |
index 2facf471fd077e9b86f493a0297d3a56816f42c6..244c267557820b4ba427773571839cf33be5e213 100644 |
--- a/content/browser/web_contents/web_contents_impl.cc |
+++ b/content/browser/web_contents/web_contents_impl.cc |
@@ -198,6 +198,8 @@ void MakeNavigateParams(const NavigationEntryImpl& entry, |
const NavigationControllerImpl& controller, |
content::WebContentsDelegate* delegate, |
NavigationController::ReloadType reload_type, |
+ const std::string& embedder_channel_name, |
+ int embedder_container_id, |
ViewMsg_Navigate_Params* params) { |
params->page_id = entry.GetPageID(); |
params->pending_history_list_offset = controller.GetIndexOfEntry(&entry); |
@@ -217,6 +219,8 @@ void MakeNavigateParams(const NavigationEntryImpl& entry, |
entry.transferred_global_request_id().request_id; |
// Avoid downloading when in view-source mode. |
params->allow_download = !entry.IsViewSourceMode(); |
+ params->embedder_channel_name = embedder_channel_name; |
+ params->embedder_container_id = embedder_container_id; |
if (delegate) |
delegate->AddNavigationHeaders(params->url, ¶ms->extra_headers); |
@@ -1151,17 +1155,19 @@ bool WebContentsImpl::NavigateToEntry( |
dest_render_view_host, |
entry.GetURL()); |
- // Tell BrowserPluginHost about the pending cross-process navigation. |
- // TODO(fsamuel): Remove this once this issue is addressed: |
- // https://code.google.com/p/chromium/issues/detail?id=128976 |
- browser_plugin_host()->OnPendingNavigation(dest_render_view_host); |
- |
// Used for page load time metrics. |
current_load_start_ = base::TimeTicks::Now(); |
// Navigate in the desired RenderViewHost. |
+ std::string embedder_channel_name; |
+ int embedder_container_id; |
+ GetBrowserPluginEmbedderInfo(dest_render_view_host, |
+ &embedder_channel_name, |
+ &embedder_container_id); |
ViewMsg_Navigate_Params navigate_params; |
MakeNavigateParams(entry, controller_, delegate_, reload_type, |
+ embedder_channel_name, |
+ embedder_container_id, |
&navigate_params); |
dest_render_view_host->Navigate(navigate_params); |
@@ -2736,15 +2742,17 @@ bool WebContentsImpl::CreateRenderViewForRenderManager( |
int32 max_page_id = |
GetMaxPageIDForSiteInstance(render_view_host->GetSiteInstance()); |
- content::RenderProcessHost* embedder_render_process_host = |
- browser_plugin_host()->embedder_render_process_host(); |
- int embedder_process_id = |
- embedder_render_process_host ? embedder_render_process_host->GetID() : -1; |
+ std::string embedder_channel_name; |
+ int embedder_container_id; |
+ GetBrowserPluginEmbedderInfo(render_view_host, |
+ &embedder_channel_name, |
+ &embedder_container_id); |
if (!static_cast<RenderViewHostImpl*>( |
render_view_host)->CreateRenderView(string16(), |
opener_route_id, |
max_page_id, |
- embedder_process_id)) { |
+ embedder_channel_name, |
+ embedder_container_id)) { |
return false; |
} |
@@ -2816,3 +2824,19 @@ void WebContentsImpl::CreateViewAndSetSizeForRVH(RenderViewHost* rvh) { |
RenderViewHostImpl* WebContentsImpl::GetRenderViewHostImpl() { |
return static_cast<RenderViewHostImpl*>(GetRenderViewHost()); |
} |
+ |
+void WebContentsImpl::GetBrowserPluginEmbedderInfo( |
+ content::RenderViewHost* render_view_host, |
+ std::string* embedder_channel_name, |
+ int* embedder_container_id) { |
+ content::RenderProcessHost* embedder_render_process_host = |
+ browser_plugin_host()->embedder_render_process_host(); |
+ *embedder_container_id = browser_plugin_host()->instance_id(); |
+ int embedder_process_id = |
+ embedder_render_process_host ? embedder_render_process_host->GetID() : -1; |
+ if (embedder_process_id != -1) { |
+ *embedder_channel_name = |
+ StringPrintf("%d.r%d", render_view_host->GetProcess()->GetID(), |
+ embedder_process_id); |
+ } |
+} |