Chromium Code Reviews| Index: content/renderer/render_frame_impl.cc |
| diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc |
| index 9136254fbe5ed2d697e2982dbaaadd6b2ce68e3a..71e8c824663fef3d880f87eea58c31c355d775f7 100644 |
| --- a/content/renderer/render_frame_impl.cc |
| +++ b/content/renderer/render_frame_impl.cc |
| @@ -1076,6 +1076,7 @@ RenderFrameImpl::RenderFrameImpl(const CreateParams& params) |
| #if defined(ENABLE_PLUGINS) |
| focused_pepper_plugin_(nullptr), |
| pepper_last_mouse_event_target_(nullptr), |
| + plugin_creation_state_(CreatePluginState::NONE), |
| #endif |
| frame_binding_(this), |
| has_accessed_initial_document_(false), |
| @@ -1114,6 +1115,11 @@ RenderFrameImpl::RenderFrameImpl(const CreateParams& params) |
| } |
| RenderFrameImpl::~RenderFrameImpl() { |
| +#if defined(ENABLE_PLUGINS) |
| + if (plugin_creation_state_ == CreatePluginState::UNINITIALIZED) |
| + base::debug::DumpWithoutCrashing(); |
| +#endif |
| + |
| // If file chooser is still waiting for answer, dispatch empty answer. |
| while (!file_chooser_completions_.empty()) { |
| if (file_chooser_completions_.front()->completion) { |
| @@ -2349,7 +2355,7 @@ blink::WebPlugin* RenderFrameImpl::CreatePlugin( |
| const WebPluginInfo& info, |
| const blink::WebPluginParams& params, |
| std::unique_ptr<content::PluginInstanceThrottler> throttler) { |
| - DCHECK_EQ(frame_, frame); |
| + CHECK_EQ(frame_, frame); |
| #if defined(ENABLE_PLUGINS) |
| if (info.type == WebPluginInfo::PLUGIN_TYPE_BROWSER_PLUGIN) { |
| return BrowserPluginManager::Get()->CreateBrowserPlugin( |
| @@ -2365,6 +2371,7 @@ blink::WebPlugin* RenderFrameImpl::CreatePlugin( |
| this, info, &pepper_plugin_was_registered)); |
| if (pepper_plugin_was_registered) { |
| if (pepper_module.get()) { |
| + plugin_creation_state_ = CreatePluginState::UNINITIALIZED; |
| return new PepperWebPluginImpl( |
| pepper_module.get(), params, this, |
| base::WrapUnique( |
| @@ -2518,7 +2525,7 @@ void RenderFrameImpl::GetInterfaceProvider( |
| blink::WebPlugin* RenderFrameImpl::createPlugin( |
| blink::WebLocalFrame* frame, |
| const blink::WebPluginParams& params) { |
| - DCHECK_EQ(frame_, frame); |
| + CHECK_EQ(frame_, frame); |
| blink::WebPlugin* plugin = NULL; |
| if (GetContentClient()->renderer()->OverrideCreatePlugin( |
| this, frame, params, &plugin)) { |
| @@ -6238,6 +6245,7 @@ void RenderFrameImpl::SendFindReply(int request_id, |
| #if defined(ENABLE_PLUGINS) |
| void RenderFrameImpl::PepperInstanceCreated( |
| PepperPluginInstanceImpl* instance) { |
| + plugin_creation_state_ = CreatePluginState::NONE; |
|
Charlie Reis
2016/09/02 20:04:10
Is there a reason for this to be an enum? Seems l
lfg
2016/09/02 20:28:00
Yes, initially I had 3 states, unitialized, initia
|
| active_pepper_instances_.insert(instance); |
| Send(new FrameHostMsg_PepperInstanceCreated( |