diff options
author | jam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-01-20 21:30:29 +0000 |
---|---|---|
committer | jam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-01-20 21:30:29 +0000 |
commit | b3c595afbf8e188d9496606a4c42bfecffad3b07 (patch) | |
tree | df698a83397f2bdd6785b93ee343465f2feedc84 /webkit/glue/plugins/plugin_lib.cc | |
parent | 559fd2cc6db35d5dd473849836e5b31396936a73 (diff) | |
download | chromium_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.cc | 34 |
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; } } |