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

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

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.h
diff --git a/third_party/WebKit/Source/platform/plugins/PluginData.h b/third_party/WebKit/Source/platform/plugins/PluginData.h
index cdf3381cedecdba263e42de1ff6766fb4864ec1e..5caf790b313d5fa8525224f81147f297cef33a69 100644
--- a/third_party/WebKit/Source/platform/plugins/PluginData.h
+++ b/third_party/WebKit/Source/platform/plugins/PluginData.h
@@ -21,47 +21,89 @@
#define PluginData_h
#include "platform/PlatformExport.h"
+#include "platform/heap/Handle.h"
#include "platform/weborigin/SecurityOrigin.h"
#include "platform/wtf/Noncopyable.h"
-#include "platform/wtf/RefCounted.h"
#include "platform/wtf/Vector.h"
#include "platform/wtf/text/WTFString.h"
namespace blink {
-struct PluginInfo;
+class PluginInfo;
-struct MimeClassInfo {
- String type;
- String desc;
- Vector<String> extensions;
+class PLATFORM_EXPORT MimeClassInfo final
+ : public GarbageCollectedFinalized<MimeClassInfo> {
+ public:
+ DECLARE_TRACE();
+
+ explicit MimeClassInfo(String, String, PluginInfo*);
tkent 2017/05/25 00:10:32 Remove |explicit| Make the first and second argume
lfg 2017/05/25 01:42:40 Done. I agree that the argument names are useful,
lfg 2017/05/25 01:47:39 Actually, never mind, I just realized that the cod
+
+ void AddExtension(String);
+
+ const String& type() const { return type_; }
tkent 2017/05/25 00:10:32 This class is not web-exposed. So all member func
lfg 2017/05/25 01:42:40 Done. I think we need to update the blink coding s
tkent 2017/05/25 03:17:30 Yeah, it's outdated. The latest one is https://do
+ const String& desc() const { return desc_; }
+ const Vector<String>& extensions() const { return extensions_; }
+ const PluginInfo* plugin() const { return plugin_; }
+
+ bool operator==(const MimeClassInfo& info) {
+ return type_ == info.type_ && desc_ == info.desc_ &&
+ extensions_ == info.extensions_;
+ }
+
+ private:
+ friend class PluginData;
+ friend class PluginListBuilder;
+
+ String type_;
+ String desc_;
+ Vector<String> extensions_;
+ Member<PluginInfo> plugin_;
};
-inline bool operator==(const MimeClassInfo& a, const MimeClassInfo& b) {
- return a.type == b.type && a.desc == b.desc && a.extensions == b.extensions;
-}
+class PLATFORM_EXPORT PluginInfo final
+ : public GarbageCollectedFinalized<PluginInfo> {
+ public:
+ DECLARE_TRACE();
-struct PluginInfo {
- String name;
- String file;
- String desc;
- Vector<MimeClassInfo> mimes;
+ explicit PluginInfo(String, String, String);
tkent 2017/05/25 00:10:32 Remove |explicit|. Make the all argument |const St
lfg 2017/05/25 01:42:40 Done.
+
+ void AddMimeType(MimeClassInfo*);
+
+ const MimeClassInfo* GetMimeClassInfo(size_t index) const;
+ const MimeClassInfo* GetMimeClassInfo(const String& type) const;
+ size_t GetMimeClassInfoSize() const;
+
+ const String& name() const { return name_; }
tkent 2017/05/25 00:10:32 Function names should start with a capital letter.
lfg 2017/05/25 01:42:40 Done.
+ const String& file() const { return file_; }
+ const String& desc() const { return desc_; }
+
+ private:
+ friend class MimeClassInfo;
+ friend class PluginData;
+ friend class PluginListBuilder;
+
+ String name_;
+ String file_;
+ String desc_;
+ HeapVector<Member<MimeClassInfo>> mimes_;
};
-class PLATFORM_EXPORT PluginData : public RefCounted<PluginData> {
+class PLATFORM_EXPORT PluginData final
+ : public GarbageCollectedFinalized<PluginData> {
WTF_MAKE_NONCOPYABLE(PluginData);
public:
- static PassRefPtr<PluginData> Create(SecurityOrigin* main_frame_origin) {
- return AdoptRef(new PluginData(main_frame_origin));
- }
+ DECLARE_TRACE();
- const Vector<PluginInfo>& Plugins() const { return plugins_; }
- const Vector<MimeClassInfo>& Mimes() const { return mimes_; }
- const Vector<size_t>& MimePluginIndices() const {
- return mime_plugin_indices_;
- }
+ static PluginData* Create() { return new PluginData(); }
+
+ PluginData() {}
tkent 2017/05/25 00:10:32 Do we need both of the factory function and the pu
lfg 2017/05/25 01:42:40 No, moved to private.
+
+ const HeapVector<Member<PluginInfo>>& Plugins() const { return plugins_; }
+ const HeapVector<Member<MimeClassInfo>>& Mimes() const { return mimes_; }
const SecurityOrigin* Origin() const { return main_frame_origin_.Get(); }
+ void UpdatePluginList(SecurityOrigin* main_frame_origin);
+ void ResetPluginData();
bool SupportsMimeType(const String& mime_type) const;
String PluginNameForMimeType(const String& mime_type) const;
@@ -71,12 +113,10 @@ class PLATFORM_EXPORT PluginData : public RefCounted<PluginData> {
static void RefreshBrowserSidePluginCache();
private:
- explicit PluginData(SecurityOrigin* main_frame_origin);
const PluginInfo* PluginInfoForMimeType(const String& mime_type) const;
- Vector<PluginInfo> plugins_;
- Vector<MimeClassInfo> mimes_;
- Vector<size_t> mime_plugin_indices_;
+ HeapVector<Member<PluginInfo>> plugins_;
+ HeapVector<Member<MimeClassInfo>> mimes_;
RefPtr<SecurityOrigin> main_frame_origin_;
};

Powered by Google App Engine
This is Rietveld 408576698