[UNIX] Add a method to get information for an already loaded plugin module
[WebKit-https.git] / Source / WebKit2 / Shared / Plugins / Netscape / x11 / NetscapePluginModuleX11.cpp
index b60a536..23f384f 100644 (file)
@@ -118,35 +118,21 @@ void NetscapePluginModule::setMIMEDescription(const String& mimeDescription, Plu
     }
 }
 
-bool NetscapePluginModule::getPluginInfo(const String& pluginPath, PluginModuleInfo& plugin)
+bool NetscapePluginModule::pluginInfo(PluginModuleInfo& plugin)
 {
-    // Tempararily suppress stdout in this function as plugins will be loaded and shutdown and debug info
-    // is leaked to layout test output.
-    StdoutDevNullRedirector stdoutDevNullRedirector;
-
-    // We are loading the plugin here since it does not seem to be a standardized way to
-    // get the needed informations from a UNIX plugin without loading it.
-    RefPtr<NetscapePluginModule> pluginModule = NetscapePluginModule::getOrCreate(pluginPath);
-    if (!pluginModule)
-        return false;
-
-    pluginModule->incrementLoadCount();
+    ASSERT(m_isInitialized);
 
-    plugin.path = pluginPath;
-    plugin.info.file = pathGetFileName(pluginPath);
+    plugin.path = m_pluginPath;
+    plugin.info.file = pathGetFileName(m_pluginPath);
 
-    Module* module = pluginModule->module();
+    Module* module = m_module.get();
     NPP_GetValueProcPtr NPP_GetValue = module->functionPointer<NPP_GetValueProcPtr>("NP_GetValue");
-    if (!NPP_GetValue) {
-        pluginModule->decrementLoadCount();
+    if (!NPP_GetValue)
         return false;
-    }
 
     NP_GetMIMEDescriptionFuncPtr NP_GetMIMEDescription = module->functionPointer<NP_GetMIMEDescriptionFuncPtr>("NP_GetMIMEDescription");
-    if (!NP_GetMIMEDescription) {
-        pluginModule->decrementLoadCount();
+    if (!NP_GetMIMEDescription)
         return false;
-    }
 
     char* buffer;
     NPError error = NPP_GetValue(0, NPPVpluginNameString, &buffer);
@@ -158,16 +144,30 @@ bool NetscapePluginModule::getPluginInfo(const String& pluginPath, PluginModuleI
         plugin.info.desc = buffer;
 
     const char* mimeDescription = NP_GetMIMEDescription();
-    if (!mimeDescription) {
-        pluginModule->decrementLoadCount();
+    if (!mimeDescription)
         return false;
-    }
 
     setMIMEDescription(mimeDescription, plugin);
 
+    return true;
+}
+bool NetscapePluginModule::getPluginInfo(const String& pluginPath, PluginModuleInfo& plugin)
+{
+    // Tempararily suppress stdout in this function as plugins will be loaded and shutdown and debug info
+    // is leaked to layout test output.
+    StdoutDevNullRedirector stdoutDevNullRedirector;
+
+    // We are loading the plugin here since it does not seem to be a standardized way to
+    // get the needed informations from a UNIX plugin without loading it.
+    RefPtr<NetscapePluginModule> pluginModule = NetscapePluginModule::getOrCreate(pluginPath);
+    if (!pluginModule)
+        return false;
+
+    pluginModule->incrementLoadCount();
+    bool returnValue = pluginModule->pluginInfo(plugin);
     pluginModule->decrementLoadCount();
 
-    return true;
+    return returnValue;
 }
 
 void NetscapePluginModule::determineQuirks()