WebPluginInfoProvider.h [plain text]
#pragma once
#include <WebCore/PluginInfoProvider.h>
#include <wtf/HashMap.h>
namespace WebKit {
class WebPluginInfoProvider final : public WebCore::PluginInfoProvider {
friend NeverDestroyed<WebPluginInfoProvider>;
public:
static WebPluginInfoProvider& singleton();
virtual ~WebPluginInfoProvider();
#if PLATFORM(MAC)
void setPluginLoadClientPolicy(WebCore::PluginLoadClientPolicy, const String& host, const String& bundleIdentifier, const String& versionString);
void clearPluginClientPolicies();
#endif
private:
WebPluginInfoProvider();
Vector<WebCore::PluginInfo> pluginInfo(WebCore::Page&, std::optional<Vector<WebCore::SupportedPluginIdentifier>>&) final;
Vector<WebCore::PluginInfo> webVisiblePluginInfo(WebCore::Page&, const WebCore::URL&) final;
void refreshPlugins() override;
#if ENABLE(NETSCAPE_PLUGIN_API)
void populatePluginCache(const WebCore::Page&);
#endif // ENABLE(NETSCAPE_PLUGIN_API)
#if PLATFORM(MAC)
std::optional<WebCore::PluginLoadClientPolicy> pluginLoadClientPolicyForHost(const String&, const WebCore::PluginInfo&) const;
String longestMatchedWildcardHostForHost(const String& host) const;
bool replaceHostWithMatchedWildcardHost(String& host, const String& identifier) const;
typedef HashMap<String, WebCore::PluginLoadClientPolicy> PluginLoadClientPoliciesByBundleVersion;
typedef HashMap<String, PluginLoadClientPoliciesByBundleVersion> PluginPolicyMapsByIdentifier;
HashMap<String, PluginPolicyMapsByIdentifier> m_hostsToPluginIdentifierData;
#endif
#if ENABLE(NETSCAPE_PLUGIN_API)
bool m_pluginCacheIsPopulated { false };
bool m_shouldRefreshPlugins { false };
Vector<WebCore::PluginInfo> m_cachedPlugins;
Vector<WebCore::PluginInfo> m_cachedApplicationPlugins;
std::optional<Vector<WebCore::SupportedPluginIdentifier>> m_cachedSupportedPluginIdentifiers;
#endif
};
}