void ScriptController::clearScriptObjects() { JSLock lock(SilenceAssertionsOnly); RootObjectMap::const_iterator end = m_rootObjects.end(); for (RootObjectMap::const_iterator it = m_rootObjects.begin(); it != end; ++it) it->second->invalidate(); m_rootObjects.clear(); if (m_bindingRootObject) { m_bindingRootObject->invalidate(); m_bindingRootObject = 0; } #if ENABLE(NETSCAPE_PLUGIN_API) if (m_windowScriptNPObject) { // Call _NPN_DeallocateObject() instead of _NPN_ReleaseObject() so that we don't leak if a plugin fails to release the window // script object properly. // This shouldn't cause any problems for plugins since they should have already been stopped and destroyed at this point. _NPN_DeallocateObject(m_windowScriptNPObject); m_windowScriptNPObject = 0; } #endif }
void ScriptController::clearScriptObjects() { PluginObjectMap::iterator it = m_pluginObjects.begin(); for (; it != m_pluginObjects.end(); ++it) { _NPN_UnregisterObject(it->value); _NPN_ReleaseObject(it->value); } m_pluginObjects.clear(); #if ENABLE(NETSCAPE_PLUGIN_API) if (m_wrappedWindowScriptNPObject) { NPObjectWrapper* windowScriptObjectWrapper = NPObjectWrapper::getWrapper(m_wrappedWindowScriptNPObject); ASSERT(windowScriptObjectWrapper); NPObject* windowScriptNPObject = NPObjectWrapper::getUnderlyingNPObject(m_wrappedWindowScriptNPObject); ASSERT(windowScriptNPObject); // Call _NPN_DeallocateObject() instead of _NPN_ReleaseObject() so that we don't leak if a plugin fails to release the window // script object properly. // This shouldn't cause any problems for plugins since they should have already been stopped and destroyed at this point. _NPN_DeallocateObject(windowScriptNPObject); // Clear out the wrapped window script object pointer held by the wrapper. windowScriptObjectWrapper->clear(); _NPN_ReleaseObject(m_wrappedWindowScriptNPObject); m_wrappedWindowScriptNPObject = 0; } #endif }
void ScriptController::clearScriptObjects() { PluginObjectMap::iterator it = m_pluginObjects.begin(); for (; it != m_pluginObjects.end(); ++it) { _NPN_UnregisterObject(it->second); _NPN_ReleaseObject(it->second); } m_pluginObjects.clear(); #if ENABLE(NETSCAPE_PLUGIN_API) if (m_windowScriptNPObject) { // Call _NPN_DeallocateObject() instead of _NPN_ReleaseObject() so that we don't leak if a plugin fails to release the window // script object properly. // This shouldn't cause any problems for plugins since they should have already been stopped and destroyed at this point. _NPN_DeallocateObject(m_windowScriptNPObject); m_windowScriptNPObject = 0; } #endif }
void NPN_DeallocateObject(NPObject *obj) { _NPN_DeallocateObject(obj); }