WebView.connectDecidePolicy
gulong connectDecidePolicy(T)(T callback, Flag!"After" after = No.After) if (isCallable!T
&& is(ReturnType!T == bool)
&& (Parameters!T.length < 1 || (ParameterStorageClassTuple!T[0] == ParameterStorageClass.none && is(Parameters!T[0] : webkit.policy_decision.PolicyDecision)))
&& (Parameters!T.length < 2 || (ParameterStorageClassTuple!T[1] == ParameterStorageClass.none && is(Parameters!T[1] == webkit.types.PolicyDecisionType)))
&& (Parameters!T.length < 3 || (ParameterStorageClassTuple!T[2] == ParameterStorageClass.none && is(Parameters!T[2] : webkit.web_view.WebView)))
&& Parameters!T.length < 4)Connect to DecidePolicy signal.
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 #WebKitNavigationPolicyDecision passed in the decision argument is a generic type, but should be casted to a more specific type when making the decision. For example:
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 webkit_policy_decision_use()
return FALSE;
}
return TRUE;
}It is possible to make policy decision asynchronously, by simply calling [gobject.object.ObjectWrap.ref_] on the decision argument and returning true to block the default signal handler. If the last reference is removed on a #WebKitPolicyDecision and no decision has been made explicitly, [webkit.policy_decision.PolicyDecision.use] will be the default policy decision. The default signal handler will simply call [webkit.policy_decision.PolicyDecision.use]. Only the first policy decision chosen for a given #WebKitPolicyDecision will have any affect.
Parameters
callback | signal callback delegate or function to connect bool callback(webkit.policy_decision.PolicyDecision decision, webkit.types.PolicyDecisionType decisionType, webkit.web_view.WebView webView) decision the #WebKitPolicyDecision (optional) decisionType a #WebKitPolicyDecisionType denoting the type of decision (optional) webView the instance the signal is connected to (optional) Returns true to stop other handlers from being invoked for the event. false to propagate the event further. |
after | Yes.After to execute callback after default handler, No.After to execute before (default) |