2009-03-25 Gustavo Noronha Silva <gns@gnome.org>
[WebKit-https.git] / WebCore / platform / network / soup / CookieJarSoup.cpp
index 88109e8..e3064e1 100644 (file)
@@ -1,5 +1,6 @@
 /*
  *  Copyright (C) 2008 Xan Lopez <xan@gnome.org>
+ *  Copyright (C) 2009 Igalia S.L.
  *  Copyright (C) 2008 Apple Inc. All rights reserved.
  *
  *  This library is free software; you can redistribute it and/or
 
 namespace WebCore {
 
-SoupCookieJar* getCookieJar()
+static bool cookiesInitialized;
+static SoupCookieJar* cookieJar;
+
+SoupCookieJar* defaultCookieJar()
+{
+    if (!cookiesInitialized) {
+        cookiesInitialized = true;
+        setDefaultCookieJar(soup_cookie_jar_new());
+    }
+
+    return cookieJar;
+}
+
+void setDefaultCookieJar(SoupCookieJar* jar)
 {
-    static SoupCookieJar* jar = soup_cookie_jar_new();
-    return jar;
+    cookiesInitialized = true;
+
+    if (cookieJar)
+        g_object_unref(cookieJar);
+
+    cookieJar = jar;
+
+    if (cookieJar)
+        g_object_ref(cookieJar);
 }
 
 void setCookies(Document* /*document*/, const KURL& url, const KURL& /*policyURL*/, const String& value)
 {
-    SoupCookieJar* jar = getCookieJar();
+    SoupCookieJar* jar = defaultCookieJar();
     if (!jar)
         return;
 
@@ -45,7 +66,7 @@ void setCookies(Document* /*document*/, const KURL& url, const KURL& /*policyURL
 
 String cookies(const Document* /*document*/, const KURL& url)
 {
-    SoupCookieJar* jar = getCookieJar();
+    SoupCookieJar* jar = defaultCookieJar();
     if (!jar)
         return String();
 
@@ -61,7 +82,7 @@ String cookies(const Document* /*document*/, const KURL& url)
 
 bool cookiesEnabled(const Document* /*document*/)
 {
-    return getCookieJar();
+    return defaultCookieJar();
 }
 
 }