diff options
author | Simon Hausmann <simon.hausmann@digia.com> | 2012-11-23 15:08:59 +0100 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@digia.com> | 2012-11-23 15:09:20 +0100 |
commit | 061d58bc0fa016cfeed744fd3e4663460635d69b (patch) | |
tree | ad9b8b032c803e1c9054c23fa1b7a0f1976bf98f /Source/WebKit2/UIProcess/API/gtk/WebKitPolicyDecision.cpp | |
parent | 470286ecfe79d59df14944e5b5d34630fc739391 (diff) | |
download | qtwebkit-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.cpp | 35 |
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; } |