CookieStorageShim.cpp [plain text]
#include "config.h"
#include "CookieStorageShim.h"
#if ENABLE(NETWORK_PROCESS)
#include "CookieStorageShimLibrary.h"
#include "NetworkConnectionToWebProcess.h"
#include "NetworkProcessConnection.h"
#include "WebCoreArgumentCoders.h"
#include "WebProcess.h"
#include <WebCore/KURL.h>
#include <dlfcn.h>
#include <wtf/MainThread.h>
#include <wtf/RetainPtr.h>
#include <wtf/text/WTFString.h>
using namespace WebCore;
namespace WebKit {
static CFDictionaryRef webKitCookieStorageCopyRequestHeaderFieldsForURL(CFHTTPCookieStorageRef inCookieStorage, CFURLRef inRequestURL)
{
String cookies;
KURL firstPartyForCookiesURL;
if (!WebProcess::shared().networkConnection()->connection()->sendSync(Messages::NetworkConnectionToWebProcess::CookieRequestHeaderFieldValue(false, firstPartyForCookiesURL, inRequestURL), Messages::NetworkConnectionToWebProcess::CookiesForDOM::Reply(cookies), 0))
return 0;
RetainPtr<CFStringRef> cfCookies = cookies.createCFString();
static const void* cookieKeys[] = { CFSTR("Cookie") };
const void* cookieValues[] = { cfCookies.get() };
return CFDictionaryCreate(0, cookieKeys, cookieValues, 1, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);
}
CookieStorageShim& CookieStorageShim::shared()
{
DEFINE_STATIC_LOCAL(CookieStorageShim, storage, ());
return storage;
}
void CookieStorageShim::initialize()
{
CookieStorageShimCallbacks callbacks = { &webKitCookieStorageCopyRequestHeaderFieldsForURL };
CookieStorageShimInitializeFunc func = reinterpret_cast<CookieStorageShimInitializeFunc>(dlsym(RTLD_DEFAULT, "WebKitCookieStorageShimInitialize"));
if (func)
func(callbacks);
}
}
#endif // ENABLE(NETWORK_PROCESS)