summaryrefslogtreecommitdiff
path: root/dom/plugins/base/nsPluginsDir.h
diff options
context:
space:
mode:
Diffstat (limited to 'dom/plugins/base/nsPluginsDir.h')
-rw-r--r--dom/plugins/base/nsPluginsDir.h76
1 files changed, 76 insertions, 0 deletions
diff --git a/dom/plugins/base/nsPluginsDir.h b/dom/plugins/base/nsPluginsDir.h
new file mode 100644
index 0000000000..925bbb48bf
--- /dev/null
+++ b/dom/plugins/base/nsPluginsDir.h
@@ -0,0 +1,76 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#ifndef nsPluginsDir_h_
+#define nsPluginsDir_h_
+
+#include "nsError.h"
+#include "nsIFile.h"
+
+/**
+ * nsPluginsDir is nearly obsolete. Directory Service should be used instead.
+ * It exists for the sake of one static function.
+ */
+
+class nsPluginsDir {
+public:
+ /**
+ * Determines whether or not the given file is actually a plugin file.
+ */
+ static bool IsPluginFile(nsIFile* file);
+};
+
+struct PRLibrary;
+
+struct nsPluginInfo {
+ char* fName; // name of the plugin
+ char* fDescription; // etc.
+ uint32_t fVariantCount;
+ char** fMimeTypeArray;
+ char** fMimeDescriptionArray;
+ char** fExtensionArray;
+ char* fFileName;
+ char* fFullPath;
+ char* fVersion;
+ bool fSupportsAsyncRender;
+};
+
+/**
+ * Provides cross-platform access to a plugin file. Deals with reading
+ * properties from the plugin file, and loading the plugin's shared
+ * library. Insulates core nsIPluginHost implementations from these
+ * details.
+ */
+class nsPluginFile {
+ PRLibrary* pLibrary;
+ nsCOMPtr<nsIFile> mPlugin;
+public:
+ /**
+ * If spec corresponds to a valid plugin file, constructs a reference
+ * to a plugin file on disk. Plugins are typically located using the
+ * nsPluginsDir class.
+ */
+ explicit nsPluginFile(nsIFile* spec);
+ virtual ~nsPluginFile();
+
+ /**
+ * Loads the plugin into memory using NSPR's shared-library loading
+ * mechanism. Handles platform differences in loading shared libraries.
+ */
+ nsresult LoadPlugin(PRLibrary **outLibrary);
+
+ /**
+ * Obtains all of the information currently available for this plugin.
+ * Has a library outparam which will be non-null if a library load was required.
+ */
+ nsresult GetPluginInfo(nsPluginInfo &outPluginInfo, PRLibrary **outLibrary);
+
+ /**
+ * Should be called after GetPluginInfo to free all allocated stuff
+ */
+ nsresult FreePluginInfo(nsPluginInfo &PluginInfo);
+};
+
+#endif /* nsPluginsDir_h_ */