WebKit2.WebView::decide-policy
connect('decide-policy', function (webView, decision: WebKit2.PolicyDecision, decision_type: WebKit2.PolicyDecisionType, ): Boolean);
This signal is emitted when WebKit is requesting the client to decide a policy decision, such as whether to navigate to a page, open a new window or whether or not to download a resource. The WebKit2.NavigationPolicyDecision passed in the decision argument is a generic type, but should be casted to a more specific type when making the decision. For example:
<informalexample><programlisting> static gboolean decide_policy_cb (WebKitWebView *web_view, WebKitPolicyDecision *decision, WebKitPolicyDecisionType type) { switch (type) { case WEBKIT_POLICY_DECISION_TYPE_NAVIGATION_ACTION: WebKitNavigationPolicyDecision *navigation_decision = WEBKIT_NAVIGATION_POLICY_DECISION (decision); /<!-- -->* Make a policy decision here. *<!-- -->/ break; case WEBKIT_POLICY_DECISION_TYPE_NEW_WINDOW_ACTION: WebKitNavigationPolicyDecision *navigation_decision = WEBKIT_NAVIGATION_POLICY_DECISION (decision); /<!-- -->* Make a policy decision here. *<!-- -->/ break; case WEBKIT_POLICY_DECISION_TYPE_RESPONSE: WebKitResponsePolicyDecision *response = WEBKIT_RESPONSE_POLICY_DECISION (decision); /<!-- -->* Make a policy decision here. *<!-- -->/ break; default: /<!-- -->* Making no decision results in WebKit2.PolicyDecision.prototype.use. *<!-- -->/ return FALSE; } return TRUE; } </programlisting></informalexample>
It is possible to make policy decision asynchronously, by simply calling g_object_ref() on the decision argument and returning true to block the default signal handler. If the last reference is removed on a WebKit2.PolicyDecision and no decision has been made explicitly, WebKit2.PolicyDecision.prototype.use will be the default policy decision. The default signal handler will simply call WebKit2.PolicyDecision.prototype.use. Only the first policy decision chosen for a given WebKit2.PolicyDecision will have any affect.
- webView
instance of WebKit2.WebView that is emitting the signal
- decision
- decision_type
a WebKit2.PolicyDecisionType denoting the type of decision
- Returns
true to stop other handlers from being invoked for the event. false to propagate the event further.