summaryrefslogtreecommitdiff
path: root/Source/WebKit2/UIProcess/Plugins/unix/PluginInfoStoreUnix.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebKit2/UIProcess/Plugins/unix/PluginInfoStoreUnix.cpp')
-rw-r--r--Source/WebKit2/UIProcess/Plugins/unix/PluginInfoStoreUnix.cpp67
1 files changed, 24 insertions, 43 deletions
diff --git a/Source/WebKit2/UIProcess/Plugins/unix/PluginInfoStoreUnix.cpp b/Source/WebKit2/UIProcess/Plugins/unix/PluginInfoStoreUnix.cpp
index a9685618f..3b7ef381a 100644
--- a/Source/WebKit2/UIProcess/Plugins/unix/PluginInfoStoreUnix.cpp
+++ b/Source/WebKit2/UIProcess/Plugins/unix/PluginInfoStoreUnix.cpp
@@ -32,8 +32,12 @@
#include "PluginInfoStore.h"
#include "NetscapePluginModule.h"
-#include "PluginDatabase.h"
+#include "PluginSearchPath.h"
+#include "ProcessExecutablePath.h"
#include <WebCore/FileSystem.h>
+#include <WebCore/PlatformDisplay.h>
+#include <limits.h>
+#include <stdlib.h>
#if PLATFORM(GTK)
#include "PluginInfoCache.h"
@@ -45,51 +49,17 @@ namespace WebKit {
Vector<String> PluginInfoStore::pluginsDirectories()
{
- Vector<String> result;
-
- result.append(homeDirectoryPath() + "/.mozilla/plugins");
- result.append(homeDirectoryPath() + "/.netscape/plugins");
- result.append("/usr/lib/browser/plugins");
- result.append("/usr/local/lib/mozilla/plugins");
- result.append("/usr/lib/firefox/plugins");
- result.append("/usr/lib64/browser-plugins");
- result.append("/usr/lib/browser-plugins");
- result.append("/usr/lib/mozilla/plugins");
- result.append("/usr/local/netscape/plugins");
- result.append("/opt/mozilla/plugins");
- result.append("/opt/mozilla/lib/plugins");
- result.append("/opt/netscape/plugins");
- result.append("/opt/netscape/communicator/plugins");
- result.append("/usr/lib/netscape/plugins");
- result.append("/usr/lib/netscape/plugins-libc5");
- result.append("/usr/lib/netscape/plugins-libc6");
- result.append("/usr/lib64/netscape/plugins");
- result.append("/usr/lib64/mozilla/plugins");
- result.append("/usr/lib/nsbrowser/plugins");
- result.append("/usr/lib64/nsbrowser/plugins");
-
- String mozillaHome(getenv("MOZILLA_HOME"));
- if (!mozillaHome.isEmpty())
- result.append(mozillaHome + "/plugins");
-
- String mozillaPaths(getenv("MOZ_PLUGIN_PATH"));
- if (!mozillaPaths.isEmpty()) {
- Vector<String> paths;
- mozillaPaths.split(UChar(':'), /* allowEmptyEntries */ false, paths);
- result.appendVector(paths);
- }
-
- return result;
+ return WebKit::pluginsDirectories();
}
Vector<String> PluginInfoStore::pluginPathsInDirectory(const String& directory)
{
Vector<String> result;
- Vector<String> pluginPaths = listDirectory(directory, String("*.so"));
- Vector<String>::const_iterator end = pluginPaths.end();
- for (Vector<String>::const_iterator it = pluginPaths.begin(); it != end; ++it) {
- if (fileExists(*it))
- result.append(*it);
+ char normalizedPath[PATH_MAX];
+ for (const auto& path : listDirectory(directory, String("*.so"))) {
+ CString filename = fileSystemRepresentation(path);
+ if (realpath(filename.data(), normalizedPath))
+ result.append(stringFromFileSystemRepresentation(normalizedPath));
}
return result;
@@ -103,11 +73,22 @@ Vector<String> PluginInfoStore::individualPluginPaths()
bool PluginInfoStore::getPluginInfo(const String& pluginPath, PluginModuleInfo& plugin)
{
#if PLATFORM(GTK)
- if (PluginInfoCache::shared().getPluginInfo(pluginPath, plugin))
+ if (PluginInfoCache::singleton().getPluginInfo(pluginPath, plugin)) {
+#if ENABLE(PLUGIN_PROCESS_GTK2)
+ if (plugin.requiresGtk2) {
+ if (PlatformDisplay::sharedDisplay().type() != PlatformDisplay::Type::X11)
+ return false;
+ String pluginProcessPath = executablePathOfPluginProcess();
+ pluginProcessPath.append('2');
+ if (!fileExists(pluginProcessPath))
+ return false;
+ }
+#endif
return true;
+ }
if (NetscapePluginModule::getPluginInfo(pluginPath, plugin)) {
- PluginInfoCache::shared().updatePluginInfo(pluginPath, plugin);
+ PluginInfoCache::singleton().updatePluginInfo(pluginPath, plugin);
return true;
}
return false;