PolicyCallback.cpp [plain text]
#include "config.h"
#include "PolicyCallback.h"
#include "FormState.h"
#include "Frame.h"
#include "FrameLoader.h"
#include "HTMLFormElement.h"
namespace WebCore {
PolicyCallback::PolicyCallback()
{
}
PolicyCallback::~PolicyCallback()
{
}
void PolicyCallback::clear()
{
clearRequest();
m_navigationFunction = nullptr;
m_newWindowFunction = nullptr;
m_contentFunction = nullptr;
}
void PolicyCallback::set(const ResourceRequest& request, PassRefPtr<FormState> formState,
NavigationPolicyDecisionFunction function)
{
m_request = request;
m_formState = formState;
m_frameName = String();
m_navigationFunction = WTF::move(function);
m_newWindowFunction = nullptr;
m_contentFunction = nullptr;
}
void PolicyCallback::set(const ResourceRequest& request, PassRefPtr<FormState> formState, const String& frameName, const NavigationAction& navigationAction, NewWindowPolicyDecisionFunction function)
{
m_request = request;
m_formState = formState;
m_frameName = frameName;
m_navigationAction = navigationAction;
m_navigationFunction = nullptr;
m_newWindowFunction = WTF::move(function);
m_contentFunction = nullptr;
}
void PolicyCallback::set(ContentPolicyDecisionFunction function)
{
m_request = ResourceRequest();
m_formState = nullptr;
m_frameName = String();
m_navigationFunction = nullptr;
m_newWindowFunction = nullptr;
m_contentFunction = WTF::move(function);
}
void PolicyCallback::call(bool shouldContinue)
{
if (m_navigationFunction)
m_navigationFunction(m_request, m_formState.get(), shouldContinue);
if (m_newWindowFunction)
m_newWindowFunction(m_request, m_formState.get(), m_frameName, m_navigationAction, shouldContinue);
ASSERT(!m_contentFunction);
}
void PolicyCallback::call(PolicyAction action)
{
ASSERT(!m_navigationFunction);
ASSERT(!m_newWindowFunction);
ASSERT(m_contentFunction);
m_contentFunction(action);
}
void PolicyCallback::clearRequest()
{
m_request = ResourceRequest();
m_formState = nullptr;
m_frameName = String();
}
void PolicyCallback::cancel()
{
clearRequest();
if (m_navigationFunction)
m_navigationFunction(m_request, m_formState.get(), false);
if (m_newWindowFunction)
m_newWindowFunction(m_request, m_formState.get(), m_frameName, m_navigationAction, false);
if (m_contentFunction)
m_contentFunction(PolicyIgnore);
}
}