| 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
|
|
|