WebKitPolicyDecision.cpp [plain text]
#include "config.h"
#include "WebKitPolicyDecision.h"
#include "WebKitPolicyDecisionPrivate.h"
#include "WebKitPrivate.h"
G_DEFINE_ABSTRACT_TYPE(WebKitPolicyDecision, webkit_policy_decision, G_TYPE_OBJECT)
struct _WebKitPolicyDecisionPrivate {
WKRetainPtr<WKFramePolicyListenerRef> listener;
bool madePolicyDecision;
};
static void webkit_policy_decision_init(WebKitPolicyDecision* decision)
{
decision->priv = G_TYPE_INSTANCE_GET_PRIVATE(decision, WEBKIT_TYPE_POLICY_DECISION, WebKitPolicyDecisionPrivate);
new (decision->priv) WebKitPolicyDecisionPrivate();
decision->priv->madePolicyDecision = false;
}
static void webkitPolicyDecisionFinalize(GObject* object)
{
WebKitPolicyDecisionPrivate* priv = WEBKIT_POLICY_DECISION(object)->priv;
if (!priv->madePolicyDecision)
WKFramePolicyListenerUse(priv->listener.get());
priv->~WebKitPolicyDecisionPrivate();
G_OBJECT_CLASS(webkit_policy_decision_parent_class)->finalize(object);
}
void webkitPolicyDecisionSetListener(WebKitPolicyDecision* decision, WKFramePolicyListenerRef listener)
{
decision->priv->listener = listener;
}
static void webkit_policy_decision_class_init(WebKitPolicyDecisionClass* decisionClass)
{
GObjectClass* objectClass = G_OBJECT_CLASS(decisionClass);
objectClass->finalize = webkitPolicyDecisionFinalize;
g_type_class_add_private(decisionClass, sizeof(WebKitPolicyDecisionPrivate));
}
void webkit_policy_decision_use(WebKitPolicyDecision* decision)
{
g_return_if_fail(WEBKIT_IS_POLICY_DECISION(decision));
WKFramePolicyListenerUse(decision->priv->listener.get());
decision->priv->madePolicyDecision = true;
}
void webkit_policy_decision_ignore(WebKitPolicyDecision* decision)
{
g_return_if_fail(WEBKIT_IS_POLICY_DECISION(decision));
WKFramePolicyListenerIgnore(decision->priv->listener.get());
decision->priv->madePolicyDecision = true;
}
void webkit_policy_decision_download(WebKitPolicyDecision* decision)
{
g_return_if_fail(WEBKIT_IS_POLICY_DECISION(decision));
WKFramePolicyListenerDownload(decision->priv->listener.get());
decision->priv->madePolicyDecision = true;
}