[UNIX] Add a method to get information for an already loaded plugin module
authorcarlosgc@webkit.org <carlosgc@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 30 Sep 2011 14:23:43 +0000 (14:23 +0000)
committercarlosgc@webkit.org <carlosgc@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 30 Sep 2011 14:23:43 +0000 (14:23 +0000)
https://bugs.webkit.org/show_bug.cgi?id=69139

Reviewed by Martin Robinson.

* Shared/Plugins/Netscape/NetscapePluginModule.h: Add pluginInfo().
* Shared/Plugins/Netscape/x11/NetscapePluginModuleX11.cpp:
(WebKit::NetscapePluginModule::pluginInfo): Private method to get
the plugin information from the module, it must be called when the
module has been already initialized.
(WebKit::NetscapePluginModule::getPluginInfo): Use pluginInfo() to
get information of the plugin module for the given path.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@96400 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebKit2/ChangeLog
Source/WebKit2/Shared/Plugins/Netscape/NetscapePluginModule.h
Source/WebKit2/Shared/Plugins/Netscape/x11/NetscapePluginModuleX11.cpp

index dc82c75..b0e7907 100644 (file)
@@ -1,3 +1,18 @@
+2011-09-30  Carlos Garcia Campos  <cgarcia@igalia.com>
+
+        [UNIX] Add a method to get information for an already loaded plugin module
+        https://bugs.webkit.org/show_bug.cgi?id=69139
+
+        Reviewed by Martin Robinson.
+
+        * Shared/Plugins/Netscape/NetscapePluginModule.h: Add pluginInfo().
+        * Shared/Plugins/Netscape/x11/NetscapePluginModuleX11.cpp:
+        (WebKit::NetscapePluginModule::pluginInfo): Private method to get
+        the plugin information from the module, it must be called when the
+        module has been already initialized.
+        (WebKit::NetscapePluginModule::getPluginInfo): Use pluginInfo() to
+        get information of the plugin module for the given path.
+
 2011-09-30  Zeno Albisser  <zeno.albisser@nokia.com>
 
         [Qt][WK2] Event delivery in QDesktopWebView is broken after merge of Qt5 refactor
 2011-09-30  Zeno Albisser  <zeno.albisser@nokia.com>
 
         [Qt][WK2] Event delivery in QDesktopWebView is broken after merge of Qt5 refactor
index ed6f182..08d8740 100644 (file)
@@ -69,6 +69,7 @@ private:
 #if PLUGIN_ARCHITECTURE(X11)
     void applyX11QuirksBeforeLoad();
     static void setMIMEDescription(const String& mimeDescription, PluginModuleInfo&);
 #if PLUGIN_ARCHITECTURE(X11)
     void applyX11QuirksBeforeLoad();
     static void setMIMEDescription(const String& mimeDescription, PluginModuleInfo&);
+    bool pluginInfo(PluginModuleInfo&);
 #endif
 
     bool tryGetSitesWithData(Vector<String>&);
 #endif
 
     bool tryGetSitesWithData(Vector<String>&);
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");
     NPP_GetValueProcPtr NPP_GetValue = module->functionPointer<NPP_GetValueProcPtr>("NP_GetValue");
-    if (!NPP_GetValue) {
-        pluginModule->decrementLoadCount();
+    if (!NPP_GetValue)
         return false;
         return false;
-    }
 
     NP_GetMIMEDescriptionFuncPtr NP_GetMIMEDescription = module->functionPointer<NP_GetMIMEDescriptionFuncPtr>("NP_GetMIMEDescription");
 
     NP_GetMIMEDescriptionFuncPtr NP_GetMIMEDescription = module->functionPointer<NP_GetMIMEDescriptionFuncPtr>("NP_GetMIMEDescription");
-    if (!NP_GetMIMEDescription) {
-        pluginModule->decrementLoadCount();
+    if (!NP_GetMIMEDescription)
         return false;
         return false;
-    }
 
     char* buffer;
     NPError error = NPP_GetValue(0, NPPVpluginNameString, &buffer);
 
     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();
         plugin.info.desc = buffer;
 
     const char* mimeDescription = NP_GetMIMEDescription();
-    if (!mimeDescription) {
-        pluginModule->decrementLoadCount();
+    if (!mimeDescription)
         return false;
         return false;
-    }
 
     setMIMEDescription(mimeDescription, plugin);
 
 
     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();
 
     pluginModule->decrementLoadCount();
 
-    return true;
+    return returnValue;
 }
 
 void NetscapePluginModule::determineQuirks()
 }
 
 void NetscapePluginModule::determineQuirks()