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..febb01d9302ea3cb375611afd87c6035eb4bf0e0 100644 |
--- a/third_party/WebKit/Source/platform/plugins/PluginData.cpp |
+++ b/third_party/WebKit/Source/platform/plugins/PluginData.cpp |
@@ -30,51 +30,100 @@ |
namespace blink { |
-PluginData::PluginData(SecurityOrigin* main_frame_origin) |
- : main_frame_origin_(main_frame_origin) { |
+// static |
+void PluginData::RefreshBrowserSidePluginCache() { |
jbroman
2017/05/25 15:27:24
nit: why did this function move up here, far away
lfg
2017/05/25 21:34:42
Done.
|
+ PluginListBuilder builder(nullptr); |
+ Platform::Current()->GetPluginList(true, WebSecurityOrigin::CreateUnique(), |
+ &builder); |
+} |
+ |
+DEFINE_TRACE(MimeClassInfo) { |
jbroman
2017/05/25 15:27:24
nit: put MimeClassInfo::trace next to the other Mi
lfg
2017/05/25 21:34:42
Done.
|
+ visitor->Trace(plugin_); |
+} |
+ |
+DEFINE_TRACE(PluginInfo) { |
+ visitor->Trace(mimes_); |
+} |
+ |
+DEFINE_TRACE(PluginData) { |
+ visitor->Trace(plugins_); |
+ visitor->Trace(mimes_); |
+} |
+ |
+MimeClassInfo::MimeClassInfo(const String& type, |
+ const String& desc, |
+ PluginInfo& plugin) |
+ : type_(type), desc_(desc), plugin_(&plugin) {} |
+ |
+PluginInfo::PluginInfo(const String& name, |
+ const String& file, |
+ const 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 { |
jbroman
2017/05/25 15:27:24
This function seems to be dead code.
lfg
2017/05/25 21:34:42
Done.
|
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 |