Index: third_party/WebKit/Source/platform/plugins/PluginData.cpp |
diff --git a/third_party/WebKit/Source/platform/plugins/PluginData.cpp b/third_party/WebKit/Source/platform/plugins/PluginData.cpp |
index 03618f6a3d96275a59c9644759ac3afacf588068..f384a1adf53b006bf5d4511784dfbec9cb71c790 100644 |
--- a/third_party/WebKit/Source/platform/plugins/PluginData.cpp |
+++ b/third_party/WebKit/Source/platform/plugins/PluginData.cpp |
@@ -30,51 +30,96 @@ |
namespace blink { |
-PluginData::PluginData(SecurityOrigin* main_frame_origin) |
- : main_frame_origin_(main_frame_origin) { |
+// static |
+void PluginData::RefreshBrowserSidePluginCache() { |
+ PluginListBuilder builder(nullptr); |
+ Platform::Current()->GetPluginList(true, WebSecurityOrigin::CreateUnique(), |
+ &builder); |
+} |
+ |
+DEFINE_TRACE(MimeClassInfo) { |
+ visitor->Trace(plugin_); |
+} |
+ |
+DEFINE_TRACE(PluginInfo) { |
+ visitor->Trace(mimes_); |
+} |
+ |
+DEFINE_TRACE(PluginData) { |
+ visitor->Trace(plugins_); |
+ visitor->Trace(mimes_); |
+} |
+ |
+MimeClassInfo::MimeClassInfo(String type, String desc, PluginInfo* plugin) |
+ : type_(type), desc_(desc), plugin_(plugin) {} |
+ |
+PluginInfo::PluginInfo(String name, String file, String desc) |
+ : name_(name), file_(file), desc_(desc) {} |
+ |
+void PluginInfo::AddMimeType(MimeClassInfo* info) { |
+ mimes_.push_back(info); |
+} |
+ |
+const MimeClassInfo* PluginInfo::GetMimeClassInfo(size_t index) const { |
+ if (index > mimes_.size()) |
+ return nullptr; |
+ return mimes_[index]; |
+} |
+ |
+const MimeClassInfo* PluginInfo::GetMimeClassInfo(const String& type) const { |
+ for (MimeClassInfo* mime : mimes_) { |
+ if (mime->type() == type) |
+ return mime; |
+ } |
+ |
+ return nullptr; |
+} |
+ |
+size_t PluginInfo::GetMimeClassInfoSize() const { |
+ return mimes_.size(); |
+} |
+ |
+void PluginData::UpdatePluginList(SecurityOrigin* main_frame_origin) { |
+ main_frame_origin_ = main_frame_origin; |
PluginListBuilder builder(&plugins_); |
Platform::Current()->GetPluginList( |
false, WebSecurityOrigin(main_frame_origin_), &builder); |
- for (unsigned i = 0; i < plugins_.size(); ++i) { |
- const PluginInfo& plugin = plugins_[i]; |
- for (unsigned j = 0; j < plugin.mimes.size(); ++j) { |
- mimes_.push_back(plugin.mimes[j]); |
- mime_plugin_indices_.push_back(i); |
- } |
+ for (PluginInfo* plugin_info : plugins_) { |
+ for (MimeClassInfo* mime_class_info : plugin_info->mimes_) |
+ mimes_.push_back(mime_class_info); |
} |
} |
+void PluginData::ResetPluginData() { |
+ plugins_.clear(); |
+ mimes_.clear(); |
+ main_frame_origin_ = nullptr; |
+} |
+ |
bool PluginData::SupportsMimeType(const String& mime_type) const { |
- for (unsigned i = 0; i < mimes_.size(); ++i) |
- if (mimes_[i].type == mime_type) |
+ for (const MimeClassInfo* info : mimes_) { |
+ if (info->type_ == mime_type) |
return true; |
+ } |
+ |
return false; |
} |
const PluginInfo* PluginData::PluginInfoForMimeType( |
const String& mime_type) const { |
- for (unsigned i = 0; i < mimes_.size(); ++i) { |
- const MimeClassInfo& info = mimes_[i]; |
- |
- if (info.type == mime_type) |
- return &plugins_[mime_plugin_indices_[i]]; |
+ for (const MimeClassInfo* info : mimes_) { |
+ if (info->type() == mime_type) |
+ return info->plugin_; |
} |
- return 0; |
+ return nullptr; |
} |
String PluginData::PluginNameForMimeType(const String& mime_type) const { |
if (const PluginInfo* info = PluginInfoForMimeType(mime_type)) |
- return info->name; |
+ return info->name(); |
return String(); |
} |
-void PluginData::RefreshBrowserSidePluginCache() { |
- Vector<PluginInfo> plugins; |
- PluginListBuilder builder(&plugins); |
- Platform::Current()->GetPluginList(true, WebSecurityOrigin::CreateUnique(), |
- &builder); |
-} |
- |
} // namespace blink |