WebCookieManagerSoup.cpp [plain text]
#include "config.h"
#include "WebCookieManager.h"
#include "ChildProcess.h"
#include "WebFrameNetworkingContext.h"
#include "WebKitSoupCookieJarSqlite.h"
#include <WebCore/CookieJarSoup.h>
#include <WebCore/SoupNetworkSession.h>
#include <libsoup/soup.h>
#include <wtf/glib/GRefPtr.h>
#include <wtf/text/CString.h>
using namespace WebCore;
namespace WebKit {
void WebCookieManager::platformSetHTTPCookieAcceptPolicy(HTTPCookieAcceptPolicy policy)
{
WebFrameNetworkingContext::setCookieAcceptPolicyForAllContexts(policy);
}
HTTPCookieAcceptPolicy WebCookieManager::platformGetHTTPCookieAcceptPolicy()
{
SoupCookieJar* cookieJar = WebCore::soupCookieJar();
SoupCookieJarAcceptPolicy soupPolicy;
HTTPCookieAcceptPolicy policy;
soupPolicy = soup_cookie_jar_get_accept_policy(cookieJar);
switch (soupPolicy) {
case SOUP_COOKIE_JAR_ACCEPT_ALWAYS:
policy = HTTPCookieAcceptPolicyAlways;
break;
case SOUP_COOKIE_JAR_ACCEPT_NEVER:
policy = HTTPCookieAcceptPolicyNever;
break;
case SOUP_COOKIE_JAR_ACCEPT_NO_THIRD_PARTY:
policy = HTTPCookieAcceptPolicyOnlyFromMainDocumentDomain;
break;
default:
policy = HTTPCookieAcceptPolicyAlways;
}
return policy;
}
void WebCookieManager::setCookiePersistentStorage(const String& storagePath, uint32_t storageType)
{
GRefPtr<SoupCookieJar> jar;
switch (storageType) {
case SoupCookiePersistentStorageText:
jar = adoptGRef(soup_cookie_jar_text_new(storagePath.utf8().data(), FALSE));
break;
case SoupCookiePersistentStorageSQLite:
jar = adoptGRef(webkitSoupCookieJarSqliteNew(storagePath));
break;
default:
ASSERT_NOT_REACHED();
}
soup_cookie_jar_set_accept_policy(jar.get(), soup_cookie_jar_get_accept_policy(WebCore::soupCookieJar()));
SoupNetworkSession::defaultSession().setCookieJar(jar.get());
WebCore::setSoupCookieJar(jar.get());
}
}