Index: chrome/browser/plugins/plugin_metadata.cc |
diff --git a/chrome/browser/plugins/plugin_metadata.cc b/chrome/browser/plugins/plugin_metadata.cc |
index 5013c7f173401114be3753373d115038778ea23b..575328dc90f0d4a1279642203eea2659941843d1 100644 |
--- a/chrome/browser/plugins/plugin_metadata.cc |
+++ b/chrome/browser/plugins/plugin_metadata.cc |
@@ -5,6 +5,8 @@ |
#include "chrome/browser/plugins/plugin_metadata.h" |
#include "base/logging.h" |
+#include "base/string_util.h" |
+#include "base/utf_string_conversions.h" |
#include "webkit/plugins/npapi/plugin_utils.h" |
#include "webkit/plugins/webplugininfo.h" |
@@ -23,13 +25,15 @@ PluginMetadata::PluginMetadata(const std::string& identifier, |
bool url_for_display, |
const GURL& plugin_url, |
const GURL& help_url, |
- const string16& group_name_matcher) |
+ const string16& group_name_matcher, |
+ const std::string& language) |
: identifier_(identifier), |
name_(name), |
group_name_matcher_(group_name_matcher), |
url_for_display_(url_for_display), |
plugin_url_(plugin_url), |
- help_url_(help_url) { |
+ help_url_(help_url), |
+ language_(language) { |
} |
PluginMetadata::~PluginMetadata() { |
@@ -41,7 +45,33 @@ void PluginMetadata::AddVersion(const Version& version, |
versions_[version] = status; |
} |
-bool PluginMetadata::MatchesPlugin(const webkit::WebPluginInfo& plugin) { |
+void PluginMetadata::AddMimeType(const std::string& mime_type, |
+ bool use_in_matching) { |
+ all_mime_types_.push_back(mime_type); |
+ if (use_in_matching) |
+ matching_mime_types_.push_back(mime_type); |
+} |
+ |
+bool PluginMetadata::HasMimeType(const std::string& mime_type) const { |
+ return std::find(all_mime_types_.begin(), all_mime_types_.end(), mime_type) != |
+ all_mime_types_.end(); |
+} |
+ |
+bool PluginMetadata::MatchesPlugin(const webkit::WebPluginInfo& plugin, |
+ string16* matching_name) { |
+ size_t mimetypes_size = plugin.mime_types.size(); |
+ for (size_t i = 0; i < matching_mime_types_.size(); ++i) { |
+ size_t j = 0; |
+ for (; j < mimetypes_size; ++j) { |
+ if (plugin.mime_types[j].mime_type == matching_mime_types_[i]) |
+ break; |
+ } |
+ if (j == mimetypes_size) |
+ return false; |
+ } |
+ |
+ *matching_name = matching_mime_types_.size() > 0 ? |
+ ASCIIToUTF16(JoinString(matching_mime_types_, '+')) : name_; |
return plugin.name.find(group_name_matcher_) != string16::npos; |
} |
@@ -100,7 +130,8 @@ scoped_ptr<PluginMetadata> PluginMetadata::Clone() const { |
url_for_display_, |
plugin_url_, |
help_url_, |
- group_name_matcher_); |
+ group_name_matcher_, |
+ language_); |
copy->versions_ = versions_; |
return make_scoped_ptr(copy); |
} |