Index: chrome/browser/plugin_installer.cc |
diff --git a/chrome/browser/plugin_installer.cc b/chrome/browser/plugin_installer.cc |
index bcfbecc28a1c8ec5f3d6f4e161b6d66bd7c8f229..a9d7494efa248482f69b255ad374e817a3f54718 100644 |
--- a/chrome/browser/plugin_installer.cc |
+++ b/chrome/browser/plugin_installer.cc |
@@ -8,10 +8,12 @@ |
#include "base/bind_helpers.h" |
#include "base/file_util.h" |
#include "base/process.h" |
+#include "base/utf_string_conversions.h" |
#include "chrome/browser/download/download_service.h" |
#include "chrome/browser/download/download_service_factory.h" |
#include "chrome/browser/download/download_util.h" |
#include "chrome/browser/platform_util.h" |
+#include "chrome/browser/plugin_finder.h" |
#include "chrome/browser/plugin_installer_observer.h" |
#include "chrome/browser/profiles/profile.h" |
#include "chrome/browser/ui/tab_contents/tab_contents.h" |
@@ -72,9 +74,11 @@ PluginInstaller::PluginInstaller(const std::string& identifier, |
const string16& name, |
bool url_for_display, |
const GURL& plugin_url, |
- const GURL& help_url) |
+ const GURL& help_url, |
+ const string16& group_name_matcher) |
: identifier_(identifier), |
name_(name), |
+ group_name_matcher_(group_name_matcher), |
url_for_display_(url_for_display), |
plugin_url_(plugin_url), |
help_url_(help_url), |
@@ -97,7 +101,7 @@ PluginInstaller::SecurityStatus PluginInstaller::GetSecurityStatus( |
return SECURITY_STATUS_REQUIRES_AUTHORIZATION; |
Version version; |
- webkit::npapi::PluginGroup::CreateVersionFromString(plugin.version, &version); |
+ webkit::WebPluginInfo::CreateVersionFromString(plugin.version, &version); |
if (!version.IsValid()) |
version = Version("0"); |
@@ -250,3 +254,63 @@ void PluginInstaller::DownloadCancelled() { |
state_ = INSTALLER_STATE_IDLE; |
FOR_EACH_OBSERVER(PluginInstallerObserver, observers_, DownloadCancelled()); |
} |
+ |
+// static |
+string16 PluginInstaller::GetGroupName(const webkit::WebPluginInfo& plugin) { |
+ PluginInstaller* plugin_installer = MatchWithConfiguredPlugins(plugin); |
+ if (plugin_installer != NULL) |
+ return plugin_installer->name(); |
+ |
+ if (!plugin.name.empty()) |
+ return plugin.name; |
+ |
+ FilePath::StringType path = plugin.path.BaseName().RemoveExtension().value(); |
+#if defined(OS_POSIX) |
+ return UTF8ToUTF16(path); |
+#elif defined(OS_WIN) |
+ return WideToUTF16(path); |
+#endif |
+} |
+ |
+// static |
+std::string PluginInstaller::GetIdentifier( |
+ const webkit::WebPluginInfo& plugin) { |
+ PluginInstaller* plugin_installer = MatchWithConfiguredPlugins(plugin); |
+ if (plugin_installer != NULL) |
+ return plugin_installer->identifier(); |
+ |
+ FilePath path = plugin.path; |
+#if defined(OS_POSIX) |
+ return path.BaseName().value(); |
+#elif defined(OS_WIN) |
+ return base::SysWideToUTF8(path.BaseName().value()); |
+#endif |
+} |
+ |
+// static |
+PluginInstaller* PluginInstaller::MatchWithConfiguredPlugins( |
+ const webkit::WebPluginInfo& plugin) { |
+ const std::map<std::string, PluginInstaller*>& plugins = |
+ PluginFinder::GetInstance()->GetAllPluginInstallers(); |
+ for (std::map<std::string, PluginInstaller*>::const_iterator it = |
+ plugins.begin(); it != plugins.end(); ++it) { |
+ if (plugin.name.find(it->second->group_name_matcher()) == std::string::npos) |
+ continue; |
+ return it->second; |
+ } |
+ |
+ // Not found. |
+ return NULL; |
+} |
+ |
+// static |
+string16 PluginInstaller::GetGroupNameByIdentifier( |
+ const std::vector<webkit::WebPluginInfo>& plugins, |
+ const std::string& identifier) { |
+ for (size_t i = 0; i < plugins.size(); ++i) { |
+ if (GetIdentifier(plugins[i]) == identifier) |
+ return GetGroupName(plugins[i]); |
+ } |
+ |
+ return string16(); |
+} |