Introduction
Introduction Statistics Contact Development Disclaimer Help
tReplace initdownload() and intercept global download requests. - surf - custom…
git clone git://src.adamsgaard.dk/surf
Log
Files
Refs
README
LICENSE
---
commit 96188f83f0f77f93fc5f4590c1f1c8f13b78e599
parent 26a2dbac6501d095937568cdb9f00083e0b02146
Author: Quentin Rameau <[email protected]>
Date: Wed, 18 Nov 2015 19:05:59 +0100
Replace initdownload() and intercept global download requests.
Attach to download requests on WebKitContext, this way we can easily
manage all types of downloads (coming from views or not).
Diffstat:
M surf.c | 37 ++++++++++++++++++++++-------…
1 file changed, 26 insertions(+), 11 deletions(-)
---
diff --git a/surf.c b/surf.c
t@@ -141,7 +141,10 @@ static void setstyle(Client *c, const char *style);
static void handleplumb(Client *c, WebKitWebView *w, const gchar *uri);
-static gboolean initdownload(WebKitWebView *v, WebKitDownload *o, Client *c);
+static void downloadstarted(WebKitWebContext *wc, WebKitDownload *d,
+ Client *c);
+static void responsereceived(WebKitDownload *d, GParamSpec *ps, Client *c);
+static void download(Client *c, WebKitURIResponse *r);
static void inspector(Client *c, const Arg *arg);
static WebKitWebView *inspector_new(WebKitWebInspector *i, WebKitWebView *v,
t@@ -698,15 +701,27 @@ handleplumb(Client *c, WebKitWebView *w, const gchar *ur…
spawn(c, &arg);
}
-gboolean
-initdownload(WebKitWebView *view, WebKitDownload *o, Client *c)
+void
+downloadstarted(WebKitWebContext *wc, WebKitDownload *d, Client *c)
{
- Arg arg;
+ g_signal_connect(G_OBJECT(d), "notify::response",
+ G_CALLBACK(responsereceived), c);
+}
- updatewinid(c);
- arg = (Arg)DOWNLOAD((char *)webkit_download_get_uri(o), geturi(c));
- spawn(c, &arg);
- return FALSE;
+void
+responsereceived(WebKitDownload *d, GParamSpec *ps, Client *c)
+{
+ download(c, webkit_download_get_response(d));
+ webkit_download_cancel(d);
+}
+
+void
+download(Client *c, WebKitURIResponse *r)
+{
+ Arg a;
+
+ a = (Arg)DOWNLOAD(webkit_uri_response_get_uri(r), geturi(c));
+ spawn(c, &a);
}
void
t@@ -962,6 +977,9 @@ newview(Client *c, WebKitWebView *rv)
webkit_web_context_get_cookie_manager(context),
cookiepolicy_get());
+ g_signal_connect(G_OBJECT(context), "download-started",
+ G_CALLBACK(downloadstarted), c);
+
v = g_object_new(WEBKIT_TYPE_WEB_VIEW,
"settings", settings,
"user-content-manager", contentmanager,
t@@ -996,9 +1014,6 @@ newview(Client *c, WebKitWebView *rv)
"notify::estimated-load-progress",
G_CALLBACK(progresschanged), c);
g_signal_connect(G_OBJECT(v),
- "download-requested",
- G_CALLBACK(initdownload), c);
- g_signal_connect(G_OBJECT(v),
"button-release-event",
G_CALLBACK(buttonrelease), c);
g_signal_connect(G_OBJECT(v),
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.