aboutsummaryrefslogtreecommitdiffstats
path: root/lib/ephy-web-app-utils.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/ephy-web-app-utils.c')
-rw-r--r--lib/ephy-web-app-utils.c44
1 files changed, 33 insertions, 11 deletions
diff --git a/lib/ephy-web-app-utils.c b/lib/ephy-web-app-utils.c
index 57ba3561a..c686f95e8 100644
--- a/lib/ephy-web-app-utils.c
+++ b/lib/ephy-web-app-utils.c
@@ -257,13 +257,39 @@ out:
return desktop_file_path;
}
+#ifdef HAVE_WEBKIT2
+static SoupCookieJar *get_current_cookie_jar ()
+{
+ char *filename;
+ SoupCookieJar *jar;
+
+ /* FIXME: There's no API in WebKit2 to get all cookies, so we create a
+ * temp read-only jar for the current cookies to read from it.
+ * It would be better to have an API in WebKit to get the cookies instead.
+ */
+ filename = g_build_filename (ephy_dot_dir (), "cookies.sqlite", NULL);
+ jar = (SoupCookieJar*)soup_cookie_jar_sqlite_new (filename, TRUE);
+ g_free (filename);
+
+ return jar;
+}
+#else
+static SoupCookieJar *get_current_cookie_jar ()
+{
+ SoupSession *session = webkit_get_default_session ();
+ SoupCookieJar *jar;
+
+ jar = (SoupCookieJar*)soup_session_get_feature (session, SOUP_TYPE_COOKIE_JAR);
+
+ /* WebKit might not have a cookie jar yet, if it has not needed one
+ * and none has been set by Epiphany. */
+ return jar ? g_object_ref (jar) : NULL;
+}
+#endif
+
static void
create_cookie_jar_for_domain (const char *address, const char *directory)
{
-#ifdef HAVE_WEBKIT2
- /* TODO: Cookies */
-#else
- SoupSession *session;
GSList *cookies, *p;
SoupCookieJar *current_jar, *new_jar;
char *domain, *filename;
@@ -279,12 +305,8 @@ create_cookie_jar_for_domain (const char *address, const char *directory)
domain = uri->host;
/* The current cookies */
- session = webkit_get_default_session ();
- current_jar = (SoupCookieJar*)soup_session_get_feature (session, SOUP_TYPE_COOKIE_JAR);
-
- /* WebKit might not have a cookie jar yet, if it has not needed one
- * and none has been set by Epiphany. */
- if (current_jar == NULL) {
+ current_jar = get_current_cookie_jar ();
+ if (!current_jar) {
soup_uri_free (uri);
return;
}
@@ -302,7 +324,7 @@ create_cookie_jar_for_domain (const char *address, const char *directory)
soup_uri_free (uri);
g_slist_free (cookies);
-#endif
+ g_object_unref (current_jar);
g_object_unref (new_jar);
}