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 e89f17a8a70ed821c44a32b5a325624cc9536920..9db5f43d826864cef0d45d508542175853befbe8 100644 |
--- a/content/browser/web_contents/web_contents_impl.cc |
+++ b/content/browser/web_contents/web_contents_impl.cc |
@@ -3189,13 +3189,8 @@ 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()); |
- browser_plugin_embedder_.reset(BrowserPluginEmbedder::Create(this)); |
+ CreateBrowserPluginEmbedderIfNecessary(); |
browser_plugin_embedder_->OnMessageReceived(message, render_frame_host); |
} |
#endif // defined(ENABLE_PLUGINS) |
@@ -4492,6 +4487,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_); |