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 |