| tIntegrate beforerequest() into decidepolicy() - surf - customized build of sur… | |
| git clone git://src.adamsgaard.dk/surf | |
| Log | |
| Files | |
| Refs | |
| README | |
| LICENSE | |
| --- | |
| commit 76940a9ab5ad1c9c5add53a1a077dc06369c745c | |
| parent d542773e7527758060c188f734bd6b612bbaa529 | |
| Author: Quentin Rameau <[email protected]> | |
| Date: Thu, 19 Nov 2015 14:10:28 +0100 | |
| Integrate beforerequest() into decidepolicy() | |
| Diffstat: | |
| M surf.c | 72 ++++++++++++++---------------… | |
| 1 file changed, 32 insertions(+), 40 deletions(-) | |
| --- | |
| diff --git a/surf.c b/surf.c | |
| t@@ -103,9 +103,6 @@ static int cookiepolicy; | |
| static char *stylefile = NULL; | |
| static void addaccelgroup(Client *c); | |
| -static void beforerequest(WebKitWebView *w, WebKitWebFrame *f, | |
| - WebKitWebResource *r, WebKitNetworkRequest *req, | |
| - WebKitNetworkResponse *resp, Client *c); | |
| static char *buildfile(const char *path); | |
| static char *buildpath(const char *path); | |
| static gboolean buttonreleased(GtkWidget *w, GdkEventKey *e, Client *c); | |
| t@@ -140,7 +137,7 @@ static char *geturi(Client *c); | |
| static const gchar *getstyle(const char *uri); | |
| static void setstyle(Client *c, const char *style); | |
| -static void handleplumb(Client *c, WebKitWebView *w, const gchar *uri); | |
| +static void handleplumb(Client *c, const gchar *uri); | |
| static void downloadstarted(WebKitWebContext *wc, WebKitDownload *d, | |
| Client *c); | |
| t@@ -213,35 +210,6 @@ addaccelgroup(Client *c) | |
| gtk_window_add_accel_group(GTK_WINDOW(c->win), group); | |
| } | |
| -void | |
| -beforerequest(WebKitWebView *w, WebKitWebFrame *f, WebKitWebResource *r, | |
| - WebKitNetworkRequest *req, WebKitNetworkResponse *resp, | |
| - Client *c) | |
| -{ | |
| - const gchar *uri = webkit_network_request_get_uri(req); | |
| - int i, isascii = 1; | |
| - | |
| - if (g_str_has_suffix(uri, "/favicon.ico")) | |
| - webkit_network_request_set_uri(req, "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, w, uri); | |
| - } | |
| -} | |
| - | |
| char * | |
| buildfile(const char *path) | |
| { | |
| t@@ -539,13 +507,41 @@ decidenewwindow(WebKitPolicyDecision *d, Client *c) | |
| 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 { | |
| -res = webkit_response_policy_decision_get_response(r); | |
| webkit_policy_decision_ignore(d); | |
| download(c, res); | |
| } | |
| t@@ -687,12 +683,11 @@ setstyle(Client *c, const char *style) | |
| } | |
| void | |
| -handleplumb(Client *c, WebKitWebView *w, const gchar *uri) | |
| +handleplumb(Client *c, const gchar *uri) | |
| { | |
| Arg arg; | |
| - webkit_web_view_stop_loading(w); | |
| - arg = (Arg)PLUMB((char *)uri); | |
| + arg = (Arg)PLUMB(uri); | |
| spawn(c, &arg); | |
| } | |
| t@@ -1012,9 +1007,6 @@ newview(Client *c, WebKitWebView *rv) | |
| "button-release-event", | |
| G_CALLBACK(buttonreleased), c); | |
| g_signal_connect(G_OBJECT(v), | |
| - "resource-request-starting", | |
| - G_CALLBACK(beforerequest), c); | |
| - g_signal_connect(G_OBJECT(v), | |
| "should-show-delete-interface-for-element", | |
| G_CALLBACK(deletion_interface), c); | |