diff --git a/config.def.h b/config.def.h index b81e6b0..e2c5946 100644 --- a/config.def.h +++ b/config.def.h @@ -12,6 +12,7 @@ static Bool kioskmode = FALSE; /* Ignore shortcuts */ static Bool showindicators = TRUE; /* Show indicators in window title */ static Bool zoomto96dpi = TRUE; /* Zoom pages to always emulate 96dpi */ static Bool runinfullscreen = FALSE; /* Run in fullscreen mode by default */ +static guint cookiepolicy[2] = { 2, 1 }; /* 0:always, 1:never, 2:no third party */ static guint defaultfontsize = 12; /* Default font size */ static gfloat zoomlevel = 1.0; /* Default zoom level */ @@ -93,6 +94,7 @@ static Key keys[] = { { MODKEY|GDK_SHIFT_MASK,GDK_s, toggle, { .v = "enable-scripts" } }, { MODKEY|GDK_SHIFT_MASK,GDK_v, toggle, { .v = "enable-plugins" } }, { MODKEY|GDK_SHIFT_MASK,GDK_m, togglestyle,{ 0 } }, + { MODKEY|GDK_SHIFT_MASK,GDK_t, togglecookie,{ 0 } }, { MODKEY|GDK_SHIFT_MASK,GDK_b, togglescrollbars,{ 0 } }, { MODKEY|GDK_SHIFT_MASK,GDK_g, togglegeolocation, { 0 } }, }; diff --git a/surf.c b/surf.c index f0be24b..5b8bafe 100644 --- a/surf.c +++ b/surf.c @@ -79,7 +79,7 @@ static gboolean showxid = FALSE; static char winid[64]; static gboolean usingproxy = 0; static char togglestat[7]; -static char pagestat[3]; +static char pagestat[4]; static void addaccelgroup(Client *c); static void beforerequest(WebKitWebView *w, WebKitWebFrame *f, @@ -163,6 +163,7 @@ static void titlechange(WebKitWebView *v, WebKitWebFrame *frame, static void toggle(Client *c, const Arg *arg); static void togglegeolocation(Client *c, const Arg *arg); static void togglescrollbars(Client *c, const Arg *arg); +static void togglecookie(Client *c, const Arg *arg); static void togglestyle(Client *c, const Arg *arg); static void updatetitle(Client *c); static void updatewinid(Client *c); @@ -296,9 +297,14 @@ cookiejar_init(CookieJar *self) { static SoupCookieJar * cookiejar_new(const char *filename, gboolean read_only) { - return g_object_new(COOKIEJAR_TYPE, + SoupCookieJar *soupcookiejar; + + soupcookiejar = g_object_new(COOKIEJAR_TYPE, SOUP_COOKIE_JAR_TEXT_FILENAME, filename, SOUP_COOKIE_JAR_READ_ONLY, read_only, NULL); + g_object_set(G_OBJECT(soupcookiejar), SOUP_COOKIE_JAR_ACCEPT_POLICY, + cookiepolicy[0], NULL); + return soupcookiejar; } static void @@ -1195,6 +1201,28 @@ togglescrollbars(Client *c, const Arg *arg) { } static void +togglecookie(Client *c, const Arg *arg) { + Arg a = { .b = FALSE }; + SoupSession *s; + SoupCookieJar *jar; + SoupCookieJarAcceptPolicy policy; + + s = webkit_get_default_session(); + jar = SOUP_COOKIE_JAR(soup_session_get_feature(s, SOUP_TYPE_COOKIE_JAR)); + policy = soup_cookie_jar_get_accept_policy(jar); + + if (policy == cookiepolicy[0]) { + cookiepolicy[0] = cookiepolicy[1]; + cookiepolicy[1] = policy; + } + + soup_cookie_jar_set_accept_policy(jar, cookiepolicy[0]); + + updatetitle(c); + reload(c, &a); +} + +static void togglestyle(Client *c, const Arg *arg) { WebKitWebSettings *settings; char *uri; @@ -1245,7 +1273,12 @@ getpagestat(Client *c) { } pagestat[1] = usingproxy ? 'P' : '-'; - pagestat[2] = '\0'; + switch (cookiepolicy[0]) { + case 0: pagestat[2] = '*'; break; + case 1: pagestat[2] = '-'; break; + case 2: pagestat[2] = '+'; break; + } + pagestat[3] = '\0'; }