diff options
author | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-06-27 06:07:23 +0000 |
---|---|---|
committer | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-06-27 06:07:23 +0000 |
commit | 1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch) | |
tree | 46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Source/WebCore/plugins/PluginData.h | |
parent | 32761a6cee1d0dee366b885b7b9c777e67885688 (diff) | |
download | WebKitGtk-tarball-master.tar.gz |
webkitgtk-2.16.5HEADwebkitgtk-2.16.5master
Diffstat (limited to 'Source/WebCore/plugins/PluginData.h')
-rw-r--r-- | Source/WebCore/plugins/PluginData.h | 70 |
1 files changed, 52 insertions, 18 deletions
diff --git a/Source/WebCore/plugins/PluginData.h b/Source/WebCore/plugins/PluginData.h index fec7ace74..0893fc99a 100644 --- a/Source/WebCore/plugins/PluginData.h +++ b/Source/WebCore/plugins/PluginData.h @@ -1,5 +1,6 @@ /* Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) + Copyright (C) 2015 Apple Inc. All rights reserved. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public @@ -17,8 +18,7 @@ Boston, MA 02110-1301, USA. */ -#ifndef PluginData_h -#define PluginData_h +#pragma once #include <wtf/RefCounted.h> #include <wtf/Vector.h> @@ -29,6 +29,24 @@ namespace WebCore { class Page; struct PluginInfo; +enum PluginLoadClientPolicy : uint8_t { + // No client-specific plug-in load policy has been defined. The plug-in should be visible in navigator.plugins and WebKit should synchronously + // ask the client whether the plug-in should be loaded. + PluginLoadClientPolicyUndefined = 0, + + // The plug-in module should be blocked from being instantiated. The plug-in should be hidden in navigator.plugins. + PluginLoadClientPolicyBlock, + + // WebKit should synchronously ask the client whether the plug-in should be loaded. The plug-in should be visible in navigator.plugins. + PluginLoadClientPolicyAsk, + + // The plug-in module may be loaded if WebKit is not blocking it. + PluginLoadClientPolicyAllow, + + // The plug-in module should be loaded irrespective of whether WebKit has asked it to be blocked. + PluginLoadClientPolicyAllowAlways, +}; + struct MimeClassInfo { String type; String desc; @@ -46,38 +64,54 @@ struct PluginInfo { String desc; Vector<MimeClassInfo> mimes; bool isApplicationPlugin; + + PluginLoadClientPolicy clientLoadPolicy; + +#if PLATFORM(MAC) + String bundleIdentifier; + String versionString; +#endif }; +inline bool operator==(PluginInfo& a, PluginInfo& b) +{ + bool result = a.name == b.name && a.file == b.file && a.desc == b.desc && a.mimes == b.mimes && a.isApplicationPlugin == b.isApplicationPlugin && a.clientLoadPolicy == b.clientLoadPolicy; +#if PLATFORM(MAC) + result = result && a.bundleIdentifier == b.bundleIdentifier && a.versionString == b.versionString; +#endif + return result; +} + // FIXME: merge with PluginDatabase in the future class PluginData : public RefCounted<PluginData> { public: - static PassRefPtr<PluginData> create(const Page* page) { return adoptRef(new PluginData(page)); } + static Ref<PluginData> create(Page& page) { return adoptRef(*new PluginData(page)); } const Vector<PluginInfo>& plugins() const { return m_plugins; } - const Vector<MimeClassInfo>& mimes() const { return m_mimes; } - const Vector<size_t>& mimePluginIndices() const { return m_mimePluginIndices; } + Vector<PluginInfo> webVisiblePlugins() const; + Vector<PluginInfo> publiclyVisiblePlugins() const; + WEBCORE_EXPORT void getWebVisibleMimesAndPluginIndices(Vector<MimeClassInfo>&, Vector<size_t>&) const; enum AllowedPluginTypes { AllPlugins, OnlyApplicationPlugins }; - bool supportsMimeType(const String& mimeType, const AllowedPluginTypes) const; - String pluginNameForMimeType(const String& mimeType) const; - String pluginFileForMimeType(const String& mimeType) const; + WEBCORE_EXPORT bool supportsWebVisibleMimeType(const String& mimeType, const AllowedPluginTypes) const; + String pluginFileForWebVisibleMimeType(const String& mimeType) const; - static void refresh(); + WEBCORE_EXPORT bool supportsMimeType(const String& mimeType, const AllowedPluginTypes) const; private: - explicit PluginData(const Page*); - void initPlugins(const Page*); - const PluginInfo* pluginInfoForMimeType(const String& mimeType) const; - + explicit PluginData(Page&); + void initPlugins(); + bool getPluginInfoForWebVisibleMimeType(const String& mimeType, PluginInfo&) const; + void getMimesAndPluginIndices(Vector<MimeClassInfo>&, Vector<size_t>&) const; + void getMimesAndPluginIndiciesForPlugins(const Vector<PluginInfo>&, Vector<MimeClassInfo>&, Vector<size_t>&) const; + +protected: + Page& m_page; Vector<PluginInfo> m_plugins; - Vector<MimeClassInfo> m_mimes; - Vector<size_t> m_mimePluginIndices; }; -} - -#endif +} // namespace WebCore |