WebPluginInfoProvider.cpp [plain text]
#include "WebPluginInfoProvider.h"
#include "PluginDatabase.h"
using namespace WebCore;
WebPluginInfoProvider& WebPluginInfoProvider::singleton()
{
static WebPluginInfoProvider& pluginInfoProvider = adoptRef(*new WebPluginInfoProvider).leakRef();
return pluginInfoProvider;
}
WebPluginInfoProvider::WebPluginInfoProvider()
{
}
WebPluginInfoProvider::~WebPluginInfoProvider()
{
}
void WebPluginInfoProvider::refreshPlugins()
{
PluginDatabase::installedPlugins()->refresh();
}
Vector<WebCore::PluginInfo> WebPluginInfoProvider::pluginInfo(WebCore::Page& page, std::optional<Vector<WebCore::SupportedPluginIdentifier>>&)
{
Vector<WebCore::PluginInfo> outPlugins;
const Vector<PluginPackage*>& plugins = PluginDatabase::installedPlugins()->plugins();
outPlugins.resize(plugins.size());
for (size_t i = 0; i < plugins.size(); ++i) {
PluginPackage* package = plugins[i];
PluginInfo info;
info.name = package->name();
info.file = package->fileName();
info.desc = package->description();
const MIMEToDescriptionsMap& mimeToDescriptions = package->mimeToDescriptions();
info.mimes.reserveCapacity(mimeToDescriptions.size());
MIMEToDescriptionsMap::const_iterator end = mimeToDescriptions.end();
for (MIMEToDescriptionsMap::const_iterator it = mimeToDescriptions.begin(); it != end; ++it) {
MimeClassInfo mime;
mime.type = it->key;
mime.desc = it->value;
mime.extensions = package->mimeToExtensions().get(mime.type);
info.mimes.append(mime);
}
outPlugins[i] = info;
}
return outPlugins;
}
Vector<WebCore::PluginInfo> WebPluginInfoProvider::webVisiblePluginInfo(WebCore::Page& page, const WebCore::URL&)
{
std::optional<Vector<WebCore::SupportedPluginIdentifier>> supportedPluginNames;
return pluginInfo(page, supportedPluginNames);
}