diff options
Diffstat (limited to 'Source/WebKit2/WebProcess/Cookies/WebCookieManager.cpp')
-rw-r--r-- | Source/WebKit2/WebProcess/Cookies/WebCookieManager.cpp | 51 |
1 files changed, 31 insertions, 20 deletions
diff --git a/Source/WebKit2/WebProcess/Cookies/WebCookieManager.cpp b/Source/WebKit2/WebProcess/Cookies/WebCookieManager.cpp index 3998d21d3..4bf6773dc 100644 --- a/Source/WebKit2/WebProcess/Cookies/WebCookieManager.cpp +++ b/Source/WebKit2/WebProcess/Cookies/WebCookieManager.cpp @@ -33,6 +33,7 @@ #include <WebCore/CookieStorage.h> #include <WebCore/NetworkStorageSession.h> #include <WebCore/PlatformCookieJar.h> +#include <WebCore/URL.h> #include <wtf/MainThread.h> #include <wtf/text/StringHash.h> #include <wtf/text/WTFString.h> @@ -41,8 +42,6 @@ using namespace WebCore; namespace WebKit { -static WebCookieManager* sharedCookieManager; - const char* WebCookieManager::supplementName() { return "WebCookieManager"; @@ -52,15 +51,13 @@ WebCookieManager::WebCookieManager(ChildProcess* process) : m_process(process) { m_process->addMessageReceiver(Messages::WebCookieManager::messageReceiverName(), *this); - - ASSERT(!sharedCookieManager); - sharedCookieManager = this; } -void WebCookieManager::getHostnamesWithCookies(uint64_t callbackID) +void WebCookieManager::getHostnamesWithCookies(SessionID sessionID, uint64_t callbackID) { HashSet<String> hostnames; - WebCore::getHostnamesWithCookies(NetworkStorageSession::defaultStorageSession(), hostnames); + if (auto* storageSession = NetworkStorageSession::storageSession(sessionID)) + WebCore::getHostnamesWithCookies(*storageSession, hostnames); Vector<String> hostnameList; copyToVector(hostnames, hostnameList); @@ -68,35 +65,49 @@ void WebCookieManager::getHostnamesWithCookies(uint64_t callbackID) m_process->send(Messages::WebCookieManagerProxy::DidGetHostnamesWithCookies(hostnameList, callbackID), 0); } -void WebCookieManager::deleteCookiesForHostname(const String& hostname) +void WebCookieManager::deleteCookiesForHostname(SessionID sessionID, const String& hostname) +{ + if (auto* storageSession = NetworkStorageSession::storageSession(sessionID)) + WebCore::deleteCookiesForHostnames(*storageSession, { hostname }); +} + +void WebCookieManager::deleteAllCookies(SessionID sessionID) { - WebCore::deleteCookiesForHostname(NetworkStorageSession::defaultStorageSession(), hostname); + if (auto* storageSession = NetworkStorageSession::storageSession(sessionID)) + WebCore::deleteAllCookies(*storageSession); } -void WebCookieManager::deleteAllCookies() +void WebCookieManager::deleteAllCookiesModifiedSince(SessionID sessionID, std::chrono::system_clock::time_point time) { - WebCore::deleteAllCookies(NetworkStorageSession::defaultStorageSession()); + if (auto* storageSession = NetworkStorageSession::storageSession(sessionID)) + WebCore::deleteAllCookiesModifiedSince(*storageSession, time); } -void WebCookieManager::startObservingCookieChanges() +void WebCookieManager::addCookie(SessionID sessionID, const Cookie& cookie, const String& hostname) { - WebCore::startObservingCookieChanges(cookiesDidChange); + if (auto* storageSession = NetworkStorageSession::storageSession(sessionID)) + WebCore::addCookie(*storageSession, URL(URL(), hostname), cookie); } -void WebCookieManager::stopObservingCookieChanges() +void WebCookieManager::notifyCookiesDidChange(SessionID sessionID) { - WebCore::stopObservingCookieChanges(); + ASSERT(RunLoop::isMain()); + m_process->send(Messages::WebCookieManagerProxy::CookiesDidChange(sessionID), 0); } -void WebCookieManager::cookiesDidChange() +void WebCookieManager::startObservingCookieChanges(SessionID sessionID) { - sharedCookieManager->dispatchCookiesDidChange(); + if (auto* storageSession = NetworkStorageSession::storageSession(sessionID)) { + WebCore::startObservingCookieChanges(*storageSession, [this, sessionID] { + notifyCookiesDidChange(sessionID); + }); + } } -void WebCookieManager::dispatchCookiesDidChange() +void WebCookieManager::stopObservingCookieChanges(SessionID sessionID) { - ASSERT(isMainThread()); - m_process->send(Messages::WebCookieManagerProxy::CookiesDidChange(), 0); + if (auto* storageSession = NetworkStorageSession::storageSession(sessionID)) + WebCore::stopObservingCookieChanges(*storageSession); } void WebCookieManager::setHTTPCookieAcceptPolicy(HTTPCookieAcceptPolicy policy) |