Diff
Modified: trunk/Source/WebCore/PAL/pal/spi/cf/CFNetworkSPI.h (294946 => 294947)
--- trunk/Source/WebCore/PAL/pal/spi/cf/CFNetworkSPI.h 2022-05-27 18:58:43 UTC (rev 294946)
+++ trunk/Source/WebCore/PAL/pal/spi/cf/CFNetworkSPI.h 2022-05-27 19:20:27 UTC (rev 294947)
@@ -168,7 +168,6 @@
- (void)removeCookiesSinceDate:(NSDate *)date;
- (id)_initWithCFHTTPCookieStorage:(CFHTTPCookieStorageRef)cfStorage;
- (CFHTTPCookieStorageRef)_cookieStorage;
-- (void)_saveCookies;
- (void)_saveCookies:(dispatch_block_t) completionHandler;
#if HAVE(CFNETWORK_OVERRIDE_SESSION_COOKIE_ACCEPT_POLICY)
@property (nonatomic, readwrite) BOOL _overrideSessionCookieAcceptPolicy;
Modified: trunk/Source/WebCore/inspector/agents/InspectorPageAgent.cpp (294946 => 294947)
--- trunk/Source/WebCore/inspector/agents/InspectorPageAgent.cpp 2022-05-27 18:58:43 UTC (rev 294946)
+++ trunk/Source/WebCore/inspector/agents/InspectorPageAgent.cpp 2022-05-27 19:20:27 UTC (rev 294947)
@@ -674,7 +674,7 @@
for (Frame* frame = &m_inspectedPage.mainFrame(); frame; frame = frame->tree().traverseNext()) {
if (auto* document = frame->document()) {
if (auto* page = document->page())
- page->cookieJar().deleteCookie(*document, parsedURL, cookieName);
+ page->cookieJar().deleteCookie(*document, parsedURL, cookieName, [] { });
}
}
Modified: trunk/Source/WebCore/loader/CookieJar.cpp (294946 => 294947)
--- trunk/Source/WebCore/loader/CookieJar.cpp 2022-05-27 18:58:43 UTC (rev 294946)
+++ trunk/Source/WebCore/loader/CookieJar.cpp 2022-05-27 19:20:27 UTC (rev 294947)
@@ -186,12 +186,14 @@
ASSERT_NOT_REACHED();
}
-void CookieJar::deleteCookie(const Document&, const URL& url, const String& cookieName)
+void CookieJar::deleteCookie(const Document&, const URL& url, const String& cookieName, CompletionHandler<void()>&& completionHandler)
{
if (auto* session = m_storageSessionProvider->storageSession())
- session->deleteCookie(url, cookieName);
- else
+ session->deleteCookie(url, cookieName, WTFMove(completionHandler));
+ else {
ASSERT_NOT_REACHED();
+ completionHandler();
+ }
}
}
Modified: trunk/Source/WebCore/loader/CookieJar.h (294946 => 294947)
--- trunk/Source/WebCore/loader/CookieJar.h 2022-05-27 18:58:43 UTC (rev 294946)
+++ trunk/Source/WebCore/loader/CookieJar.h 2022-05-27 19:20:27 UTC (rev 294947)
@@ -60,7 +60,7 @@
virtual std::pair<String, SecureCookiesAccessed> cookieRequestHeaderFieldValue(const URL& firstParty, const SameSiteInfo&, const URL&, std::optional<FrameIdentifier>, std::optional<PageIdentifier>, IncludeSecureCookies) const;
virtual bool getRawCookies(const Document&, const URL&, Vector<Cookie>&) const;
virtual void setRawCookie(const Document&, const Cookie&);
- virtual void deleteCookie(const Document&, const URL&, const String& cookieName);
+ virtual void deleteCookie(const Document&, const URL&, const String& cookieName, CompletionHandler<void()>&&);
// Cookie Cache.
virtual void clearCache() { }
Modified: trunk/Source/WebCore/platform/network/NetworkStorageSession.cpp (294946 => 294947)
--- trunk/Source/WebCore/platform/network/NetworkStorageSession.cpp 2022-05-27 18:58:43 UTC (rev 294946)
+++ trunk/Source/WebCore/platform/network/NetworkStorageSession.cpp 2022-05-27 19:20:27 UTC (rev 294947)
@@ -27,6 +27,7 @@
#include "NetworkStorageSession.h"
#include "Cookie.h"
+#include "CookieJar.h"
#include "HTTPCookieAcceptPolicy.h"
#include "RuntimeApplicationChecks.h"
#include <wtf/NeverDestroyed.h>
@@ -431,4 +432,9 @@
#endif // ENABLE(INTELLIGENT_TRACKING_PREVENTION)
+void NetworkStorageSession::deleteCookiesForHostnames(const Vector<String>& cookieHostNames, CompletionHandler<void()>&& completionHandler)
+{
+ deleteCookiesForHostnames(cookieHostNames, IncludeHttpOnlyCookies::Yes, WTFMove(completionHandler));
}
+
+}
Modified: trunk/Source/WebCore/platform/network/NetworkStorageSession.h (294946 => 294947)
--- trunk/Source/WebCore/platform/network/NetworkStorageSession.h 2022-05-27 18:58:43 UTC (rev 294946)
+++ trunk/Source/WebCore/platform/network/NetworkStorageSession.h 2022-05-27 19:20:27 UTC (rev 294947)
@@ -159,17 +159,16 @@
WEBCORE_EXPORT void setCookie(const Cookie&);
WEBCORE_EXPORT void setCookies(const Vector<Cookie>&, const URL&, const URL& mainDocumentURL);
WEBCORE_EXPORT void setCookiesFromDOM(const URL& firstParty, const SameSiteInfo&, const URL&, std::optional<FrameIdentifier>, std::optional<PageIdentifier>, ShouldAskITP, const String&, ShouldRelaxThirdPartyCookieBlocking) const;
- WEBCORE_EXPORT void deleteCookie(const Cookie&);
- WEBCORE_EXPORT void deleteCookie(const URL&, const String&) const;
- WEBCORE_EXPORT void deleteAllCookies();
- WEBCORE_EXPORT void deleteAllCookiesModifiedSince(WallTime);
- WEBCORE_EXPORT void deleteCookiesForHostnames(const Vector<String>& cookieHostNames);
- WEBCORE_EXPORT void deleteCookiesForHostnames(const Vector<String>& cookieHostNames, IncludeHttpOnlyCookies);
+ WEBCORE_EXPORT void deleteCookie(const Cookie&, CompletionHandler<void()>&&);
+ WEBCORE_EXPORT void deleteCookie(const URL&, const String&, CompletionHandler<void()>&&) const;
+ WEBCORE_EXPORT void deleteAllCookies(CompletionHandler<void()>&&);
+ WEBCORE_EXPORT void deleteAllCookiesModifiedSince(WallTime, CompletionHandler<void()>&&);
+ WEBCORE_EXPORT void deleteCookiesForHostnames(const Vector<String>& cookieHostNames, CompletionHandler<void()>&&);
+ WEBCORE_EXPORT void deleteCookiesForHostnames(const Vector<String>& cookieHostNames, IncludeHttpOnlyCookies, CompletionHandler<void()>&&);
WEBCORE_EXPORT Vector<Cookie> getAllCookies();
WEBCORE_EXPORT Vector<Cookie> getCookies(const URL&);
WEBCORE_EXPORT void hasCookies(const RegistrableDomain&, CompletionHandler<void(bool)>&&) const;
WEBCORE_EXPORT bool getRawCookies(const URL& firstParty, const SameSiteInfo&, const URL&, std::optional<FrameIdentifier>, std::optional<PageIdentifier>, ShouldAskITP, ShouldRelaxThirdPartyCookieBlocking, Vector<Cookie>&) const;
- WEBCORE_EXPORT void flushCookieStore();
WEBCORE_EXPORT void getHostnamesWithCookies(HashSet<String>& hostnames);
WEBCORE_EXPORT std::pair<String, bool> cookiesForDOM(const URL& firstParty, const SameSiteInfo&, const URL&, std::optional<FrameIdentifier>, std::optional<PageIdentifier>, IncludeSecureCookies, ShouldAskITP, ShouldRelaxThirdPartyCookieBlocking) const;
WEBCORE_EXPORT std::pair<String, bool> cookieRequestHeaderFieldValue(const URL& firstParty, const SameSiteInfo&, const URL&, std::optional<FrameIdentifier>, std::optional<PageIdentifier>, IncludeSecureCookies, ShouldAskITP, ShouldRelaxThirdPartyCookieBlocking) const;
@@ -237,7 +236,7 @@
RetainPtr<NSArray> httpCookiesForURL(CFHTTPCookieStorageRef, NSURL *firstParty, const std::optional<SameSiteInfo>&, NSURL *) const;
RetainPtr<NSArray> cookiesForURL(const URL& firstParty, const SameSiteInfo&, const URL&, std::optional<FrameIdentifier>, std::optional<PageIdentifier>, ShouldAskITP, ShouldRelaxThirdPartyCookieBlocking) const;
void setHTTPCookiesForURL(CFHTTPCookieStorageRef, NSArray *cookies, NSURL *, NSURL *mainDocumentURL, const SameSiteInfo&) const;
- void deleteHTTPCookie(CFHTTPCookieStorageRef, NSHTTPCookie *) const;
+ void deleteHTTPCookie(CFHTTPCookieStorageRef, NSHTTPCookie *, CompletionHandler<void()>&&) const;
#endif
#if HAVE(COOKIE_CHANGE_LISTENER_API)
@@ -250,7 +249,7 @@
#if PLATFORM(COCOA) || USE(CFURLCONNECTION)
RetainPtr<CFURLStorageSessionRef> m_platformSession;
RetainPtr<CFHTTPCookieStorageRef> m_platformCookieStorage;
- bool m_isInMemoryCookieStore { false };
+ const bool m_isInMemoryCookieStore { false };
#elif USE(SOUP)
static void cookiesDidChange(NetworkStorageSession*);
Modified: trunk/Source/WebCore/platform/network/cf/NetworkStorageSessionCFNetWin.cpp (294946 => 294947)
--- trunk/Source/WebCore/platform/network/cf/NetworkStorageSessionCFNetWin.cpp 2022-05-27 18:58:43 UTC (rev 294946)
+++ trunk/Source/WebCore/platform/network/cf/NetworkStorageSessionCFNetWin.cpp 2022-05-27 19:20:27 UTC (rev 294947)
@@ -347,7 +347,7 @@
return true;
}
-void NetworkStorageSession::deleteCookie(const URL& url, const String& name) const
+void NetworkStorageSession::deleteCookie(const URL& url, const String& name, CompletionHandler<void()>&& completionHandler) const
{
RetainPtr<CFHTTPCookieStorageRef> cookieStorage = this->cookieStorage();
@@ -364,6 +364,7 @@
break;
}
}
+ completionHandler();
}
void NetworkStorageSession::getHostnamesWithCookies(HashSet<String>& hostnames)
@@ -380,17 +381,20 @@
}
}
-void NetworkStorageSession::deleteAllCookies()
+void NetworkStorageSession::deleteAllCookies(CompletionHandler<void()>&& completionHandler)
{
CFHTTPCookieStorageDeleteAllCookies(cookieStorage().get());
+ completionHandler();
}
-void NetworkStorageSession::deleteCookiesForHostnames(const Vector<String>& hostnames)
+void NetworkStorageSession::deleteCookiesForHostnames(const Vector<String>&, IncludeHttpOnlyCookies, CompletionHandler<void()>&& completionHandler)
{
+ completionHandler();
}
-void NetworkStorageSession::deleteAllCookiesModifiedSince(WallTime)
+void NetworkStorageSession::deleteAllCookiesModifiedSince(WallTime, CompletionHandler<void()>&& completionHandler)
{
+ completionHandler();
}
} // namespace WebCore
Modified: trunk/Source/WebCore/platform/network/cocoa/NetworkStorageSessionCocoa.mm (294946 => 294947)
--- trunk/Source/WebCore/platform/network/cocoa/NetworkStorageSessionCocoa.mm 2022-05-27 18:58:43 UTC (rev 294946)
+++ trunk/Source/WebCore/platform/network/cocoa/NetworkStorageSessionCocoa.mm 2022-05-27 19:20:27 UTC (rev 294947)
@@ -34,6 +34,7 @@
#import <pal/spi/cf/CFNetworkSPI.h>
#import <wtf/BlockObjCExceptions.h>
#import <wtf/BlockPtr.h>
+#import <wtf/CallbackAggregator.h>
#import <wtf/ProcessPrivilege.h>
#import <wtf/URL.h>
#import <wtf/cocoa/VectorCocoa.h>
@@ -75,10 +76,18 @@
END_BLOCK_OBJC_EXCEPTIONS
}
-void NetworkStorageSession::deleteCookie(const Cookie& cookie)
+void NetworkStorageSession::deleteCookie(const Cookie& cookie, CompletionHandler<void()>&& completionHandler)
{
ASSERT(hasProcessPrivilege(ProcessPrivilege::CanAccessRawCookies) || m_isInMemoryCookieStore);
- [nsCookieStorage() deleteCookie:(NSHTTPCookie *)cookie];
+
+ auto work = [completionHandler = WTFMove(completionHandler), cookieStorage = RetainPtr { nsCookieStorage() }, cookie = RetainPtr { (NSHTTPCookie *)cookie }] () mutable {
+ [cookieStorage deleteCookie:cookie.get()];
+ ensureOnMainThread(WTFMove(completionHandler));
+ };
+
+ if (m_isInMemoryCookieStore)
+ return work();
+ dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), makeBlockPtr(WTFMove(work)).get());
}
static Vector<Cookie> nsCookiesToCookieVector(NSArray<NSHTTPCookie *> *nsCookies, const Function<bool(NSHTTPCookie *)>& filter = { })
@@ -137,23 +146,20 @@
}
}
+ auto aggregator = CallbackAggregator::create([completionHandler = WTFMove(completionHandler), newCookiesToAdd = WTFMove(newCookiesToAdd), cookieStorage = RetainPtr { nsCookieStorage() }] () mutable {
+ BEGIN_BLOCK_OBJC_EXCEPTIONS
+ for (NSHTTPCookie *newCookie in newCookiesToAdd.get())
+ [cookieStorage setCookie:newCookie];
+ END_BLOCK_OBJC_EXCEPTIONS
+ completionHandler();
+ });
+
BEGIN_BLOCK_OBJC_EXCEPTIONS
for (NSHTTPCookie *oldCookie in oldCookiesToDelete.get())
- deleteHTTPCookie(cookieStorage().get(), oldCookie);
-
- for (NSHTTPCookie *newCookie in newCookiesToAdd.get())
- [nsCookieStorage() setCookie:newCookie];
+ deleteHTTPCookie(cookieStorage().get(), oldCookie, [aggregator] { });
END_BLOCK_OBJC_EXCEPTIONS
-
- completionHandler();
}
-void NetworkStorageSession::flushCookieStore()
-{
- ASSERT(hasProcessPrivilege(ProcessPrivilege::CanAccessRawCookies));
- [nsCookieStorage() _saveCookies];
-}
-
NSHTTPCookieStorage *NetworkStorageSession::nsCookieStorage() const
{
ASSERT(hasProcessPrivilege(ProcessPrivilege::CanAccessRawCookies) || m_isInMemoryCookieStore);
@@ -234,16 +240,22 @@
return [NSHTTPCookie _cf2nsCookies:cookies.get()];
}
-void NetworkStorageSession::deleteHTTPCookie(CFHTTPCookieStorageRef cookieStorage, NSHTTPCookie *cookie) const
+void NetworkStorageSession::deleteHTTPCookie(CFHTTPCookieStorageRef cookieStorage, NSHTTPCookie *cookie, CompletionHandler<void()>&& completionHandler) const
{
ASSERT(hasProcessPrivilege(ProcessPrivilege::CanAccessRawCookies) || m_isInMemoryCookieStore);
- if (!cookieStorage) {
- RELEASE_ASSERT(!m_isInMemoryCookieStore);
- [[NSHTTPCookieStorage sharedHTTPCookieStorage] deleteCookie:cookie];
- return;
- }
- CFHTTPCookieStorageDeleteCookie(cookieStorage, [cookie _GetInternalCFHTTPCookie]);
+ auto work = [completionHandler = WTFMove(completionHandler), cookieStorage = RetainPtr { cookieStorage }, cookie = RetainPtr { cookie }, isInMemoryCookieStore = m_isInMemoryCookieStore] () mutable {
+ if (!cookieStorage) {
+ RELEASE_ASSERT(!isInMemoryCookieStore);
+ [[NSHTTPCookieStorage sharedHTTPCookieStorage] deleteCookie:cookie.get()];
+ } else
+ CFHTTPCookieStorageDeleteCookie(cookieStorage.get(), [cookie _GetInternalCFHTTPCookie]);
+ ensureOnMainThread(WTFMove(completionHandler));
+ };
+
+ if (m_isInMemoryCookieStore)
+ return work();
+ dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), makeBlockPtr(WTFMove(work)).get());
}
#if !PLATFORM(WATCHOS) && !PLATFORM(APPLETV)
@@ -381,24 +393,6 @@
return { String(), false };
}
-static void deleteAllHTTPCookies(CFHTTPCookieStorageRef cookieStorage)
-{
- ASSERT(hasProcessPrivilege(ProcessPrivilege::CanAccessRawCookies));
-
- if (!cookieStorage) {
- NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
- NSArray *cookies = [cookieStorage cookies];
- if (!cookies)
- return;
-
- for (NSHTTPCookie *cookie in cookies)
- [cookieStorage deleteCookie:cookie];
- return;
- }
-
- CFHTTPCookieStorageDeleteAllCookies(cookieStorage);
-}
-
std::pair<String, bool> NetworkStorageSession::cookiesForDOM(const URL& firstParty, const SameSiteInfo& sameSiteInfo, const URL& url, std::optional<FrameIdentifier> frameID, std::optional<PageIdentifier> pageID, IncludeSecureCookies includeSecureCookies, ShouldAskITP shouldAskITP, ShouldRelaxThirdPartyCookieBlocking shouldRelaxThirdPartyCookieBlocking) const
{
return cookiesForSession(firstParty, sameSiteInfo, url, frameID, pageID, DoNotIncludeHTTPOnly, includeSecureCookies, shouldAskITP, shouldRelaxThirdPartyCookieBlocking);
@@ -514,10 +508,12 @@
return true;
}
-void NetworkStorageSession::deleteCookie(const URL& url, const String& cookieName) const
+void NetworkStorageSession::deleteCookie(const URL& url, const String& cookieName, CompletionHandler<void()>&& completionHandler) const
{
ASSERT(hasProcessPrivilege(ProcessPrivilege::CanAccessRawCookies));
+ auto aggregator = CallbackAggregator::create(WTFMove(completionHandler));
+
BEGIN_BLOCK_OBJC_EXCEPTIONS
RetainPtr<CFHTTPCookieStorageRef> cookieStorage = this->cookieStorage();
@@ -529,7 +525,7 @@
for (NSUInteger i = 0; i < count; ++i) {
NSHTTPCookie *cookie = (NSHTTPCookie *)[cookies objectAtIndex:i];
if ([[cookie name] isEqualToString:cookieNameString])
- deleteHTTPCookie(cookieStorage.get(), cookie);
+ deleteHTTPCookie(cookieStorage.get(), cookie, [aggregator] { });
}
END_BLOCK_OBJC_EXCEPTIONS
@@ -551,20 +547,36 @@
END_BLOCK_OBJC_EXCEPTIONS
}
-void NetworkStorageSession::deleteAllCookies()
+void NetworkStorageSession::deleteAllCookies(CompletionHandler<void()>&& completionHandler)
{
- deleteAllHTTPCookies(cookieStorage().get());
-}
+ ASSERT(hasProcessPrivilege(ProcessPrivilege::CanAccessRawCookies));
-void NetworkStorageSession::deleteCookiesForHostnames(const Vector<String>& hostnames)
-{
- deleteCookiesForHostnames(hostnames, IncludeHttpOnlyCookies::Yes);
+ auto work = [completionHandler = WTFMove(completionHandler), cookieStorage = RetainPtr { cookieStorage() }] () mutable {
+ if (!cookieStorage) {
+ NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
+ NSArray *cookies = [cookieStorage cookies];
+ for (NSHTTPCookie *cookie in cookies)
+ [cookieStorage deleteCookie:cookie];
+ } else
+ CFHTTPCookieStorageDeleteAllCookies(cookieStorage.get());
+ ensureOnMainThread(WTFMove(completionHandler));
+ };
+
+ if (m_isInMemoryCookieStore)
+ return work();
+ dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), makeBlockPtr(WTFMove(work)).get());
}
-void NetworkStorageSession::deleteCookiesForHostnames(const Vector<String>& hostnames, IncludeHttpOnlyCookies includeHttpOnlyCookies)
+void NetworkStorageSession::deleteCookiesForHostnames(const Vector<String>& hostnames, IncludeHttpOnlyCookies includeHttpOnlyCookies, CompletionHandler<void()>&& completionHandler)
{
ASSERT(hasProcessPrivilege(ProcessPrivilege::CanAccessRawCookies) || m_isInMemoryCookieStore);
+ auto aggregator = CallbackAggregator::create([completionHandler = WTFMove(completionHandler), cookieStorage = RetainPtr { nsCookieStorage() }] () mutable {
+ [cookieStorage _saveCookies:makeBlockPtr([completionHandler = WTFMove(completionHandler)] () mutable {
+ ensureOnMainThread(WTFMove(completionHandler));
+ }).get()];
+ });
+
BEGIN_BLOCK_OBJC_EXCEPTIONS
RetainPtr<CFHTTPCookieStorageRef> cookieStorage = this->cookieStorage();
@@ -587,28 +599,31 @@
continue;
for (auto& cookie : it->value)
- deleteHTTPCookie(cookieStorage.get(), cookie.get());
+ deleteHTTPCookie(cookieStorage.get(), cookie.get(), [aggregator] { });
}
- [nsCookieStorage() _saveCookies];
-
END_BLOCK_OBJC_EXCEPTIONS
}
-void NetworkStorageSession::deleteAllCookiesModifiedSince(WallTime timePoint)
+void NetworkStorageSession::deleteAllCookiesModifiedSince(WallTime timePoint, CompletionHandler<void()>&& completionHandler)
{
ASSERT(hasProcessPrivilege(ProcessPrivilege::CanAccessRawCookies));
+ // FIXME: Do we still need this check? Probably not.
if (![NSHTTPCookieStorage instancesRespondToSelector:@selector(removeCookiesSinceDate:)])
- return;
+ return completionHandler();
NSTimeInterval timeInterval = timePoint.secondsSinceEpoch().seconds();
- NSDate *date = [NSDate dateWithTimeIntervalSince1970:timeInterval];
+ auto work = [completionHandler = WTFMove(completionHandler), storage = RetainPtr { nsCookieStorage() }, date = RetainPtr { [NSDate dateWithTimeIntervalSince1970:timeInterval] }] () mutable {
+ [storage removeCookiesSinceDate:date.get()];
+ [storage _saveCookies:makeBlockPtr([completionHandler = WTFMove(completionHandler)] () mutable {
+ ensureOnMainThread(WTFMove(completionHandler));
+ }).get()];
+ };
- auto *storage = nsCookieStorage();
-
- [storage removeCookiesSinceDate:date];
- [storage _saveCookies];
+ if (m_isInMemoryCookieStore)
+ return work();
+ dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), makeBlockPtr(WTFMove(work)).get());
}
Vector<Cookie> NetworkStorageSession::domCookiesForHost(const String& host)
Modified: trunk/Source/WebCore/platform/network/curl/NetworkStorageSessionCurl.cpp (294946 => 294947)
--- trunk/Source/WebCore/platform/network/curl/NetworkStorageSessionCurl.cpp 2022-05-27 18:58:43 UTC (rev 294946)
+++ trunk/Source/WebCore/platform/network/curl/NetworkStorageSessionCurl.cpp 2022-05-27 19:20:27 UTC (rev 294947)
@@ -152,38 +152,38 @@
cookieDatabase().setCookie(cookie);
}
-void NetworkStorageSession::deleteCookie(const Cookie& cookie)
+void NetworkStorageSession::deleteCookie(const Cookie& cookie, CompletionHandler<void()>&& completionHandler)
{
String url = "" ? "https"_s : "http"_s, "://"_s, cookie.domain, cookie.path);
cookieDatabase().deleteCookie(url, cookie.name);
+ completionHandler();
}
-void NetworkStorageSession::deleteCookie(const URL& url, const String& name) const
+void NetworkStorageSession::deleteCookie(const URL& url, const String& name, CompletionHandler<void()>&& completionHandler) const
{
cookieDatabase().deleteCookie(url.string(), name);
+ completionHandler();
}
-void NetworkStorageSession::deleteAllCookies()
+void NetworkStorageSession::deleteAllCookies(CompletionHandler<void()>&& completionHandler)
{
cookieDatabase().deleteAllCookies();
+ completionHandler();
}
-void NetworkStorageSession::deleteAllCookiesModifiedSince(WallTime)
+void NetworkStorageSession::deleteAllCookiesModifiedSince(WallTime, CompletionHandler<void()>&& completionHandler)
{
// FIXME: Not yet implemented
+ completionHandler();
}
-void NetworkStorageSession::deleteCookiesForHostnames(const Vector<String>& cookieHostNames, IncludeHttpOnlyCookies includeHttpOnlyCookies)
+void NetworkStorageSession::deleteCookiesForHostnames(const Vector<String>& cookieHostNames, IncludeHttpOnlyCookies includeHttpOnlyCookies, CompletionHandler<void()>&& completionHandler)
{
for (auto hostname : cookieHostNames)
cookieDatabase().deleteCookiesForHostname(hostname, includeHttpOnlyCookies);
+ completionHandler();
}
-void NetworkStorageSession::deleteCookiesForHostnames(const Vector<String>& cookieHostNames)
-{
- deleteCookiesForHostnames(cookieHostNames, IncludeHttpOnlyCookies::Yes);
-}
-
Vector<Cookie> NetworkStorageSession::getAllCookies()
{
return cookieDatabase().getAllCookies();
@@ -216,11 +216,6 @@
return true;
}
-void NetworkStorageSession::flushCookieStore()
-{
- // FIXME: Implement for WebKit to use.
-}
-
std::pair<String, bool> NetworkStorageSession::cookieRequestHeaderFieldValue(const URL& firstParty, const SameSiteInfo&, const URL& url, std::optional<FrameIdentifier>, std::optional<PageIdentifier>, IncludeSecureCookies, ShouldAskITP, ShouldRelaxThirdPartyCookieBlocking) const
{
// FIXME: This should filter secure cookies out if the caller requests it.
Modified: trunk/Source/WebCore/platform/network/soup/NetworkStorageSessionSoup.cpp (294946 => 294947)
--- trunk/Source/WebCore/platform/network/soup/NetworkStorageSessionSoup.cpp 2022-05-27 18:58:43 UTC (rev 294946)
+++ trunk/Source/WebCore/platform/network/soup/NetworkStorageSessionSoup.cpp 2022-05-27 19:20:27 UTC (rev 294947)
@@ -410,22 +410,23 @@
soup_cookie_jar_add_cookie(cookieStorage(), cookie.toSoupCookie());
}
-void NetworkStorageSession::deleteCookie(const Cookie& cookie)
+void NetworkStorageSession::deleteCookie(const Cookie& cookie, CompletionHandler<void()>&& completionHandler)
{
GUniquePtr<SoupCookie> targetCookie(cookie.toSoupCookie());
soup_cookie_jar_delete_cookie(cookieStorage(), targetCookie.get());
+ completionHandler();
}
-void NetworkStorageSession::deleteCookie(const URL& url, const String& name) const
+void NetworkStorageSession::deleteCookie(const URL& url, const String& name, CompletionHandler<void()>&& completionHandler) const
{
auto uri = urlToSoupURI(url);
if (!uri)
- return;
+ return completionHandler();
SoupCookieJar* jar = cookieStorage();
GUniquePtr<GSList> cookies(soup_cookie_jar_get_cookie_list(jar, uri.get(), TRUE));
if (!cookies)
- return;
+ return completionHandler();
CString cookieName = name.utf8();
bool wasDeleted = false;
@@ -437,9 +438,10 @@
}
soup_cookie_free(cookie);
}
+ completionHandler();
}
-void NetworkStorageSession::deleteAllCookies()
+void NetworkStorageSession::deleteAllCookies(CompletionHandler<void()>&& completionHandler)
{
SoupCookieJar* cookieJar = cookieStorage();
GUniquePtr<GSList> cookies(soup_cookie_jar_all_cookies(cookieJar));
@@ -448,18 +450,21 @@
soup_cookie_jar_delete_cookie(cookieJar, cookie);
soup_cookie_free(cookie);
}
+ completionHandler();
}
-void NetworkStorageSession::deleteAllCookiesModifiedSince(WallTime timestamp)
+void NetworkStorageSession::deleteAllCookiesModifiedSince(WallTime timestamp, CompletionHandler<void()>&& completionHandler)
{
// FIXME: Add support for deleting cookies modified since the given timestamp. It should probably be added to libsoup.
if (timestamp == WallTime::fromRawSeconds(0))
- deleteAllCookies();
- else
+ deleteAllCookies(WTFMove(completionHandler));
+ else {
g_warning("Deleting cookies modified since a given time span is not supported yet");
+ completionHandler();
+ }
}
-void NetworkStorageSession::deleteCookiesForHostnames(const Vector<String>& hostnames, IncludeHttpOnlyCookies includeHttpOnlyCookies)
+void NetworkStorageSession::deleteCookiesForHostnames(const Vector<String>& hostnames, IncludeHttpOnlyCookies includeHttpOnlyCookies, CompletionHandler<void()>&& completionHandler)
{
SoupCookieJar* cookieJar = cookieStorage();
for (const auto& hostname : hostnames) {
@@ -475,13 +480,9 @@
soup_cookie_jar_delete_cookie(cookieJar, cookie.get());
}
}
+ completionHandler();
}
-void NetworkStorageSession::deleteCookiesForHostnames(const Vector<String>& hostnames)
-{
- deleteCookiesForHostnames(hostnames, IncludeHttpOnlyCookies::Yes);
-}
-
void NetworkStorageSession::getHostnamesWithCookies(HashSet<String>& hostnames)
{
GUniquePtr<GSList> cookies(soup_cookie_jar_all_cookies(cookieStorage()));
@@ -648,11 +649,6 @@
return cookieRequestHeaderFieldValue(headerFieldProxy.firstParty, headerFieldProxy.sameSiteInfo, headerFieldProxy.url, headerFieldProxy.frameID, headerFieldProxy.pageID, headerFieldProxy.includeSecureCookies, ShouldAskITP::Yes, ShouldRelaxThirdPartyCookieBlocking::No);
}
-void NetworkStorageSession::flushCookieStore()
-{
- // FIXME: Implement for WK2 to use.
-}
-
} // namespace WebCore
#endif // USE(SOUP)
Modified: trunk/Source/WebKit/NetworkProcess/Cookies/WebCookieManager.cpp (294946 => 294947)
--- trunk/Source/WebKit/NetworkProcess/Cookies/WebCookieManager.cpp 2022-05-27 18:58:43 UTC (rev 294946)
+++ trunk/Source/WebKit/NetworkProcess/Cookies/WebCookieManager.cpp 2022-05-27 19:20:27 UTC (rev 294947)
@@ -63,30 +63,36 @@
completionHandler(copyToVector(hostnames));
}
-void WebCookieManager::deleteCookiesForHostnames(PAL::SessionID sessionID, const Vector<String>& hostnames)
+void WebCookieManager::deleteCookiesForHostnames(PAL::SessionID sessionID, const Vector<String>& hostnames, CompletionHandler<void()>&& completionHandler)
{
if (auto* storageSession = m_process.storageSession(sessionID))
- storageSession->deleteCookiesForHostnames(hostnames);
+ storageSession->deleteCookiesForHostnames(hostnames, WTFMove(completionHandler));
+ else
+ completionHandler();
}
-void WebCookieManager::deleteAllCookies(PAL::SessionID sessionID)
+void WebCookieManager::deleteAllCookies(PAL::SessionID sessionID, CompletionHandler<void()>&& completionHandler)
{
if (auto* storageSession = m_process.storageSession(sessionID))
- storageSession->deleteAllCookies();
+ storageSession->deleteAllCookies(WTFMove(completionHandler));
+ else
+ completionHandler();
}
void WebCookieManager::deleteCookie(PAL::SessionID sessionID, const Cookie& cookie, CompletionHandler<void()>&& completionHandler)
{
if (auto* storageSession = m_process.storageSession(sessionID))
- storageSession->deleteCookie(cookie);
- completionHandler();
+ storageSession->deleteCookie(cookie, WTFMove(completionHandler));
+ else
+ completionHandler();
}
void WebCookieManager::deleteAllCookiesModifiedSince(PAL::SessionID sessionID, WallTime time, CompletionHandler<void()>&& completionHandler)
{
if (auto* storageSession = m_process.storageSession(sessionID))
- storageSession->deleteAllCookiesModifiedSince(time);
- completionHandler();
+ storageSession->deleteAllCookiesModifiedSince(time, WTFMove(completionHandler));
+ else
+ completionHandler();
}
void WebCookieManager::getAllCookies(PAL::SessionID sessionID, CompletionHandler<void(Vector<WebCore::Cookie>&&)>&& completionHandler)
Modified: trunk/Source/WebKit/NetworkProcess/Cookies/WebCookieManager.h (294946 => 294947)
--- trunk/Source/WebKit/NetworkProcess/Cookies/WebCookieManager.h 2022-05-27 18:58:43 UTC (rev 294946)
+++ trunk/Source/WebKit/NetworkProcess/Cookies/WebCookieManager.h 2022-05-27 19:20:27 UTC (rev 294947)
@@ -72,8 +72,8 @@
void getHostnamesWithCookies(PAL::SessionID, CompletionHandler<void(Vector<String>&&)>&&);
void deleteCookie(PAL::SessionID, const WebCore::Cookie&, CompletionHandler<void()>&&);
- void deleteCookiesForHostnames(PAL::SessionID, const Vector<String>&);
- void deleteAllCookies(PAL::SessionID);
+ void deleteCookiesForHostnames(PAL::SessionID, const Vector<String>&, CompletionHandler<void()>&&);
+ void deleteAllCookies(PAL::SessionID, CompletionHandler<void()>&&);
void deleteAllCookiesModifiedSince(PAL::SessionID, WallTime, CompletionHandler<void()>&&);
void setCookie(PAL::SessionID, const Vector<WebCore::Cookie>&, CompletionHandler<void()>&&);
Modified: trunk/Source/WebKit/NetworkProcess/Cookies/WebCookieManager.messages.in (294946 => 294947)
--- trunk/Source/WebKit/NetworkProcess/Cookies/WebCookieManager.messages.in 2022-05-27 18:58:43 UTC (rev 294946)
+++ trunk/Source/WebKit/NetworkProcess/Cookies/WebCookieManager.messages.in 2022-05-27 19:20:27 UTC (rev 294947)
@@ -25,8 +25,8 @@
messages -> WebCookieManager NotRefCounted {
void GetHostnamesWithCookies(PAL::SessionID sessionID) -> (Vector<String> hostnames)
- void DeleteCookiesForHostnames(PAL::SessionID sessionID, Vector<String> hostnames)
- void DeleteAllCookies(PAL::SessionID sessionID)
+ void DeleteCookiesForHostnames(PAL::SessionID sessionID, Vector<String> hostnames) -> ()
+ void DeleteAllCookies(PAL::SessionID sessionID) -> ()
void SetCookie(PAL::SessionID sessionID, Vector<WebCore::Cookie> cookie) -> ()
void SetCookies(PAL::SessionID sessionID, Vector<WebCore::Cookie> cookies, URL url, URL mainDocumentURL) -> ()
Modified: trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp (294946 => 294947)
--- trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp 2022-05-27 18:58:43 UTC (rev 294946)
+++ trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp 2022-05-27 19:20:27 UTC (rev 294947)
@@ -837,12 +837,12 @@
networkStorageSession->setCookie(cookie);
}
-void NetworkConnectionToWebProcess::deleteCookie(const URL& url, const String& cookieName)
+void NetworkConnectionToWebProcess::deleteCookie(const URL& url, const String& cookieName, CompletionHandler<void()>&& completionHandler)
{
auto* networkStorageSession = storageSession();
if (!networkStorageSession)
- return;
- networkStorageSession->deleteCookie(url, cookieName);
+ return completionHandler();
+ networkStorageSession->deleteCookie(url, cookieName, WTFMove(completionHandler));
}
void NetworkConnectionToWebProcess::domCookiesForHost(const String& host, bool subscribeToCookieChangeNotifications, CompletionHandler<void(const Vector<WebCore::Cookie>&)>&& completionHandler)
Modified: trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h (294946 => 294947)
--- trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h 2022-05-27 18:58:43 UTC (rev 294946)
+++ trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h 2022-05-27 19:20:27 UTC (rev 294947)
@@ -244,7 +244,7 @@
void cookieRequestHeaderFieldValue(const URL& firstParty, const WebCore::SameSiteInfo&, const URL&, std::optional<WebCore::FrameIdentifier>, std::optional<WebCore::PageIdentifier>, WebCore::IncludeSecureCookies, WebCore::ShouldAskITP, WebCore::ShouldRelaxThirdPartyCookieBlocking, CompletionHandler<void(String cookieString, bool secureCookiesAccessed)>&&);
void getRawCookies(const URL& firstParty, const WebCore::SameSiteInfo&, const URL&, std::optional<WebCore::FrameIdentifier>, std::optional<WebCore::PageIdentifier>, WebCore::ShouldAskITP, WebCore::ShouldRelaxThirdPartyCookieBlocking, CompletionHandler<void(Vector<WebCore::Cookie>&&)>&&);
void setRawCookie(const WebCore::Cookie&);
- void deleteCookie(const URL&, const String& cookieName);
+ void deleteCookie(const URL&, const String& cookieName, CompletionHandler<void()>&&);
void registerFileBlobURL(const URL&, const String& path, const String& replacementPath, SandboxExtension::Handle&&, const String& contentType);
void registerBlobURL(const URL&, Vector<WebCore::BlobPart>&&, const String& contentType);
Modified: trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.messages.in (294946 => 294947)
--- trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.messages.in 2022-05-27 18:58:43 UTC (rev 294946)
+++ trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.messages.in 2022-05-27 19:20:27 UTC (rev 294947)
@@ -42,7 +42,7 @@
CookieRequestHeaderFieldValue(URL firstParty, struct WebCore::SameSiteInfo sameSiteInfo, URL url, std::optional<WebCore::FrameIdentifier> frameID, std::optional<WebCore::PageIdentifier> pageID, enum:bool WebCore::IncludeSecureCookies includeSecureCookies, enum:bool WebCore::ShouldAskITP shouldAskITP, enum:bool WebCore::ShouldRelaxThirdPartyCookieBlocking shouldRelaxThirdPartyCookieBlocking) -> (String cookieString, bool didAccessSecureCookies) Synchronous
GetRawCookies(URL firstParty, struct WebCore::SameSiteInfo sameSiteInfo, URL url, std::optional<WebCore::FrameIdentifier> frameID, std::optional<WebCore::PageIdentifier> pageID, enum:bool WebCore::ShouldAskITP shouldAskITP, enum:bool WebCore::ShouldRelaxThirdPartyCookieBlocking shouldRelaxThirdPartyCookieBlocking) -> (Vector<WebCore::Cookie> cookies) Synchronous
SetRawCookie(struct WebCore::Cookie cookie)
- DeleteCookie(URL url, String cookieName)
+ DeleteCookie(URL url, String cookieName) -> ()
DomCookiesForHost(String host, bool subscribeToCookieChangeNotifications) -> (Vector<WebCore::Cookie> cookies) Synchronous
#if HAVE(COOKIE_CHANGE_LISTENER_API)
UnsubscribeFromCookieChangeNotifications(HashSet<String> hosts)
Modified: trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp (294946 => 294947)
--- trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp 2022-05-27 18:58:43 UTC (rev 294946)
+++ trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp 2022-05-27 19:20:27 UTC (rev 294947)
@@ -1501,6 +1501,11 @@
void NetworkProcess::deleteWebsiteData(PAL::SessionID sessionID, OptionSet<WebsiteDataType> websiteDataTypes, WallTime modifiedSince, CompletionHandler<void()>&& completionHandler)
{
+ auto clearTasksHandler = WTF::CallbackAggregator::create([completionHandler = WTFMove(completionHandler)]() mutable {
+ completionHandler();
+ RELEASE_LOG(Storage, "NetworkProcess::deleteWebsiteData finished deleting modified data");
+ });
+
RELEASE_LOG(Storage, "NetworkProcess::deleteWebsiteData started to delete data modified since %f for session %" PRIu64, modifiedSince.secondsSinceEpoch().value(), sessionID.toUInt64());
auto* session = networkSession(sessionID);
@@ -1511,7 +1516,7 @@
if (websiteDataTypes.contains(WebsiteDataType::Cookies)) {
if (auto* networkStorageSession = storageSession(sessionID))
- networkStorageSession->deleteAllCookiesModifiedSince(modifiedSince);
+ networkStorageSession->deleteAllCookiesModifiedSince(modifiedSince, [clearTasksHandler] { });
}
if (websiteDataTypes.contains(WebsiteDataType::Credentials)) {
@@ -1520,11 +1525,6 @@
WebCore::CredentialStorage::clearSessionCredentials();
}
- auto clearTasksHandler = WTF::CallbackAggregator::create([completionHandler = WTFMove(completionHandler)]() mutable {
- completionHandler();
- RELEASE_LOG(Storage, "NetworkProcess::deleteWebsiteData finished deleting modified data");
- });
-
if (websiteDataTypes.contains(WebsiteDataType::DOMCache) && session)
CacheStorage::Engine::clearAllCaches(*session, [clearTasksHandler] { });
@@ -1597,12 +1597,17 @@
void NetworkProcess::deleteWebsiteDataForOrigins(PAL::SessionID sessionID, OptionSet<WebsiteDataType> websiteDataTypes, const Vector<SecurityOriginData>& originDatas, const Vector<String>& cookieHostNames, const Vector<String>& HSTSCacheHostNames, const Vector<RegistrableDomain>& registrableDomains, CompletionHandler<void()>&& completionHandler)
{
+ auto clearTasksHandler = WTF::CallbackAggregator::create([completionHandler = WTFMove(completionHandler)]() mutable {
+ completionHandler();
+ RELEASE_LOG(Storage, "NetworkProcess::deleteWebsiteDataForOrigins finished deleting data");
+ });
+
RELEASE_LOG(Storage, "NetworkProcess::deleteWebsiteDataForOrigins started to delete data for session %" PRIu64, sessionID.toUInt64());
auto* session = networkSession(sessionID);
if (websiteDataTypes.contains(WebsiteDataType::Cookies)) {
if (auto* networkStorageSession = storageSession(sessionID))
- networkStorageSession->deleteCookiesForHostnames(cookieHostNames);
+ networkStorageSession->deleteCookiesForHostnames(cookieHostNames, [clearTasksHandler] { });
}
#if PLATFORM(COCOA) || USE(SOUP)
@@ -1617,11 +1622,6 @@
}
#endif
- auto clearTasksHandler = WTF::CallbackAggregator::create([completionHandler = WTFMove(completionHandler)]() mutable {
- completionHandler();
- RELEASE_LOG(Storage, "NetworkProcess::deleteWebsiteDataForOrigins finished deleting data");
- });
-
if (websiteDataTypes.contains(WebsiteDataType::PrivateClickMeasurements) && session) {
for (auto& originData : originDatas)
session->clearPrivateClickMeasurementForRegistrableDomain(RegistrableDomain::uncheckedCreateFromHost(originData.host), [clearTasksHandler] { });
@@ -1768,13 +1768,13 @@
networkStorageSession->getHostnamesWithCookies(hostNamesWithCookies);
hostnamesWithCookiesToDelete = filterForRegistrableDomains(domains.domainsToDeleteAllCookiesFor, hostNamesWithCookies);
- networkStorageSession->deleteCookiesForHostnames(hostnamesWithCookiesToDelete, WebCore::IncludeHttpOnlyCookies::Yes);
+ networkStorageSession->deleteCookiesForHostnames(hostnamesWithCookiesToDelete, WebCore::IncludeHttpOnlyCookies::Yes, [callbackAggregator] { });
for (const auto& host : hostnamesWithCookiesToDelete)
callbackAggregator->m_domains.add(RegistrableDomain::uncheckedCreateFromHost(host));
hostnamesWithCookiesToDelete = filterForRegistrableDomains(domains.domainsToDeleteAllButHttpOnlyCookiesFor, hostNamesWithCookies);
- networkStorageSession->deleteCookiesForHostnames(hostnamesWithCookiesToDelete, WebCore::IncludeHttpOnlyCookies::No);
+ networkStorageSession->deleteCookiesForHostnames(hostnamesWithCookiesToDelete, WebCore::IncludeHttpOnlyCookies::No, [callbackAggregator] { });
for (const auto& host : hostnamesWithCookiesToDelete)
callbackAggregator->m_domains.add(RegistrableDomain::uncheckedCreateFromHost(host));
Modified: trunk/Source/WebKit/UIProcess/API/APIHTTPCookieStore.cpp (294946 => 294947)
--- trunk/Source/WebKit/UIProcess/API/APIHTTPCookieStore.cpp 2022-05-27 18:58:43 UTC (rev 294946)
+++ trunk/Source/WebKit/UIProcess/API/APIHTTPCookieStore.cpp 2022-05-27 19:20:27 UTC (rev 294947)
@@ -119,9 +119,7 @@
if (!m_owningDataStore)
return completionHandler();
auto& cookieManager = m_owningDataStore->networkProcess().cookieManager();
- cookieManager.deleteAllCookies(m_owningDataStore->sessionID());
- // FIXME: The CompletionHandler should be passed to WebCookieManagerProxy::deleteAllCookies.
- RunLoop::main().dispatch(WTFMove(completionHandler));
+ cookieManager.deleteAllCookies(m_owningDataStore->sessionID(), WTFMove(completionHandler));
}
void HTTPCookieStore::setHTTPCookieAcceptPolicy(WebCore::HTTPCookieAcceptPolicy policy, CompletionHandler<void()>&& completionHandler)
Modified: trunk/Source/WebKit/UIProcess/Automation/WebAutomationSession.cpp (294946 => 294947)
--- trunk/Source/WebKit/UIProcess/Automation/WebAutomationSession.cpp 2022-05-27 18:58:43 UTC (rev 294946)
+++ trunk/Source/WebKit/UIProcess/Automation/WebAutomationSession.cpp 2022-05-27 19:20:27 UTC (rev 294947)
@@ -1489,7 +1489,7 @@
String host = activeURL.host().toString();
WebCookieManagerProxy& cookieManager = page->websiteDataStore().networkProcess().cookieManager();
- cookieManager.deleteCookiesForHostnames(page->websiteDataStore().sessionID(), { host, domainByAddingDotPrefixIfNeeded(host) });
+ cookieManager.deleteCookiesForHostnames(page->websiteDataStore().sessionID(), { host, domainByAddingDotPrefixIfNeeded(host) }, [] { });
return { };
}
Modified: trunk/Source/WebKit/UIProcess/WebCookieManagerProxy.cpp (294946 => 294947)
--- trunk/Source/WebKit/UIProcess/WebCookieManagerProxy.cpp 2022-05-27 18:58:43 UTC (rev 294946)
+++ trunk/Source/WebKit/UIProcess/WebCookieManagerProxy.cpp 2022-05-27 19:20:27 UTC (rev 294947)
@@ -61,16 +61,20 @@
callbackFunction({ });
}
-void WebCookieManagerProxy::deleteCookiesForHostnames(PAL::SessionID sessionID, const Vector<String>& hostnames)
+void WebCookieManagerProxy::deleteCookiesForHostnames(PAL::SessionID sessionID, const Vector<String>& hostnames, CompletionHandler<void()>&& completionHandler)
{
if (m_networkProcess)
- m_networkProcess->send(Messages::WebCookieManager::DeleteCookiesForHostnames(sessionID, hostnames), 0);
+ m_networkProcess->sendWithAsyncReply(Messages::WebCookieManager::DeleteCookiesForHostnames(sessionID, hostnames), WTFMove(completionHandler));
+ else
+ completionHandler();
}
-void WebCookieManagerProxy::deleteAllCookies(PAL::SessionID sessionID)
+void WebCookieManagerProxy::deleteAllCookies(PAL::SessionID sessionID, CompletionHandler<void()>&& completionHandler)
{
if (m_networkProcess)
- m_networkProcess->send(Messages::WebCookieManager::DeleteAllCookies(sessionID), 0);
+ m_networkProcess->sendWithAsyncReply(Messages::WebCookieManager::DeleteAllCookies(sessionID), WTFMove(completionHandler));
+ else
+ completionHandler();
}
void WebCookieManagerProxy::deleteCookie(PAL::SessionID sessionID, const Cookie& cookie, CompletionHandler<void()>&& callbackFunction)
Modified: trunk/Source/WebKit/UIProcess/WebCookieManagerProxy.h (294946 => 294947)
--- trunk/Source/WebKit/UIProcess/WebCookieManagerProxy.h 2022-05-27 18:58:43 UTC (rev 294946)
+++ trunk/Source/WebKit/UIProcess/WebCookieManagerProxy.h 2022-05-27 19:20:27 UTC (rev 294947)
@@ -60,8 +60,8 @@
void getHostnamesWithCookies(PAL::SessionID, CompletionHandler<void(Vector<String>&&)>&&);
void deleteCookie(PAL::SessionID, const WebCore::Cookie&, CompletionHandler<void()>&&);
- void deleteCookiesForHostnames(PAL::SessionID, const Vector<String>&);
- void deleteAllCookies(PAL::SessionID);
+ void deleteCookiesForHostnames(PAL::SessionID, const Vector<String>&, CompletionHandler<void()>&&);
+ void deleteAllCookies(PAL::SessionID, CompletionHandler<void()>&&);
void deleteAllCookiesModifiedSince(PAL::SessionID, WallTime, CompletionHandler<void()>&&);
void setCookies(PAL::SessionID, const Vector<WebCore::Cookie>&, CompletionHandler<void()>&&);
Modified: trunk/Source/WebKit/WebProcess/Automation/WebAutomationSessionProxy.cpp (294946 => 294947)
--- trunk/Source/WebKit/WebProcess/Automation/WebAutomationSessionProxy.cpp 2022-05-27 18:58:43 UTC (rev 294946)
+++ trunk/Source/WebKit/WebProcess/Automation/WebAutomationSessionProxy.cpp 2022-05-27 19:20:27 UTC (rev 294947)
@@ -953,9 +953,9 @@
}
auto& document = *frame->coreFrame()->document();
- page->corePage()->cookieJar().deleteCookie(document, document.cookieURL(), cookieName);
-
- completionHandler(std::nullopt);
+ page->corePage()->cookieJar().deleteCookie(document, document.cookieURL(), cookieName, [completionHandler = WTFMove(completionHandler)] () mutable {
+ completionHandler(std::nullopt);
+ });
}
} // namespace WebKit
Modified: trunk/Source/WebKit/WebProcess/WebPage/WebCookieCache.cpp (294946 => 294947)
--- trunk/Source/WebKit/WebProcess/WebPage/WebCookieCache.cpp 2022-05-27 18:58:43 UTC (rev 294946)
+++ trunk/Source/WebKit/WebProcess/WebPage/WebCookieCache.cpp 2022-05-27 19:20:27 UTC (rev 294947)
@@ -81,7 +81,7 @@
return;
for (auto& cookie : cookies)
- inMemoryStorageSession().deleteCookie(cookie);
+ inMemoryStorageSession().deleteCookie(cookie, [] { });
}
void WebCookieCache::allCookiesDeleted()
@@ -105,7 +105,7 @@
if (removedHost.isNull())
return;
- inMemoryStorageSession().deleteCookiesForHostnames(Vector<String> { removedHost });
+ inMemoryStorageSession().deleteCookiesForHostnames(Vector<String> { removedHost }, [] { });
#if HAVE(COOKIE_CHANGE_LISTENER_API)
WebProcess::singleton().ensureNetworkProcessConnection().connection().send(Messages::NetworkConnectionToWebProcess::UnsubscribeFromCookieChangeNotifications(HashSet<String> { removedHost }), 0);
#endif
Modified: trunk/Source/WebKit/WebProcess/WebPage/WebCookieJar.cpp (294946 => 294947)
--- trunk/Source/WebKit/WebProcess/WebPage/WebCookieJar.cpp 2022-05-27 18:58:43 UTC (rev 294946)
+++ trunk/Source/WebKit/WebProcess/WebPage/WebCookieJar.cpp 2022-05-27 19:20:27 UTC (rev 294947)
@@ -251,9 +251,9 @@
WebProcess::singleton().ensureNetworkProcessConnection().connection().send(Messages::NetworkConnectionToWebProcess::SetRawCookie(cookie), 0);
}
-void WebCookieJar::deleteCookie(const WebCore::Document& document, const URL& url, const String& cookieName)
+void WebCookieJar::deleteCookie(const WebCore::Document& document, const URL& url, const String& cookieName, CompletionHandler<void()>&& completionHandler)
{
- WebProcess::singleton().ensureNetworkProcessConnection().connection().send(Messages::NetworkConnectionToWebProcess::DeleteCookie(url, cookieName), 0);
+ WebProcess::singleton().ensureNetworkProcessConnection().connection().sendWithAsyncReply(Messages::NetworkConnectionToWebProcess::DeleteCookie(url, cookieName), WTFMove(completionHandler));
}
} // namespace WebKit
Modified: trunk/Source/WebKit/WebProcess/WebPage/WebCookieJar.h (294946 => 294947)
--- trunk/Source/WebKit/WebProcess/WebPage/WebCookieJar.h 2022-05-27 18:58:43 UTC (rev 294946)
+++ trunk/Source/WebKit/WebProcess/WebPage/WebCookieJar.h 2022-05-27 19:20:27 UTC (rev 294947)
@@ -46,7 +46,7 @@
std::pair<String, WebCore::SecureCookiesAccessed> cookieRequestHeaderFieldValue(const URL& firstParty, const WebCore::SameSiteInfo&, const URL&, std::optional<WebCore::FrameIdentifier>, std::optional<WebCore::PageIdentifier>, WebCore::IncludeSecureCookies) const final;
bool getRawCookies(const WebCore::Document&, const URL&, Vector<WebCore::Cookie>&) const final;
void setRawCookie(const WebCore::Document&, const WebCore::Cookie&) final;
- void deleteCookie(const WebCore::Document&, const URL&, const String& cookieName) final;
+ void deleteCookie(const WebCore::Document&, const URL&, const String& cookieName, CompletionHandler<void()>&&) final;
void cookiesAdded(const String& host, const Vector<WebCore::Cookie>&);
void cookiesDeleted(const String& host, const Vector<WebCore::Cookie>&);
Modified: trunk/Source/WebKitLegacy/mac/WebView/WebPreferences.mm (294946 => 294947)
--- trunk/Source/WebKitLegacy/mac/WebView/WebPreferences.mm 2022-05-27 18:58:43 UTC (rev 294946)
+++ trunk/Source/WebKitLegacy/mac/WebView/WebPreferences.mm 2022-05-27 19:20:27 UTC (rev 294947)
@@ -2931,7 +2931,7 @@
+ (void)_clearNetworkLoaderSession
{
- NetworkStorageSessionMap::defaultStorageSession().deleteAllCookies();
+ NetworkStorageSessionMap::defaultStorageSession().deleteAllCookies([] { });
}
- (void)_setBoolPreferenceForTestingWithValue:(BOOL)value forKey:(NSString *)key
Modified: trunk/Source/WebKitLegacy/win/WebPreferences.cpp (294946 => 294947)
--- trunk/Source/WebKitLegacy/win/WebPreferences.cpp 2022-05-27 18:58:43 UTC (rev 294946)
+++ trunk/Source/WebKitLegacy/win/WebPreferences.cpp 2022-05-27 19:20:27 UTC (rev 294947)
@@ -2179,7 +2179,7 @@
HRESULT WebPreferences::clearNetworkLoaderSession()
{
- NetworkStorageSessionMap::defaultStorageSession().deleteAllCookies();
+ NetworkStorageSessionMap::defaultStorageSession().deleteAllCookies([] { });
return S_OK;
}