tMove all necessary initialisation to newview() - surf - customized build of su… | |
git clone git://src.adamsgaard.dk/surf | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 0f3e3bf66986b0a9613b03c43ff204b1c009f6bc | |
parent ad538bb00a38c5df7d7140414756724c1045307d | |
Author: Quentin Rameau <[email protected]> | |
Date: Wed, 18 Nov 2015 17:17:49 +0100 | |
Move all necessary initialisation to newview() | |
Most all the settings and callbacks are set before view creation. | |
Create a related view (with inherited settings) if asked to. | |
Diffstat: | |
M config.def.h | 2 +- | |
M surf.c | 112 +++++++++++++++--------------… | |
2 files changed, 54 insertions(+), 60 deletions(-) | |
--- | |
diff --git a/config.def.h b/config.def.h | |
t@@ -4,7 +4,7 @@ static char *useragent = "Mozilla/5.0 (X11; U; Unix; en-U… | |
"Chrome/24.0.1295.0 Safari/537.15 Surf/"VERSION; | |
static char *scriptfile = "~/.surf/script.js"; | |
static char *styledir = "~/.surf/styles/"; | |
-static char *cachefolder = "~/.surf/cache/"; | |
+static char *cachedir = "~/.surf/cache/"; | |
static Bool kioskmode = FALSE; /* Ignore shortcuts */ | |
static Bool showindicators = TRUE; /* Show indicators in window title */ | |
diff --git a/surf.c b/surf.c | |
t@@ -334,6 +334,7 @@ cleanup(void) | |
g_free(cookiefile); | |
g_free(scriptfile); | |
g_free(stylefile); | |
+ g_free(cachedir); | |
} | |
WebKitCookieAcceptPolicy | |
t@@ -800,6 +801,8 @@ newview(Client *c, WebKitWebView *rv) | |
{ | |
WebKitWebView *v; | |
WebKitSettings *settings; | |
+ WebKitUserContentManager *contentmanager; | |
+ WebKitWebContext *context; | |
char *ua; | |
/* Webview */ | |
t@@ -807,43 +810,57 @@ newview(Client *c, WebKitWebView *rv) | |
v = WEBKIT_WEB_VIEW( | |
webkit_web_view_new_with_related_view(rv)); | |
} else { | |
- v = WEBKIT_WEB_VIEW(webkit_web_view_new()); | |
- | |
- settings = webkit_web_view_get_settings(v); | |
+ settings = webkit_settings_new_with_settings( | |
+ "auto-load-images", loadimages, | |
+ "default-font-size", defaultfontsize, | |
+ "enable-caret-browsing", enablecaretbrowsing, | |
+ "enable-developer-extras", enableinspector, | |
+ "enable-dns-prefetching", enablednsprefetching, | |
+ "enable-frame-flattening", enableframeflattening, | |
+ "enable-html5-database", enablecache, | |
+ "enable-html5-local-storage", enablecache, | |
+ "enable-javascript", enablescripts, | |
+ "enable-plugins", enableplugins, | |
+ NULL); | |
if (!(ua = getenv("SURF_USERAGENT"))) | |
ua = useragent; | |
- g_object_set(G_OBJECT(settings), "user-agent", ua, NULL); | |
- g_object_set(G_OBJECT(settings), | |
- "auto-load-images", loadimages, NULL); | |
- g_object_set(G_OBJECT(settings), | |
- "enable-plugins", enableplugins, NULL); | |
- g_object_set(G_OBJECT(settings), | |
- "enable-scripts", enablescripts, NULL); | |
- g_object_set(G_OBJECT(settings), | |
- "enable-spatial-navigation", enablespatialbrowsin… | |
- g_object_set(G_OBJECT(settings), | |
- "enable-developer-extras", enableinspector, NULL); | |
- g_object_set(G_OBJECT(settings), | |
- "enable-default-context-menu", kioskmode ^ 1, NUL… | |
- g_object_set(G_OBJECT(settings), | |
- "default-font-size", defaultfontsize, NULL); | |
- g_object_set(G_OBJECT(settings), | |
- "resizable-text-areas", 1, NULL); | |
- if (enablestyle) | |
- setstyle(c, getstyle("about:blank")); | |
- | |
- if (enableinspector) { | |
- c->inspector = webkit_web_view_get_inspector(v); | |
- g_signal_connect(G_OBJECT(c->inspector), "inspect-web-… | |
- G_CALLBACK(inspector_new), c); | |
- g_signal_connect(G_OBJECT(c->inspector), "show-window", | |
- G_CALLBACK(inspector_show), c); | |
- g_signal_connect(G_OBJECT(c->inspector), "close-window… | |
- G_CALLBACK(inspector_close), c); | |
- g_signal_connect(G_OBJECT(c->inspector), "finished", | |
- G_CALLBACK(inspector_finished), c); | |
- c->isinspecting = false; | |
- } | |
+ webkit_settings_set_user_agent(settings, ua); | |
+ /* Have a look at http://webkitgtk.org/reference/webkit2gtk/st… | |
+ * for more interesting settings */ | |
+ | |
+ contentmanager = webkit_user_content_manager_new(); | |
+ | |
+ context = webkit_web_context_new_with_website_data_manager( | |
+ webkit_website_data_manager_new( | |
+ "base-cache-directory", cachedir, | |
+ "base-data-directory", cachedir, | |
+ NULL)); | |
+ | |
+ /* rendering process model, can be a shared unique one or one … | |
+ * view */ | |
+ webkit_web_context_set_process_model(context, | |
+ WEBKIT_PROCESS_MODEL_MULTIPLE_SECONDARY_PROCESSES); | |
+ /* ssl */ | |
+ webkit_web_context_set_tls_errors_policy(context, strictssl ? | |
+ WEBKIT_TLS_ERRORS_POLICY_FAIL : WEBKIT_TLS_ERRORS_POLICY_I… | |
+ /* disk cache */ | |
+ webkit_web_context_set_cache_model(context, enablecache ? | |
+ WEBKIT_CACHE_MODEL_WEB_BROWSER : WEBKIT_CACHE_MODEL_DOCUME… | |
+ | |
+ /* Currently only works with text file to be compatible with c… | |
+ webkit_cookie_manager_set_persistent_storage( | |
+ webkit_web_context_get_cookie_manager(context), cookiefile, | |
+ WEBKIT_COOKIE_PERSISTENT_STORAGE_TEXT); | |
+ /* cookie policy */ | |
+ webkit_cookie_manager_set_accept_policy( | |
+ webkit_web_context_get_cookie_manager(context), | |
+ cookiepolicy_get()); | |
+ | |
+ v = g_object_new(WEBKIT_TYPE_WEB_VIEW, | |
+ "settings", settings, | |
+ "user-content-manager", contentmanager, | |
+ "web-context", context, | |
+ NULL); | |
} | |
g_signal_connect(G_OBJECT(v), | |
t@@ -1196,7 +1213,7 @@ setup(void) | |
/* dirs and files */ | |
cookiefile = buildfile(cookiefile); | |
scriptfile = buildfile(scriptfile); | |
- cachefolder = buildpath(cachefolder); | |
+ cachedir = buildpath(cachedir); | |
if (stylefile == NULL) { | |
styledir = buildpath(styledir); | |
for (i = 0; i < LENGTH(styles); i++) { | |
t@@ -1221,29 +1238,6 @@ setup(void) | |
stylefile = g_strconcat("file://", stylepath, NULL); | |
g_free(stylepath); | |
} | |
- | |
- /* cookie policy */ | |
- webkit_cookie_manager_set_persistent_storage( | |
- webkit_web_context_get_cookie_manager(context), cookiefile, | |
- WEBKIT_COOKIE_PERSISTENT_STORAGE_TEXT); | |
- webkit_cookie_manager_set_accept_policy( | |
- webkit_web_context_get_cookie_manager(context), | |
- cookiepolicy_get()); | |
- | |
- /* rendering process model, can be a shared unique one or one for each | |
- * view */ | |
- webkit_web_context_set_process_model(context, | |
- WEBKIT_PROCESS_MODEL_MULTIPLE_SECONDARY_PROCESSES); | |
- | |
- /* disk cache */ | |
- webkit_web_context_set_cache_model(context, enablecache ? | |
- WEBKIT_CACHE_MODEL_WEB_BROWSER : | |
- WEBKIT_CACHE_MODEL_DOCUMENT_VIEWER); | |
- | |
- /* ssl */ | |
- webkit_web_context_set_tls_errors_policy(context, strictssl ? | |
- WEBKIT_TLS_ERRORS_POLICY_FAIL : | |
- WEBKIT_TLS_ERRORS_POLICY_IGNORE); | |
} | |
void |