summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorportix <portix@gmx.net>2010-10-24 18:00:45 +0200
committerportix <portix@gmx.net>2010-10-24 18:00:45 +0200
commit877a581c57c6e045c1077a6da4f1cf9367b77989 (patch)
treeee8eb042cfb0a3ef3ad0c77f0e933aaac139fead
parentde9c9138f0107fde16a65b5ad6e7e7793311ee8a (diff)
downloaddwb-877a581c57c6e045c1077a6da4f1cf9367b77989.zip
content blocker: use resource-request signal instead of got-headers
-rw-r--r--src/dwb.c6
-rw-r--r--src/dwb.h1
-rw-r--r--src/session.c8
-rw-r--r--src/view.c23
4 files changed, 35 insertions, 3 deletions
diff --git a/src/dwb.c b/src/dwb.c
index 47db5d9d..dd88dad2 100644
--- a/src/dwb.c
+++ b/src/dwb.c
@@ -503,6 +503,8 @@ dwb_set_dummy(GList *gl, WebSettings *s) {
}/*}}}*/
/* dwb_got_headers_cb {{{*/
+// TODO remove this stuff, use resource-request-started signal instead
+#ifdef GOT_HEADERS
void
dwb_got_headers_cb(SoupMessage *msg, GList *gl) {
SoupContentSniffer *sniffer = soup_content_sniffer_new();
@@ -531,6 +533,7 @@ static void
dwb_soup_request_cb(SoupSession *session, SoupMessage *msg, SoupSocket *socket) {
g_signal_connect(msg, "got-headers", G_CALLBACK(dwb_got_headers_cb), dwb.state.fview);
}/*}}}*/
+#endif
/* dwb_set_content_block_regex{{{*/
static void
@@ -2035,7 +2038,10 @@ void dwb_init() {
dwb_init_gui();
dwb.misc.soupsession = webkit_get_default_session();
+ // TODO fix got_headers_cb
+#ifdef GOT_HEADERS
g_signal_connect(dwb.misc.soupsession, "request-started", G_CALLBACK(dwb_soup_request_cb), NULL);
+#endif
dwb_init_proxy();
dwb_init_cookies();
dwb_init_vars();
diff --git a/src/dwb.h b/src/dwb.h
index b1a1b9a5..8596767d 100644
--- a/src/dwb.h
+++ b/src/dwb.h
@@ -272,7 +272,6 @@ struct _WebSettings {
};
struct _ViewStatus {
guint message_id;
- //gchar *hover_uri;
gboolean add_history;
gchar *search_string;
GList *downloads;
diff --git a/src/session.c b/src/session.c
index f88b4dbb..dc1df1ce 100644
--- a/src/session.c
+++ b/src/session.c
@@ -103,13 +103,17 @@ dwb_session_restore(const gchar *name) {
g_free(uri);
uri = g_strdup(line[1]);
}
- if (i == length)
+ if (i == length && lastweb)
dwb_session_load_webview(lastweb, uri, last);
g_strfreev(line);
}
g_strfreev(lines);
gtk_widget_show_all(dwb.gui.window);
- if (dwb.state.layout & Maximized) {
+
+ if (!dwb.state.views)
+ dwb_add_view(NULL);
+
+ if (dwb.state.layout & Maximized && dwb.state.views) {
gtk_widget_hide(dwb.gui.right);
for (GList *l = dwb.state.views->next; l; l=l->next) {
gtk_widget_hide(((View*)l->data)->vbox);
diff --git a/src/view.c b/src/view.c
index e14a4923..4883578f 100644
--- a/src/view.c
+++ b/src/view.c
@@ -151,6 +151,29 @@ static void
dwb_web_view_resource_request_cb(WebKitWebView *web, WebKitWebFrame *frame,
WebKitWebResource *resource, WebKitNetworkRequest *request,
WebKitNetworkResponse *response, GList *gl) {
+ SoupMessage *msg = webkit_network_request_get_message(request);
+
+ if (!msg)
+ return;
+
+ SoupBuffer buffer;
+ SoupContentSniffer *sniffer = soup_content_sniffer_new();
+ View *v = gl->data;
+
+ if (v && v->status) {
+ const gchar *content_type = soup_content_sniffer_sniff(sniffer, msg, &buffer, NULL);
+ if (!v->status->current_host) {
+ SoupURI *uri = soup_message_get_uri(msg);
+ v->status->current_host = g_strdup(uri->host);
+ v->status->block_current =
+ !dwb_get_host_blocked(dwb.fc.content_block_allow, v->status->current_host) && !dwb_get_host_blocked(dwb.fc.content_allow, v->status->current_host)
+ ? true : false;
+ }
+ if (v->status->block && v->status->block_current && g_regex_match_simple(dwb.misc.content_block_regex, content_type, 0, 0)) {
+ webkit_network_request_set_uri(request, "about:blank");
+ v->status->items_blocked++;
+ }
+ }
}/*}}}*/
/* dwb_web_view_script_alert_cb {{{*/