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 7d3766006456ddf20376ef8faee2abcfb4eae3a1..461822d1602dba0940e9e6c5c8db5e171164e7d8 100644 |
--- a/content/browser/web_contents/web_contents_impl.cc |
+++ b/content/browser/web_contents/web_contents_impl.cc |
@@ -3147,13 +3147,7 @@ void WebContentsImpl::OnPpapiBrokerPermissionResult(int routing_id, |
void WebContentsImpl::OnBrowserPluginMessage(RenderFrameHost* render_frame_host, |
const IPC::Message& message) { |
- // This creates a BrowserPluginEmbedder, which handles all the BrowserPlugin |
- // specific messages for this WebContents. This means that any message from |
- // a BrowserPlugin prior to this will be ignored. |
- // For more info, see comment above classes BrowserPluginEmbedder and |
- // BrowserPluginGuest. |
- CHECK(!browser_plugin_embedder_.get()); |
Charlie Reis
2015/03/04 20:08:36
Why not keep this CHECK before the CreateBrowserPl
Fady Samuel
2015/03/05 20:56:23
Good point. If a BrowserPluginEmbedder already exi
|
- browser_plugin_embedder_.reset(BrowserPluginEmbedder::Create(this)); |
+ CreateBrowserPluginEmbedderIfNecessary(); |
browser_plugin_embedder_->OnMessageReceived(message, render_frame_host); |
} |
#endif // defined(ENABLE_PLUGINS) |
@@ -3988,8 +3982,9 @@ void WebContentsImpl::RouteMessageEvent( |
// probably not a risk for apps since other pages won't have references |
// to App windows. |
if (!rvh->GetSiteInstance()->IsRelatedSiteInstance(GetSiteInstance()) && |
- !GetBrowserPluginGuest() && !GetBrowserPluginEmbedder()) |
+ !GetBrowserPluginGuest() && !GetBrowserPluginEmbedder()) { |
Charlie Reis
2015/03/04 20:08:36
This change isn't necessary, and it's not related
Fady Samuel
2015/03/05 20:56:23
Done.
|
return; |
+ } |
ViewMsg_PostMessage_Params new_params(params); |
@@ -4443,6 +4438,12 @@ BrowserPluginEmbedder* WebContentsImpl::GetBrowserPluginEmbedder() const { |
return browser_plugin_embedder_.get(); |
} |
+void WebContentsImpl::CreateBrowserPluginEmbedderIfNecessary() { |
+ if (browser_plugin_embedder_) |
+ return; |
+ browser_plugin_embedder_.reset(BrowserPluginEmbedder::Create(this)); |
+} |
+ |
void WebContentsImpl::ClearPowerSaveBlockers( |
RenderFrameHost* render_frame_host) { |
RemoveAllMediaPlayerEntries(render_frame_host, &active_audio_players_); |