summaryrefslogtreecommitdiff
path: root/Source/WebKit2/UIProcess/API/gtk/WebKitPolicyDecision.cpp
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@digia.com>2012-11-23 15:08:59 +0100
committerSimon Hausmann <simon.hausmann@digia.com>2012-11-23 15:09:20 +0100
commit061d58bc0fa016cfeed744fd3e4663460635d69b (patch)
treead9b8b032c803e1c9054c23fa1b7a0f1976bf98f /Source/WebKit2/UIProcess/API/gtk/WebKitPolicyDecision.cpp
parent470286ecfe79d59df14944e5b5d34630fc739391 (diff)
downloadqtwebkit-061d58bc0fa016cfeed744fd3e4663460635d69b.tar.gz
Imported WebKit commit 8eb048315f36fa33731f28694630fe4a3c2cbc99 (http://svn.webkit.org/repository/webkit/trunk@135602)
New snapshot that fixes various bugs Change-Id: Icb6ce541a26a9f500d087821ce4b83a8d8a5474a Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'Source/WebKit2/UIProcess/API/gtk/WebKitPolicyDecision.cpp')
-rw-r--r--Source/WebKit2/UIProcess/API/gtk/WebKitPolicyDecision.cpp35
1 files changed, 17 insertions, 18 deletions
diff --git a/Source/WebKit2/UIProcess/API/gtk/WebKitPolicyDecision.cpp b/Source/WebKit2/UIProcess/API/gtk/WebKitPolicyDecision.cpp
index 3e9ef3fbf..ee44eaebb 100644
--- a/Source/WebKit2/UIProcess/API/gtk/WebKitPolicyDecision.cpp
+++ b/Source/WebKit2/UIProcess/API/gtk/WebKitPolicyDecision.cpp
@@ -41,30 +41,18 @@ using namespace WebKit;
* completes. To make a policy decision asynchronously, simply increment
* the reference count of the #WebKitPolicyDecision object.
*/
-G_DEFINE_ABSTRACT_TYPE(WebKitPolicyDecision, webkit_policy_decision, G_TYPE_OBJECT)
struct _WebKitPolicyDecisionPrivate {
RefPtr<WebFramePolicyListenerProxy> 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;
-}
+WEBKIT_DEFINE_ABSTRACT_TYPE(WebKitPolicyDecision, webkit_policy_decision, G_TYPE_OBJECT)
-static void webkitPolicyDecisionFinalize(GObject* object)
+static void webkitPolicyDecisionDispose(GObject* object)
{
- WebKitPolicyDecisionPrivate* priv = WEBKIT_POLICY_DECISION(object)->priv;
-
- // This is the default choice for all policy decisions in WebPageProxy.cpp.
- if (!priv->madePolicyDecision)
- priv->listener->use();
-
- priv->~WebKitPolicyDecisionPrivate();
- G_OBJECT_CLASS(webkit_policy_decision_parent_class)->finalize(object);
+ webkit_policy_decision_use(WEBKIT_POLICY_DECISION(object));
+ G_OBJECT_CLASS(webkit_policy_decision_parent_class)->dispose(object);
}
void webkitPolicyDecisionSetListener(WebKitPolicyDecision* decision, WebFramePolicyListenerProxy* listener)
@@ -75,8 +63,7 @@ void webkitPolicyDecisionSetListener(WebKitPolicyDecision* decision, WebFramePol
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));
+ objectClass->dispose = webkitPolicyDecisionDispose;
}
/**
@@ -88,6 +75,10 @@ static void webkit_policy_decision_class_init(WebKitPolicyDecisionClass* decisio
void webkit_policy_decision_use(WebKitPolicyDecision* decision)
{
g_return_if_fail(WEBKIT_IS_POLICY_DECISION(decision));
+
+ if (decision->priv->madePolicyDecision)
+ return;
+
decision->priv->listener->use();
decision->priv->madePolicyDecision = true;
}
@@ -102,6 +93,10 @@ void webkit_policy_decision_use(WebKitPolicyDecision* decision)
void webkit_policy_decision_ignore(WebKitPolicyDecision* decision)
{
g_return_if_fail(WEBKIT_IS_POLICY_DECISION(decision));
+
+ if (decision->priv->madePolicyDecision)
+ return;
+
decision->priv->listener->ignore();
decision->priv->madePolicyDecision = true;
}
@@ -115,6 +110,10 @@ void webkit_policy_decision_ignore(WebKitPolicyDecision* decision)
void webkit_policy_decision_download(WebKitPolicyDecision* decision)
{
g_return_if_fail(WEBKIT_IS_POLICY_DECISION(decision));
+
+ if (decision->priv->madePolicyDecision)
+ return;
+
decision->priv->listener->download();
decision->priv->madePolicyDecision = true;
}