From 82abf5154f0ab94716223f556638f073f01dbc11 Mon Sep 17 00:00:00 2001 From: Quentin Rameau Date: Fri, 20 Nov 2015 15:48:04 +0100 Subject: [PATCH] Adapt toggle(), clean some config parameters Regroup all toggles in an enum and handle them with a unique function via a switch. That lets us take different actions for each toggle. Add a frame flatenning and a dns preteching options. --- config.def.h | 23 ++++++++------- surf.c | 83 +++++++++++++++++++++++++++++++++++++--------------- 2 files changed, 71 insertions(+), 35 deletions(-) diff --git a/config.def.h b/config.def.h index 56734a9..c7b0cca 100644 --- a/config.def.h +++ b/config.def.h @@ -8,7 +8,6 @@ static char *cachedir = "~/.surf/cache/"; 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 defaultfontsize = 12; /* Default font size */ @@ -18,15 +17,12 @@ static gfloat zoomlevel = 1.0; /* Default zoom level */ static char *cookiefile = "~/.surf/cookies.txt"; static char *cookiepolicies = "Aa@"; /* A: accept all; a: accept nothing, * @: accept no third party */ -static char *cafile = "/etc/ssl/certs/ca-certificates.crt"; static Bool strictssl = FALSE; /* Refuse untrusted SSL connections */ -static time_t sessiontime = 3600; /* Webkit default features */ static Bool enablescrollbars = TRUE; -static Bool enablespatialbrowsing = TRUE; -static Bool enablediskcache = TRUE; -static int diskcachebytes = 5 * 1024 * 1024; +static Bool enablecaretbrowsing = TRUE; +static Bool enablecache = TRUE; static Bool enableplugins = TRUE; static Bool enablescripts = TRUE; static Bool enableinspector = TRUE; @@ -34,6 +30,8 @@ static Bool enablestyle = TRUE; static Bool loadimages = TRUE; static Bool hidebackground = FALSE; static Bool allowgeolocation = TRUE; +static Bool enablednsprefetching = FALSE; +static Bool enableframeflattening = FALSE; static WebKitFindOptions findopts = WEBKIT_FIND_OPTIONS_CASE_INSENSITIVE | WEBKIT_FIND_OPTIONS_WRAP_AROUND; @@ -122,13 +120,16 @@ static Key keys[] = { { MODKEY, GDK_KEY_n, find, { .i = +1 } }, { MODKEY|GDK_SHIFT_MASK, GDK_KEY_n, find, { .i = -1 } }, - { MODKEY|GDK_SHIFT_MASK, GDK_KEY_c, toggle, { .v = "enable-caret-browsing" } }, - { MODKEY|GDK_SHIFT_MASK, GDK_KEY_i, toggle, { .v = "auto-load-images" } }, - { MODKEY|GDK_SHIFT_MASK, GDK_KEY_s, toggle, { .v = "enable-scripts" } }, - { MODKEY|GDK_SHIFT_MASK, GDK_KEY_v, toggle, { .v = "enable-plugins" } }, + { MODKEY|GDK_SHIFT_MASK, GDK_KEY_c, toggle, { .i = CaretBrowsing } }, + { MODKEY|GDK_SHIFT_MASK, GDK_KEY_f, toggle, { .i = FrameFlattening } }, + { MODKEY|GDK_SHIFT_MASK, GDK_KEY_g, toggle, { .i = Geolocation } }, + { MODKEY|GDK_SHIFT_MASK, GDK_KEY_s, toggle, { .i = JavaScript } }, + { MODKEY|GDK_SHIFT_MASK, GDK_KEY_i, toggle, { .i = LoadImages } }, + { MODKEY|GDK_SHIFT_MASK, GDK_KEY_v, toggle, { .i = Plugins } }, + { MODKEY|GDK_SHIFT_MASK, GDK_KEY_b, toggle, { .i = ScrollBars } }, + { MODKEY|GDK_SHIFT_MASK, GDK_KEY_a, togglecookiepolicy, { 0 } }, { MODKEY|GDK_SHIFT_MASK, GDK_KEY_m, togglestyle, { 0 } }, - { MODKEY|GDK_SHIFT_MASK, GDK_KEY_g, togglegeolocation, { 0 } }, }; /* button definitions */ diff --git a/surf.c b/surf.c index 7c48bb6..a06fe40 100644 --- a/surf.c +++ b/surf.c @@ -47,6 +47,16 @@ enum { OnAny = OnDoc | OnLink | OnImg | OnMedia | OnEdit | OnBar | OnSel, }; +enum { + CaretBrowsing, + FrameFlattening, + Geolocation, + JavaScript, + LoadImages, + Plugins, + ScrollBars, +}; + typedef union Arg Arg; union Arg { gboolean b; @@ -176,9 +186,8 @@ static void sigchld(int unused); static void spawn(Client *c, const Arg *arg); static void stop(Client *c, const Arg *arg); static void titlechanged(WebKitWebView *view, GParamSpec *ps, Client *c); -static void toggle(Client *c, const Arg *arg); +static void toggle(Client *c, const Arg *a); static void togglecookiepolicy(Client *c, const Arg *arg); -static void togglegeolocation(Client *c, const Arg *arg); static void togglestyle(Client *c, const Arg *arg); static void updatetitle(Client *c); static void updatewinid(Client *c); @@ -1064,7 +1073,7 @@ newwindow(Client *c, const Arg *arg, gboolean noembed) cmd[i++] = "-s"; if (showxid) cmd[i++] = "-x"; - if (enablediskcache) + if (enablecache) cmd[i++] = "-D"; cmd[i++] = "-c"; cmd[i++] = cookiefile; @@ -1306,18 +1315,53 @@ winevent(GtkWidget *w, GdkEvent *e, Client *c) } void -toggle(Client *c, const Arg *arg) +toggle(Client *c, const Arg *a) { - WebKitWebSettings *settings; - char *name = (char *)arg->v; - gboolean value; - Arg a = { .b = FALSE }; + WebKitSettings *s; - settings = webkit_web_view_get_settings(c->view); - g_object_get(G_OBJECT(settings), name, &value, NULL); - g_object_set(G_OBJECT(settings), name, !value, NULL); + s = webkit_web_view_get_settings(c->view); - reload(c, &a); + switch ((unsigned int)a->i) { + case CaretBrowsing: + enablecaretbrowsing = !enablecaretbrowsing; + webkit_settings_set_enable_caret_browsing(s, + enablecaretbrowsing); + updatetitle(c); + return; /* do not reload */ + break; + case FrameFlattening: + enableframeflattening = !enableframeflattening; + webkit_settings_set_enable_frame_flattening(s, + enableframeflattening); + break; + case Geolocation: + allowgeolocation = !allowgeolocation; + break; + case JavaScript: + enablescripts = !enablescripts; + webkit_settings_set_enable_javascript(s, enablescripts); + break; + case LoadImages: + loadimages = !loadimages; + webkit_settings_set_auto_load_images(s, loadimages); + break; + case Plugins: + enableplugins = !enableplugins; + webkit_settings_set_enable_plugins(s, enableplugins); + break; + case ScrollBars: + /* Disabled until we write some WebKitWebExtension for + * manipulating the DOM directly. + enablescrollbars = !enablescrollbars; + evalscript(c, "document.documentElement.style.overflow = '%s'", + enablescrollbars ? "auto" : "hidden"); + */ + return; /* do not reload */ + break; + default: + break; + } + reload(c, a); } void @@ -1335,15 +1379,6 @@ togglecookiepolicy(Client *c, const Arg *arg) /* Do not reload. */ } -void -togglegeolocation(Client *c, const Arg *arg) -{ - Arg a = { .b = FALSE }; - - allowgeolocation ^= 1; - reload(c, &a); -} - void togglestyle(Client *c, const Arg *arg) { @@ -1368,7 +1403,7 @@ gettogglestat(Client *c) togglestat[p++] = allowgeolocation? 'G': 'g'; - togglestat[p++] = enablediskcache? 'D': 'd'; + togglestat[p++] = enablecache? 'D': 'd'; g_object_get(G_OBJECT(settings), "auto-load-images", &value, NULL); togglestat[p++] = value? 'I': 'i'; @@ -1473,10 +1508,10 @@ main(int argc, char *argv[]) cookiefile = EARGF(usage()); break; case 'd': - enablediskcache = 0; + enablecache = 0; break; case 'D': - enablediskcache = 1; + enablecache = 1; break; case 'e': embed = strtol(EARGF(usage()), NULL, 0); -- 2.20.1