| 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 a83ec56e45ef6a8ecf6b936e52df9d40dc44fdb5..1dcdecc0adb44a2a2bcd9f412aee31e87eb5b834 100644
|
| --- a/content/browser/web_contents/web_contents_impl.cc
|
| +++ b/content/browser/web_contents/web_contents_impl.cc
|
| @@ -3168,13 +3168,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)
|
| @@ -4458,6 +4453,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_);
|
|
|