summaryrefslogtreecommitdiffstats
path: root/webkit/glue/plugins/plugin_lib.h
diff options
context:
space:
mode:
Diffstat (limited to 'webkit/glue/plugins/plugin_lib.h')
-rw-r--r--webkit/glue/plugins/plugin_lib.h56
1 files changed, 25 insertions, 31 deletions
diff --git a/webkit/glue/plugins/plugin_lib.h b/webkit/glue/plugins/plugin_lib.h
index cd3db97..884f235 100644
--- a/webkit/glue/plugins/plugin_lib.h
+++ b/webkit/glue/plugins/plugin_lib.h
@@ -8,13 +8,14 @@
#include "build/build_config.h"
#include <string>
+#include <vector>
#include "base/basictypes.h"
#include "base/file_path.h"
-#include "base/hash_tables.h"
#include "base/ref_counted.h"
#include "base/scoped_ptr.h"
#include "webkit/glue/plugins/nphostapi.h"
+#include "webkit/glue/webplugin.h"
#include "third_party/npapi/bindings/npapi.h"
struct WebPluginInfo;
@@ -27,7 +28,8 @@ class PluginInstance;
// This struct fully describes a plugin. For external plugins, it's read in from
// the version info of the dll; For internal plugins, it's predefined.
struct PluginVersionInfo {
- std::wstring file_name;
+ std::wstring filename;
+ std::wstring path;
std::wstring product_name;
std::wstring file_description;
std::wstring file_version;
@@ -49,8 +51,13 @@ struct InternalPluginInfo {
// manager for new PluginInstances.
class PluginLib : public base::RefCounted<PluginLib> {
public:
+ static PluginLib* PluginLib::CreatePluginLib(const FilePath& filename);
virtual ~PluginLib();
- static PluginLib* CreatePluginLib(const FilePath& filename);
+
+ // Creates a WebPluginInfo structure given a plugin's path. On success
+ // returns true, with the information being put into "info". Returns false if
+ // the library couldn't be found, or if it's not a plugin.
+ static bool ReadWebPluginInfo(const FilePath &filename, WebPluginInfo* info);
// Unloads all the loaded plugin libraries and cleans up the plugin map.
static void UnloadAllPlugins();
@@ -61,10 +68,6 @@ class PluginLib : public base::RefCounted<PluginLib> {
// Get the Plugin's function pointer table.
NPPluginFuncs *functions();
- // Returns true if this Plugin supports a given mime-type.
- // mime_type should be all lower case.
- bool SupportsType(const std::string &mime_type, bool allow_wildcard);
-
// Creates a new instance of this plugin.
PluginInstance *CreateInstance(const std::string &mime_type);
@@ -73,7 +76,7 @@ class PluginLib : public base::RefCounted<PluginLib> {
// Gets information about this plugin and the mime types that it
// supports.
- const WebPluginInfo& plugin_info() { return *web_plugin_info_; }
+ const WebPluginInfo& plugin_info() { return web_plugin_info_; }
//
// NPAPI functions
@@ -95,11 +98,8 @@ class PluginLib : public base::RefCounted<PluginLib> {
int instance_count() const { return instance_count_; }
private:
- // Creates a new PluginLib. The WebPluginInfo object is owned by this
- // object. If internal_plugin_info is not NULL, this Lib is an internal
- // plugin thus doesn't need to load a library.
- PluginLib(WebPluginInfo* info,
- const InternalPluginInfo* internal_plugin_info);
+ // Creates a new PluginLib
+ PluginLib(const WebPluginInfo& info);
// Attempts to load the plugin from the library.
// Returns true if it is a legitimate plugin, false otherwise
@@ -111,31 +111,25 @@ class PluginLib : public base::RefCounted<PluginLib> {
// Shutdown the plugin library.
void Shutdown();
- // Returns a WebPluginInfo structure given a plugin's path. Returns NULL if
- // the library couldn't be found, or if it's not a plugin.
- static WebPluginInfo* ReadWebPluginInfo(const FilePath &filename);
// Creates WebPluginInfo structure based on read in or built in
// PluginVersionInfo.
- static WebPluginInfo* CreateWebPluginInfo(const PluginVersionInfo& info);
+ static bool CreateWebPluginInfo(const PluginVersionInfo& pvi,
+ WebPluginInfo* info);
- bool internal_; // Whether this an internal plugin.
- scoped_ptr<WebPluginInfo> web_plugin_info_; // supported mime types, description
+ bool internal_; // Whether this an internal plugin.
+ WebPluginInfo web_plugin_info_; // supported mime types, description
#if defined(OS_WIN)
- HMODULE module_; // the opened DLL handle
+ HMODULE module_; // the opened DLL handle
#endif
- NPPluginFuncs plugin_funcs_; // the struct of plugin side functions
- bool initialized_; // is the plugin initialized
- NPSavedData *saved_data_; // persisted plugin info for NPAPI
- int instance_count_; // count of plugins in use
-
- // A map of all the instantiated plugins.
- typedef base::hash_map<FilePath, scoped_refptr<PluginLib> > PluginMap;
- static PluginMap* loaded_libs_;
+ NPPluginFuncs plugin_funcs_; // the struct of plugin side functions
+ bool initialized_; // is the plugin initialized
+ NPSavedData *saved_data_; // persisted plugin info for NPAPI
+ int instance_count_; // count of plugins in use
// C-style function pointers
- NP_InitializeFunc NP_Initialize_;
- NP_GetEntryPointsFunc NP_GetEntryPoints_;
- NP_ShutdownFunc NP_Shutdown_;
+ NP_InitializeFunc NP_Initialize_;
+ NP_GetEntryPointsFunc NP_GetEntryPoints_;
+ NP_ShutdownFunc NP_Shutdown_;
DISALLOW_EVIL_CONSTRUCTORS(PluginLib);
};