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); | |