WKFramePolicyListener.cpp [plain text]
#include "config.h"
#include "WKFramePolicyListener.h"
#include "APIWebsiteDataStore.h"
#include "APIWebsitePolicies.h"
#include "WKAPICast.h"
#include "WebFramePolicyListenerProxy.h"
#include "WebFrameProxy.h"
#include "WebProcessPool.h"
#include "WebsitePoliciesData.h"
using namespace WebKit;
WKTypeID WKFramePolicyListenerGetTypeID()
{
return toAPI(WebFramePolicyListenerProxy::APIType);
}
void WKFramePolicyListenerUse(WKFramePolicyListenerRef policyListenerRef)
{
toImpl(policyListenerRef)->use();
}
void WKFramePolicyListenerUseInNewProcess(WKFramePolicyListenerRef policyListenerRef)
{
toImpl(policyListenerRef)->use(nullptr, ProcessSwapRequestedByClient::Yes);
}
static void useWithPolicies(WKFramePolicyListenerRef policyListenerRef, WKWebsitePoliciesRef websitePolicies, ProcessSwapRequestedByClient processSwapRequestedByClient)
{
if (auto* websiteDataStore = toImpl(websitePolicies)->websiteDataStore()) {
auto sessionID = websiteDataStore->websiteDataStore().sessionID();
RELEASE_ASSERT_WITH_MESSAGE(sessionID.isEphemeral() || sessionID == PAL::SessionID::defaultSessionID(), "If WebsitePolicies specifies a WebsiteDataStore, the data store's session must be default or non-persistent.");
}
toImpl(policyListenerRef)->use(toImpl(websitePolicies), processSwapRequestedByClient);
}
void WKFramePolicyListenerUseWithPolicies(WKFramePolicyListenerRef policyListenerRef, WKWebsitePoliciesRef websitePolicies)
{
useWithPolicies(policyListenerRef, websitePolicies, ProcessSwapRequestedByClient::No);
}
void WKFramePolicyListenerUseInNewProcessWithPolicies(WKFramePolicyListenerRef policyListenerRef, WKWebsitePoliciesRef websitePolicies)
{
useWithPolicies(policyListenerRef, websitePolicies, ProcessSwapRequestedByClient::Yes);
}
void WKFramePolicyListenerDownload(WKFramePolicyListenerRef policyListenerRef)
{
toImpl(policyListenerRef)->download();
}
void WKFramePolicyListenerIgnore(WKFramePolicyListenerRef policyListenerRef)
{
toImpl(policyListenerRef)->ignore();
}