WKPluginSiteDataManager.cpp [plain text]
#include "config.h"
#include "WKPluginSiteDataManager.h"
#include "APIObject.h"
#include "WKAPICast.h"
#include "WebProcessPool.h"
#include "WebsiteDataRecord.h"
using namespace WebKit;
WKTypeID WKPluginSiteDataManagerGetTypeID()
{
return toAPI(API::WebsiteDataStore::APIType);
}
void WKPluginSiteDataManagerGetSitesWithData(WKPluginSiteDataManagerRef manager, void* context, WKPluginSiteDataManagerGetSitesWithDataFunction callback)
{
#if ENABLE(NETSCAPE_PLUGIN_API)
auto& websiteDataStore = toImpl(reinterpret_cast<WKWebsiteDataStoreRef>(manager))->websiteDataStore();
websiteDataStore.fetchData(WebsiteDataTypes::WebsiteDataTypePlugInData, [context, callback](Vector<WebsiteDataRecord> dataRecords) {
Vector<String> hostNames;
for (const auto& dataRecord : dataRecords) {
for (const auto& hostName : dataRecord.pluginDataHostNames)
hostNames.append(hostName);
}
callback(toAPI(API::Array::createStringArray(hostNames).ptr()), nullptr, context);
});
#else
UNUSED_PARAM(manager);
UNUSED_PARAM(context);
UNUSED_PARAM(callback);
#endif
}
void WKPluginSiteDataManagerClearSiteData(WKPluginSiteDataManagerRef manager, WKArrayRef sites, WKClearSiteDataFlags flags, uint64_t maxAgeInSeconds, void* context, WKPluginSiteDataManagerClearSiteDataFunction callback)
{
ASSERT_UNUSED(flags, flags == kWKClearSiteDataFlagsClearAll);
ASSERT_UNUSED(maxAgeInSeconds, maxAgeInSeconds == std::numeric_limits<uint64_t>::max());
#if ENABLE(NETSCAPE_PLUGIN_API)
WebsiteDataRecord dataRecord;
for (const auto& string : toImpl(sites)->elementsOfType<API::String>())
dataRecord.pluginDataHostNames.add(string->string());
auto& websiteDataStore = toImpl(reinterpret_cast<WKWebsiteDataStoreRef>(manager))->websiteDataStore();
websiteDataStore.removeData(WebsiteDataTypes::WebsiteDataTypePlugInData, { dataRecord }, [context, callback] {
callback(nullptr, context);
});
#else
UNUSED_PARAM(manager);
UNUSED_PARAM(sites);
UNUSED_PARAM(flags);
UNUSED_PARAM(maxAgeInSeconds);
UNUSED_PARAM(context);
UNUSED_PARAM(callback);
#endif
}
void WKPluginSiteDataManagerClearAllSiteData(WKPluginSiteDataManagerRef manager, void* context, WKPluginSiteDataManagerClearSiteDataFunction callback)
{
#if ENABLE(NETSCAPE_PLUGIN_API)
auto& websiteDataStore = toImpl(reinterpret_cast<WKWebsiteDataStoreRef>(manager))->websiteDataStore();
websiteDataStore.removeData(WebsiteDataTypes::WebsiteDataTypePlugInData, std::chrono::system_clock::time_point::min(), [context, callback] {
callback(nullptr, context);
});
#else
UNUSED_PARAM(manager);
UNUSED_PARAM(context);
UNUSED_PARAM(callback);
#endif
}