PluginView::~PluginView() { if (m_webPage) m_webPage->removePluginView(this); ASSERT(!m_isBeingDestroyed); if (m_isWaitingUntilMediaCanStart) m_pluginElement->document()->removeMediaCanStartListener(this); // Cancel all pending frame loads. for (FrameLoadMap::iterator it = m_pendingFrameLoads.begin(), end = m_pendingFrameLoads.end(); it != end; ++it) it->first->setLoadListener(0); if (m_plugin && m_isInitialized) { m_isBeingDestroyed = true; m_plugin->destroyPlugin(); m_isBeingDestroyed = false; #if PLATFORM(MAC) if (m_webPage) pluginFocusOrWindowFocusChanged(false); #endif } #if ENABLE(NETSCAPE_PLUGIN_API) // Invalidate the object map. m_npRuntimeObjectMap.invalidate(); #endif cancelAllStreams(); // Null out the plug-in element explicitly so we'll crash earlier if we try to use // the plug-in view after it's been destroyed. m_pluginElement = nullptr; }
PluginView::~PluginView() { ASSERT(!m_isBeingDestroyed); if (m_isWaitingUntilMediaCanStart) m_pluginElement->document()->removeMediaCanStartListener(this); // Cancel all pending frame loads. FrameLoadMap::iterator end = m_pendingFrameLoads.end(); for (FrameLoadMap::iterator it = m_pendingFrameLoads.begin(), end = m_pendingFrameLoads.end(); it != end; ++it) it->first->setLoadListener(0); if (m_plugin && m_isInitialized) { m_isBeingDestroyed = true; m_plugin->destroy(); m_isBeingDestroyed = false; } // Invalidate the object map. m_npRuntimeObjectMap.invalidate(); // Cancel all streams. cancelAllStreams(); }