Introduction
Introduction Statistics Contact Development Disclaimer Help
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);
You are viewing proxied material from mx1.adamsgaard.dk. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.