Modify decideresource() and favicon handling
[surf.git] / surf.c
diff --git a/surf.c b/surf.c
index 1a798ff..f5c7d1e 100644 (file)
--- a/surf.c
+++ b/surf.c
@@ -485,12 +485,11 @@ cookiepolicy_get(void)
                return WEBKIT_COOKIE_POLICY_ACCEPT_NEVER;
        case '@':
                return WEBKIT_COOKIE_POLICY_ACCEPT_NO_THIRD_PARTY;
+       default: /* fallthrough */
        case 'A':
-       default:
-               break;
+               return WEBKIT_COOKIE_POLICY_ACCEPT_ALWAYS;
        }
 
-       return WEBKIT_COOKIE_POLICY_ACCEPT_ALWAYS;
 }
 
 char
@@ -501,12 +500,11 @@ cookiepolicy_set(const WebKitCookieAcceptPolicy p)
                return 'a';
        case WEBKIT_COOKIE_POLICY_ACCEPT_NO_THIRD_PARTY:
                return '@';
+       default: /* fallthrough */
        case WEBKIT_COOKIE_POLICY_ACCEPT_ALWAYS:
-       default:
-               break;
+               return 'A';
        }
 
-       return 'A';
 }
 
 const char *
@@ -645,9 +643,9 @@ spawn(Client *c, const Arg *a)
                        close(ConnectionNumber(dpy));
                setsid();
                execvp(((char **)a->v)[0], (char **)a->v);
-               fprintf(stderr, "surf: execvp %s", ((char **)a->v)[0]);
+               fprintf(stderr, "%s: execvp %s", argv0, ((char **)a->v)[0]);
                perror(" failed");
-               exit(0);
+               exit(1);
        }
 }
 
@@ -757,26 +755,26 @@ newview(Client *c, WebKitWebView *rv)
                    NULL);
        }
 
+       g_signal_connect(G_OBJECT(v), "notify::estimated-load-progress",
+                        G_CALLBACK(progresschanged), c);
        g_signal_connect(G_OBJECT(v), "notify::title",
                         G_CALLBACK(titlechanged), c);
-       g_signal_connect(G_OBJECT(v), "mouse-target-changed",
-                        G_CALLBACK(mousetargetchanged), c);
-       g_signal_connect(G_OBJECT(v), "permission-request",
-                        G_CALLBACK(permissionrequested), c);
+       g_signal_connect(G_OBJECT(v), "button-release-event",
+                        G_CALLBACK(buttonreleased), c);
+       g_signal_connect(G_OBJECT(v), "close",
+                       G_CALLBACK(closeview), c);
        g_signal_connect(G_OBJECT(v), "create",
                         G_CALLBACK(createview), c);
-       g_signal_connect(G_OBJECT(v), "ready-to-show",
-                        G_CALLBACK(showview), c);
        g_signal_connect(G_OBJECT(v), "decide-policy",
                         G_CALLBACK(decidepolicy), c);
        g_signal_connect(G_OBJECT(v), "load-changed",
                         G_CALLBACK(loadchanged), c);
-       g_signal_connect(G_OBJECT(v), "notify::estimated-load-progress",
-                        G_CALLBACK(progresschanged), c);
-       g_signal_connect(G_OBJECT(v), "button-release-event",
-                        G_CALLBACK(buttonreleased), c);
-       g_signal_connect(G_OBJECT(v), "close",
-                       G_CALLBACK(closeview), c);
+       g_signal_connect(G_OBJECT(v), "mouse-target-changed",
+                        G_CALLBACK(mousetargetchanged), c);
+       g_signal_connect(G_OBJECT(v), "permission-request",
+                        G_CALLBACK(permissionrequested), c);
+       g_signal_connect(G_OBJECT(v), "ready-to-show",
+                        G_CALLBACK(showview), c);
 
        return v;
 }
@@ -1145,10 +1143,10 @@ decideresource(WebKitPolicyDecision *d, Client *c)
            webkit_response_policy_decision_get_response(r);
        const gchar *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_suffix(uri, "/favicon.ico")) {
+               webkit_policy_decision_ignore(d);
+               return;
+       }
 
        if (!g_str_has_prefix(uri, "http://")
            && !g_str_has_prefix(uri, "https://")
@@ -1166,6 +1164,7 @@ decideresource(WebKitPolicyDecision *d, Client *c)
                if (isascii) {
                        handleplumb(c, uri);
                        webkit_policy_decision_ignore(d);
+                       return;
                }
        }