timplementing cookie persistance with multiple processes. - surf - customized build of surf, the suckless webkit browser
 (HTM) git clone git://src.adamsgaard.dk/surf
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 5ac31995a323eaac87b1b509a7fce26d488ca3ea
 (DIR) parent 3657813fec9b1b81ecb7de9389eaade702112005
 (HTM) Author: Enno Boland (tox) <tox@s01.de>
       Date:   Sat, 17 Oct 2009 08:38:46 +0200
       
       implementing cookie persistance with multiple processes.
       Diffstat:
         M surf.c                              |      20 +++++++++++++++++++-
       
       1 file changed, 19 insertions(+), 1 deletion(-)
       ---
 (DIR) diff --git a/surf.c b/surf.c
       t@@ -92,6 +92,7 @@ static void itemclick(GtkMenuItem *mi, Client *c);
        static gboolean keypress(GtkWidget *w, GdkEventKey *ev, Client *c);
        static void linkhover(WebKitWebView *v, const char* t, const char* l, Client *c);
        static void loadcommit(WebKitWebView *v, WebKitWebFrame *f, Client *c);
       +static void loadfinished(WebKitWebView *v, WebKitWebFrame *f, Client *c);
        static void loadstart(WebKitWebView *v, WebKitWebFrame *f, Client *c);
        static void loaduri(Client *c, const Arg *arg);
        static void navigate(Client *c, const Arg *arg);
       t@@ -103,10 +104,10 @@ static GdkFilterReturn processx(GdkXEvent *xevent, GdkEvent *event, gpointer d);
        static void print(Client *c, const Arg *arg);
        static void progresschange(WebKitWebView *v, gint p, Client *c);
        static void reload(Client *c, const Arg *arg);
       +static void reloadcookie();
        static void sigchld(int unused);
        static void setup(void);
        static void spawn(Client *c, const Arg *arg);
       -static void titlechange(WebKitWebView *v, WebKitWebFrame* frame, const char* title, Client *c);
        static void scroll(Client *c, const Arg *arg);
        static void searchtext(Client *c, const Arg *arg);
        static void source(Client *c, const Arg *arg);
       t@@ -398,7 +399,13 @@ loadcommit(WebKitWebView *view, WebKitWebFrame *f, Client *c) {
        }
        
        void
       +loadfinished(WebKitWebView *v, WebKitWebFrame *f, Client *c) {
       +        reloadcookie();
       +}
       +
       +void
        loadstart(WebKitWebView *view, WebKitWebFrame *f, Client *c) {
       +        reloadcookie();
                c->progress = 0;
                update(c);
        }
       t@@ -468,6 +475,7 @@ newclient(void) {
                c->view = WEBKIT_WEB_VIEW(webkit_web_view_new());
                g_signal_connect(G_OBJECT(c->view), "title-changed", G_CALLBACK(titlechange), c);
                g_signal_connect(G_OBJECT(c->view), "load-progress-changed", G_CALLBACK(progresschange), c);
       +        g_signal_connect(G_OBJECT(c->view), "load-finished", G_CALLBACK(loadfinished), c);
                g_signal_connect(G_OBJECT(c->view), "load-committed", G_CALLBACK(loadcommit), c);
                g_signal_connect(G_OBJECT(c->view), "load-started", G_CALLBACK(loadstart), c);
                g_signal_connect(G_OBJECT(c->view), "hovering-over-link", G_CALLBACK(linkhover), c);
       t@@ -620,6 +628,16 @@ reload(Client *c, const Arg *arg) {
        }
        
        void
       +reloadcookie(void) {
       +        SoupSession *s;
       +
       +        /* This forces the cookie to be written to hdd */
       +        s = webkit_get_default_session();
       +        soup_session_remove_feature(s, SOUP_SESSION_FEATURE(cookiejar));
       +        soup_session_add_feature(s, SOUP_SESSION_FEATURE(cookiejar));
       +} 
       +
       +void
        scroll(Client *c, const Arg *arg) {
                gdouble v;
                GtkAdjustment *a;