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

Side by Side Diff: third_party/WebKit/Source/platform/plugins/PluginData.cpp

Issue 2901353002: Move blink::PluginData, blink::PluginInfo, blink::MimeTypeInfo to oilpan heap. (Closed)
Patch Set: nits, remove dead code Created 3 years, 6 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 unified diff | Download patch
OLDNEW
1 /* 1 /*
2 Copyright (C) 2000 Harri Porten (porten@kde.org) 2 Copyright (C) 2000 Harri Porten (porten@kde.org)
3 Copyright (C) 2000 Daniel Molkentin (molkentin@kde.org) 3 Copyright (C) 2000 Daniel Molkentin (molkentin@kde.org)
4 Copyright (C) 2000 Stefan Schimanski (schimmi@kde.org) 4 Copyright (C) 2000 Stefan Schimanski (schimmi@kde.org)
5 Copyright (C) 2003, 2004, 2005, 2006, 2007 Apple Inc. All Rights Reserved. 5 Copyright (C) 2003, 2004, 2005, 2006, 2007 Apple Inc. All Rights Reserved.
6 Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) 6 Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies)
7 7
8 This library is free software; you can redistribute it and/or 8 This library is free software; you can redistribute it and/or
9 modify it under the terms of the GNU Library General Public 9 modify it under the terms of the GNU Library General Public
10 License as published by the Free Software Foundation; either 10 License as published by the Free Software Foundation; either
(...skipping 12 matching lines...) Expand all
23 23
24 #include "platform/plugins/PluginData.h" 24 #include "platform/plugins/PluginData.h"
25 25
26 #include "platform/plugins/PluginListBuilder.h" 26 #include "platform/plugins/PluginListBuilder.h"
27 #include "platform/weborigin/SecurityOrigin.h" 27 #include "platform/weborigin/SecurityOrigin.h"
28 #include "public/platform/Platform.h" 28 #include "public/platform/Platform.h"
29 #include "public/platform/WebSecurityOrigin.h" 29 #include "public/platform/WebSecurityOrigin.h"
30 30
31 namespace blink { 31 namespace blink {
32 32
33 PluginData::PluginData(SecurityOrigin* main_frame_origin) 33 DEFINE_TRACE(MimeClassInfo) {
34 : main_frame_origin_(main_frame_origin) { 34 visitor->Trace(plugin_);
35 }
36
37 MimeClassInfo::MimeClassInfo(const String& type,
38 const String& description,
39 PluginInfo& plugin)
40 : type_(type), description_(description), plugin_(&plugin) {}
41
42 DEFINE_TRACE(PluginInfo) {
43 visitor->Trace(mimes_);
44 }
45
46 PluginInfo::PluginInfo(const String& name,
47 const String& filename,
48 const String& description)
49 : name_(name), filename_(filename), description_(description) {}
50
51 void PluginInfo::AddMimeType(MimeClassInfo* info) {
52 mimes_.push_back(info);
53 }
54
55 const MimeClassInfo* PluginInfo::GetMimeClassInfo(size_t index) const {
56 if (index > mimes_.size())
57 return nullptr;
58 return mimes_[index];
59 }
60
61 const MimeClassInfo* PluginInfo::GetMimeClassInfo(const String& type) const {
62 for (MimeClassInfo* mime : mimes_) {
63 if (mime->Type() == type)
64 return mime;
65 }
66
67 return nullptr;
68 }
69
70 size_t PluginInfo::GetMimeClassInfoSize() const {
71 return mimes_.size();
72 }
73
74 DEFINE_TRACE(PluginData) {
75 visitor->Trace(plugins_);
76 visitor->Trace(mimes_);
77 }
78
79 // static
80 void PluginData::RefreshBrowserSidePluginCache() {
81 PluginListBuilder builder(nullptr);
82 Platform::Current()->GetPluginList(true, WebSecurityOrigin::CreateUnique(),
83 &builder);
84 }
85
86 void PluginData::UpdatePluginList(SecurityOrigin* main_frame_origin) {
87 main_frame_origin_ = main_frame_origin;
35 PluginListBuilder builder(&plugins_); 88 PluginListBuilder builder(&plugins_);
36 Platform::Current()->GetPluginList( 89 Platform::Current()->GetPluginList(
37 false, WebSecurityOrigin(main_frame_origin_), &builder); 90 false, WebSecurityOrigin(main_frame_origin_), &builder);
38 91
39 for (unsigned i = 0; i < plugins_.size(); ++i) { 92 for (PluginInfo* plugin_info : plugins_) {
40 const PluginInfo& plugin = plugins_[i]; 93 for (MimeClassInfo* mime_class_info : plugin_info->mimes_)
41 for (unsigned j = 0; j < plugin.mimes.size(); ++j) { 94 mimes_.push_back(mime_class_info);
42 mimes_.push_back(plugin.mimes[j]);
43 mime_plugin_indices_.push_back(i);
44 }
45 } 95 }
46 } 96 }
47 97
98 void PluginData::ResetPluginData() {
99 plugins_.clear();
100 mimes_.clear();
101 main_frame_origin_ = nullptr;
102 }
103
48 bool PluginData::SupportsMimeType(const String& mime_type) const { 104 bool PluginData::SupportsMimeType(const String& mime_type) const {
49 for (unsigned i = 0; i < mimes_.size(); ++i) 105 for (const MimeClassInfo* info : mimes_) {
50 if (mimes_[i].type == mime_type) 106 if (info->type_ == mime_type)
51 return true; 107 return true;
108 }
109
52 return false; 110 return false;
53 } 111 }
54 112
55 const PluginInfo* PluginData::PluginInfoForMimeType(
56 const String& mime_type) const {
57 for (unsigned i = 0; i < mimes_.size(); ++i) {
58 const MimeClassInfo& info = mimes_[i];
59
60 if (info.type == mime_type)
61 return &plugins_[mime_plugin_indices_[i]];
62 }
63
64 return 0;
65 }
66
67 String PluginData::PluginNameForMimeType(const String& mime_type) const {
68 if (const PluginInfo* info = PluginInfoForMimeType(mime_type))
69 return info->name;
70 return String();
71 }
72
73 void PluginData::RefreshBrowserSidePluginCache() {
74 Vector<PluginInfo> plugins;
75 PluginListBuilder builder(&plugins);
76 Platform::Current()->GetPluginList(true, WebSecurityOrigin::CreateUnique(),
77 &builder);
78 }
79
80 } // namespace blink 113 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698