Index: Source/web/WebHelperPluginImpl.cpp |
diff --git a/Source/web/WebHelperPluginImpl.cpp b/Source/web/WebHelperPluginImpl.cpp |
index a86759cf6e17703560e9a96973867079b9f5f179..28c2e0a7b868809aacafafcb49e080e8ced87d47 100644 |
--- a/Source/web/WebHelperPluginImpl.cpp |
+++ b/Source/web/WebHelperPluginImpl.cpp |
@@ -57,6 +57,14 @@ WebHelperPluginImpl::WebHelperPluginImpl() |
WebHelperPluginImpl::~WebHelperPluginImpl() |
{ |
+#if ENABLE(OILPAN) |
+ // FIXME: Oilpan: it is potentially problematic to support plugin |
+ // disposal during an Oilpan GC. If it happens, we need to know |
+ // and evaluate possible ways to handle it. |
+ ASSERT(!ThreadState::current()->isSweepInProgress()); |
+ if (m_pluginContainer) |
+ m_pluginContainer->dispose(); |
+#endif |
} |
bool WebHelperPluginImpl::initialize(const String& pluginType, WebLocalFrameImpl* frame) |
@@ -69,7 +77,7 @@ bool WebHelperPluginImpl::initialize(const String& pluginType, WebLocalFrameImpl |
Vector<String> attributeNames; |
Vector<String> attributeValues; |
ASSERT(frame->frame()->document()->url().isValid()); |
- m_pluginContainer = adoptRef(toWebPluginContainerImpl(frame->frame()->loader().client()->createPlugin( |
+ m_pluginContainer = adoptRefWillBeNoop(toWebPluginContainerImpl(frame->frame()->loader().client()->createPlugin( |
m_objectElement.get(), |
frame->frame()->document()->url(), |
attributeNames, |