about summary refs log tree commit diff
path: root/surf.c
diff options
context:
space:
mode:
authorChristoph Lohmann <20h@r-36.net>2015-01-19 22:15:18 +0100
committerChristoph Lohmann <20h@r-36.net>2015-01-19 22:15:18 +0100
commit9c3b5ad35389f1930834bf04341eb0c3514a850f (patch)
tree996bced8c0eb36e56d2ce3bec644e2e92d80ebea /surf.c
parentAdd a comment about how the styles are iterated. (diff)
downloadsurf-9c3b5ad35389f1930834bf04341eb0c3514a850f.tar.gz
surf-9c3b5ad35389f1930834bf04341eb0c3514a850f.tar.bz2
surf-9c3b5ad35389f1930834bf04341eb0c3514a850f.zip
Add plumbing functionality.
Diffstat (limited to 'surf.c')
-rw-r--r--surf.c23
1 files changed, 21 insertions, 2 deletions
diff --git a/surf.c b/surf.c
index 72d26e7..9b75829 100644
--- a/surf.c
+++ b/surf.c
@@ -95,7 +95,7 @@ static SoupCache *diskcache = NULL;
 static void addaccelgroup(Client *c);
 static void beforerequest(WebKitWebView *w, WebKitWebFrame *f,
 		WebKitWebResource *r, WebKitNetworkRequest *req,
-		WebKitNetworkResponse *resp, gpointer d);
+		WebKitNetworkResponse *resp, Client *c);
 static char *buildpath(const char *path);
 static gboolean buttonrelease(WebKitWebView *web, GdkEventButton *e,
 		GList *gl);
@@ -138,6 +138,8 @@ static void getpagestat(Client *c);
 static char *geturi(Client *c);
 static gchar *getstyle(const char *uri);
 
+static void handleplumb(Client *c, WebKitWebView *w, const gchar *uri);
+
 static gboolean initdownload(WebKitWebView *v, WebKitDownload *o, Client *c);
 
 static void inspector(Client *c, const Arg *arg);
@@ -209,11 +211,19 @@ addaccelgroup(Client *c) {
 static void
 beforerequest(WebKitWebView *w, WebKitWebFrame *f, WebKitWebResource *r,
 		WebKitNetworkRequest *req, WebKitNetworkResponse *resp,
-		gpointer d) {
+		Client *c) {
 	const gchar *uri = webkit_network_request_get_uri(req);
 
 	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:") \
+			&& strlen(uri) > 0) {
+		printf("Handle plumb: %s\n", uri);
+		handleplumb(c, w, uri);
+	}
 }
 
 static char *
@@ -561,6 +571,15 @@ getstyle(const char *uri) {
 	return g_strdup("");
 }
 
+static void
+handleplumb(Client *c, WebKitWebView *w, const gchar *uri) {
+	Arg arg;
+
+	webkit_web_view_stop_loading(w);
+	arg = (Arg)PLUMB((char *)uri);
+	spawn(c, &arg);
+}
+
 static gboolean
 initdownload(WebKitWebView *view, WebKitDownload *o, Client *c) {
 	Arg arg;