Chromium Code Reviews| 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 |