| 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..2511cddc67fd1eb1713bc9653d80a6e3accc0191 100644
|
| --- a/third_party/WebKit/Source/platform/plugins/PluginData.cpp
|
| +++ b/third_party/WebKit/Source/platform/plugins/PluginData.cpp
|
| @@ -30,51 +30,84 @@
|
|
|
| namespace blink {
|
|
|
| -PluginData::PluginData(SecurityOrigin* main_frame_origin)
|
| - : main_frame_origin_(main_frame_origin) {
|
| - PluginListBuilder builder(&plugins_);
|
| - Platform::Current()->GetPluginList(
|
| - false, WebSecurityOrigin(main_frame_origin_), &builder);
|
| +DEFINE_TRACE(MimeClassInfo) {
|
| + visitor->Trace(plugin_);
|
| +}
|
|
|
| - 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);
|
| - }
|
| - }
|
| +MimeClassInfo::MimeClassInfo(const String& type,
|
| + const String& description,
|
| + PluginInfo& plugin)
|
| + : type_(type), description_(description), plugin_(&plugin) {}
|
| +
|
| +DEFINE_TRACE(PluginInfo) {
|
| + visitor->Trace(mimes_);
|
| }
|
|
|
| -bool PluginData::SupportsMimeType(const String& mime_type) const {
|
| - for (unsigned i = 0; i < mimes_.size(); ++i)
|
| - if (mimes_[i].type == mime_type)
|
| - return true;
|
| - return false;
|
| +PluginInfo::PluginInfo(const String& name,
|
| + const String& filename,
|
| + const String& description)
|
| + : name_(name), filename_(filename), description_(description) {}
|
| +
|
| +void PluginInfo::AddMimeType(MimeClassInfo* info) {
|
| + mimes_.push_back(info);
|
| }
|
|
|
| -const PluginInfo* PluginData::PluginInfoForMimeType(
|
| - const String& mime_type) const {
|
| - for (unsigned i = 0; i < mimes_.size(); ++i) {
|
| - const MimeClassInfo& info = mimes_[i];
|
| +const MimeClassInfo* PluginInfo::GetMimeClassInfo(size_t index) const {
|
| + if (index > mimes_.size())
|
| + return nullptr;
|
| + return mimes_[index];
|
| +}
|
|
|
| - if (info.type == mime_type)
|
| - return &plugins_[mime_plugin_indices_[i]];
|
| +const MimeClassInfo* PluginInfo::GetMimeClassInfo(const String& type) const {
|
| + for (MimeClassInfo* mime : mimes_) {
|
| + if (mime->Type() == type)
|
| + return mime;
|
| }
|
|
|
| - return 0;
|
| + return nullptr;
|
| }
|
|
|
| -String PluginData::PluginNameForMimeType(const String& mime_type) const {
|
| - if (const PluginInfo* info = PluginInfoForMimeType(mime_type))
|
| - return info->name;
|
| - return String();
|
| +size_t PluginInfo::GetMimeClassInfoSize() const {
|
| + return mimes_.size();
|
| }
|
|
|
| +DEFINE_TRACE(PluginData) {
|
| + visitor->Trace(plugins_);
|
| + visitor->Trace(mimes_);
|
| +}
|
| +
|
| +// static
|
| void PluginData::RefreshBrowserSidePluginCache() {
|
| - Vector<PluginInfo> plugins;
|
| - PluginListBuilder builder(&plugins);
|
| + PluginListBuilder builder(nullptr);
|
| Platform::Current()->GetPluginList(true, WebSecurityOrigin::CreateUnique(),
|
| &builder);
|
| }
|
|
|
| +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 (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 (const MimeClassInfo* info : mimes_) {
|
| + if (info->type_ == mime_type)
|
| + return true;
|
| + }
|
| +
|
| + return false;
|
| +}
|
| +
|
| } // namespace blink
|
|
|