-decidenavigation(WebKitPolicyDecision *d, Client *c)
-{
- WebKitNavigationAction *a;
-
- a = webkit_navigation_policy_decision_get_navigation_action(
- WEBKIT_NAVIGATION_POLICY_DECISION(d));
-
- switch (webkit_navigation_action_get_navigation_type(a)) {
- case WEBKIT_NAVIGATION_TYPE_LINK_CLICKED: /* fallthrough */
- case WEBKIT_NAVIGATION_TYPE_FORM_SUBMITTED: /* fallthrough */
- case WEBKIT_NAVIGATION_TYPE_BACK_FORWARD: /* fallthrough */
- case WEBKIT_NAVIGATION_TYPE_RELOAD: /* fallthrough */
- case WEBKIT_NAVIGATION_TYPE_FORM_RESUBMITTED:
- case WEBKIT_NAVIGATION_TYPE_OTHER: /* fallthrough */
- default:
- /* Do not navigate to links with a "_blank" target (popup) */
- if (webkit_navigation_policy_decision_get_frame_name(
- WEBKIT_NAVIGATION_POLICY_DECISION(d))) {
- webkit_policy_decision_ignore(d);
- } else {
- /* Filter out navigation to different domain ? */
- /* get action→urirequest, copy and load in new window+view
- * on Ctrl+Click ? */
- webkit_policy_decision_use(d);
- }
- break;
- }
-}
-
-void
-decidenewwindow(WebKitPolicyDecision *d, Client *c)
-{
- WebKitNavigationAction *a;
- Arg arg;
-
- a = webkit_navigation_policy_decision_get_navigation_action(
- WEBKIT_NAVIGATION_POLICY_DECISION(d));
-
- switch (webkit_navigation_action_get_navigation_type(a)) {
- case WEBKIT_NAVIGATION_TYPE_LINK_CLICKED: /* fallthrough */
- case WEBKIT_NAVIGATION_TYPE_FORM_SUBMITTED: /* fallthrough */
- case WEBKIT_NAVIGATION_TYPE_BACK_FORWARD: /* fallthrough */
- case WEBKIT_NAVIGATION_TYPE_RELOAD: /* fallthrough */
- case WEBKIT_NAVIGATION_TYPE_FORM_RESUBMITTED:
- /* Filter domains here */
-/* If the value of “mouse-button” is not 0, then the navigation was triggered by a mouse event.
- * test for link clicked but no button ? */
- arg.v = webkit_uri_request_get_uri(
- webkit_navigation_action_get_request(a));
- newwindow(c, &arg, 0);
- break;
- case WEBKIT_NAVIGATION_TYPE_OTHER: /* fallthrough */
- default:
- break;
- }
-
- webkit_policy_decision_ignore(d);
-}
-
-void
-decideresource(WebKitPolicyDecision *d, Client *c)
-{
- const gchar *uri;
- int i, isascii = 1;
- WebKitResponsePolicyDecision *r = WEBKIT_RESPONSE_POLICY_DECISION(d);
- WebKitURIResponse *res;
-
- res = webkit_response_policy_decision_get_response(r);
- uri = webkit_uri_response_get_uri(res);
-
- if (g_str_has_suffix(uri, "/favicon.ico"))
- webkit_uri_request_set_uri(
- webkit_response_policy_decision_get_request(r),
- "about:blank");
-
- if (!g_str_has_prefix(uri, "http://")
- && !g_str_has_prefix(uri, "https://")
- && !g_str_has_prefix(uri, "about:")
- && !g_str_has_prefix(uri, "file://")
- && !g_str_has_prefix(uri, "data:")
- && !g_str_has_prefix(uri, "blob:")
- && strlen(uri) > 0) {
- for (i = 0; i < strlen(uri); i++) {
- if (!g_ascii_isprint(uri[i])) {
- isascii = 0;
- break;
- }
- }
- if (isascii) {
- handleplumb(c, uri);
- webkit_policy_decision_ignore(d);
- }
- }
-
- if (webkit_response_policy_decision_is_mime_type_supported(r)) {
- webkit_policy_decision_use(d);
- } else {
- webkit_policy_decision_ignore(d);
- download(c, res);
- }
-}
-
-void
-destroyclient(Client *c)