summaryrefslogtreecommitdiffstats
path: root/webkit/glue/plugins/plugin_lib.cc
diff options
context:
space:
mode:
authorjam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-01-20 21:30:29 +0000
committerjam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-01-20 21:30:29 +0000
commitb3c595afbf8e188d9496606a4c42bfecffad3b07 (patch)
treedf698a83397f2bdd6785b93ee343465f2feedc84 /webkit/glue/plugins/plugin_lib.cc
parent559fd2cc6db35d5dd473849836e5b31396936a73 (diff)
downloadchromium_src-b3c595afbf8e188d9496606a4c42bfecffad3b07.zip
chromium_src-b3c595afbf8e188d9496606a4c42bfecffad3b07.tar.gz
chromium_src-b3c595afbf8e188d9496606a4c42bfecffad3b07.tar.bz2
Clean up how the default plugin is loaded so that InternalPluginInfo & PluginVersionInfo remain in the windows file, and other platforms can store this data in the most convenient form to them.
Review URL: http://codereview.chromium.org/18419 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@8322 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/glue/plugins/plugin_lib.cc')
-rw-r--r--webkit/glue/plugins/plugin_lib.cc34
1 files changed, 18 insertions, 16 deletions
diff --git a/webkit/glue/plugins/plugin_lib.cc b/webkit/glue/plugins/plugin_lib.cc
index d747d0e..57b6ef0 100644
--- a/webkit/glue/plugins/plugin_lib.cc
+++ b/webkit/glue/plugins/plugin_lib.cc
@@ -35,10 +35,15 @@ PluginLib* PluginLib::CreatePluginLib(const FilePath& filename) {
}
WebPluginInfo info;
- if (!ReadWebPluginInfo(filename, &info))
+ NP_GetEntryPointsFunc np_getentrypoints;
+ NP_InitializeFunc np_initialize;
+ NP_ShutdownFunc np_shutdown;
+ if (!ReadWebPluginInfo(filename, &info, &np_getentrypoints, &np_initialize,
+ &np_shutdown)) {
return NULL;
+ }
- return new PluginLib(info);
+ return new PluginLib(info, np_getentrypoints, np_initialize, np_shutdown);
}
void PluginLib::UnloadAllPlugins() {
@@ -58,7 +63,10 @@ void PluginLib::ShutdownAllPlugins() {
}
}
-PluginLib::PluginLib(const WebPluginInfo& info)
+PluginLib::PluginLib(const WebPluginInfo& info,
+ NP_GetEntryPointsFunc np_getentrypoints,
+ NP_InitializeFunc np_initialize,
+ NP_ShutdownFunc np_shutdown)
: web_plugin_info_(info),
library_(0),
initialized_(false),
@@ -68,19 +76,13 @@ PluginLib::PluginLib(const WebPluginInfo& info)
memset((void*)&plugin_funcs_, 0, sizeof(plugin_funcs_));
g_loaded_libs->push_back(this);
- const InternalPluginInfo* internal_plugins;
- size_t internal_plugin_count;
- GetInternalPlugins(&internal_plugins, &internal_plugin_count);
-
- internal_ = false;
- for (size_t i = 0; i < internal_plugin_count; ++i) {
- if (info.path == internal_plugins[i].version_info.path) {
- internal_ = true;
- NP_Initialize_ = internal_plugins[i].np_initialize;
- NP_GetEntryPoints_ = internal_plugins[i].np_getentrypoints;
- NP_Shutdown_ = internal_plugins[i].np_shutdown;
- break;
- }
+ if (np_getentrypoints && np_initialize && np_shutdown) {
+ internal_ = true;
+ NP_GetEntryPoints_ = np_getentrypoints;
+ NP_Initialize_ = np_initialize;
+ NP_Shutdown_ = np_shutdown;
+ } else {
+ internal_ = false;
}
}