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 751a13322bcd7a9697ec1f25da688b11d3f82245..b957eb6edbdd5a4aad41a5b649c87ad99f02f62b 100644 |
--- a/content/browser/web_contents/web_contents_impl.cc |
+++ b/content/browser/web_contents/web_contents_impl.cc |
@@ -14,6 +14,7 @@ |
#include "base/string_util.h" |
#include "base/time.h" |
#include "base/utf_string_conversions.h" |
+#include "content/browser/browser_plugin/browser_plugin_host.h" |
#include "content/browser/child_process_security_policy_impl.h" |
#include "content/browser/debugger/devtools_manager_impl.h" |
#include "content/browser/dom_storage/session_storage_namespace_impl.h" |
@@ -320,6 +321,8 @@ WebContentsImpl::WebContentsImpl( |
java_bridge_dispatcher_host_manager_.reset( |
new JavaBridgeDispatcherHostManager(this)); |
#endif |
+ |
+ browser_plugin_host_.reset(new content::BrowserPluginHost(this)); |
} |
WebContentsImpl::~WebContentsImpl() { |
@@ -1080,6 +1083,27 @@ void WebContentsImpl::LostMouseLock() { |
delegate_->LostMouseLock(); |
} |
+void WebContentsImpl::ConnectEmbedderToChannel( |
+ content::RenderViewHost* render_view_host, |
+ const IPC::ChannelHandle& channel_handle) { |
+ browser_plugin_host()->ConnectEmbedderToChannel( |
+ render_view_host, |
+ channel_handle); |
+} |
+ |
+void WebContentsImpl::NavigateGuestFromEmbedder( |
+ content::RenderViewHost* render_view_host, |
+ int container_instance_id, |
+ long long frame_id, |
+ const std::string& src, |
+ const gfx::Size& size) { |
+ browser_plugin_host()->NavigateGuestFromEmbedder(render_view_host, |
+ container_instance_id, |
+ frame_id, |
+ src, |
+ size); |
+} |
+ |
void WebContentsImpl::UpdatePreferredSize(const gfx::Size& pref_size) { |
preferred_size_ = pref_size; |
if (delegate_) |
@@ -1146,6 +1170,9 @@ bool WebContentsImpl::NavigateToEntry( |
dest_render_view_host, |
entry.GetURL()); |
+ // Tell BrowserPluginHost about the pending cross-process navigation. |
+ browser_plugin_host()->OnPendingNavigation(dest_render_view_host); |
+ |
// Used for page load time metrics. |
current_load_start_ = base::TimeTicks::Now(); |
@@ -2730,11 +2757,15 @@ 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; |
if (!static_cast<RenderViewHostImpl*>( |
render_view_host)->CreateRenderView(string16(), |
opener_route_id, |
max_page_id, |
- -1)) { |
+ embedder_process_id)) { |
return false; |
} |