void PluginView::Stream::didFinishLoading(NetscapePlugInStreamLoader*) { // Calling streamDidFinishLoading could cause us to be deleted, so we hold on to a reference here. RefPtr<Stream> protectStream(this); // Protect the plug-in while we're calling into it. NPRuntimeObjectMap::PluginProtector pluginProtector(&m_pluginView->m_npRuntimeObjectMap); m_pluginView->m_plugin->streamDidFinishLoading(m_streamID); m_pluginView->removeStream(this); m_pluginView = 0; }
bool PluginView::evaluate(NPObject* npObject, const String& scriptString, NPVariant* result, bool allowPopups) { // FIXME: Is this check necessary? if (!m_pluginElement->document()->frame()) return false; // Calling evaluate will run JavaScript that can potentially remove the plug-in element, so we need to // protect the plug-in view from destruction. NPRuntimeObjectMap::PluginProtector pluginProtector(&m_npRuntimeObjectMap); UserGestureIndicator gestureIndicator(allowPopups ? DefinitelyProcessingUserGesture : PossiblyProcessingUserGesture); return m_npRuntimeObjectMap.evaluate(npObject, scriptString, result); }