Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(269)

Unified Diff: third_party/WebKit/Source/platform/plugins/PluginData.cpp

Issue 2901353002: Move blink::PluginData, blink::PluginInfo, blink::MimeTypeInfo to oilpan heap. (Closed)
Patch Set: Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698