Title: [294977] trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/WKHTTPCookieStore.mm
Revision
294977
Author
yu...@chromium.org
Date
2022-05-27 19:19:02 -0700 (Fri, 27 May 2022)

Log Message

WKHTTPCookieStore tests should use removeDataOfTypes to delete all cookies
https://bugs.webkit.org/show_bug.cgi?id=240726

Reviewed by Sihui Liu.

Call WKWebsiteDataStore.removeDataOfTypes when to clear all cookies
instead of deleting them one by one. Besides simplifying the code it
documents the API recommended for the clients.

* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKHTTPCookieStore.mm:
(clearCookies):
(TEST):
(deleteCookies): Deleted.

Canonical link: https://commits.webkit.org/251081@main

Modified Paths

Diff

Modified: trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/WKHTTPCookieStore.mm (294976 => 294977)


--- trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/WKHTTPCookieStore.mm	2022-05-28 02:12:20 UTC (rev 294976)
+++ trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/WKHTTPCookieStore.mm	2022-05-28 02:19:02 UTC (rev 294977)
@@ -459,14 +459,13 @@
     TestWebKitAPI::Util::run(&gotFlag);
 }
 
-static void deleteCookies(WKHTTPCookieStore *store, RetainPtr<NSMutableArray> cookies, BlockPtr<void(void)> completionBlock)
+static void clearCookies(WKWebsiteDataStore *dataStore)
 {
-    if (![cookies count])
-        return completionBlock();
-    [store deleteCookie:[cookies lastObject] completionHandler:^(void) {
-        [cookies removeLastObject];
-        deleteCookies(store, cookies, completionBlock);
+    __block bool deleted = false;
+    [dataStore removeDataOfTypes:[NSSet setWithObject:WKWebsiteDataTypeCookies] modifiedSince:[NSDate distantPast] completionHandler:^{
+        deleted = true;
     }];
+    TestWebKitAPI::Util::run(&deleted);
 }
 
 TEST(WKHTTPCookieStore, ObserveCookiesReceivedFromHTTP)
@@ -473,16 +472,6 @@
 {
     TestWebKitAPI::HTTPServer server({{ "/"_s, {{{ "Set-Cookie"_s, "testkey=testvalue"_s }}, "hello"_s }}});
 
-    auto removeAllCookies = [] (WKHTTPCookieStore *store) {
-        __block bool deletedAllCookies = false;
-        [store getAllCookies:^(NSArray<NSHTTPCookie *> *cookies) {
-            deleteCookies(store, adoptNS([cookies mutableCopy]), ^{
-                deletedAllCookies = true;
-            });
-        }];
-        TestWebKitAPI::Util::run(&deletedAllCookies);
-    };
-
     auto runTest = [&] (WKWebsiteDataStore *dataStore) {
         auto configuration = adoptNS([WKWebViewConfiguration new]);
         configuration.get().websiteDataStore = dataStore;
@@ -489,7 +478,7 @@
         auto webView = adoptNS([[WKWebView alloc] initWithFrame:CGRectZero configuration:configuration.get()]);
         auto observer = adoptNS([CookieObserver new]);
         globalCookieStore = webView.get().configuration.websiteDataStore.httpCookieStore;
-        removeAllCookies(globalCookieStore.get());
+        clearCookies(dataStore);
         [globalCookieStore addObserver:observer.get()];
         observerCallbacks = 0;
         [webView loadRequest:server.request()];
@@ -726,27 +715,6 @@
     return [first.name isEqual:second.name] && [first.domain isEqual:second.domain] && [first.path isEqual:second.path] && [first.value isEqual:second.value];
 }
 
-static void clearCookies(WKHTTPCookieStore* cookieStore)
-{
-    finished = false;
-    [cookieStore getAllCookies:^(NSArray<NSHTTPCookie *> *cookies) {
-        if (!cookies || !cookies.count) {
-            finished = true;
-            return;
-        }
-
-        unsigned cookiesCount = cookies.count;
-        __block unsigned deletedCount = 0;
-        for (NSHTTPCookie* cookie in cookies) {
-            [cookieStore deleteCookie:cookie completionHandler:^{
-                if (++deletedCount == cookiesCount)
-                    finished = true;
-            }];
-        }
-    }];
-    TestWebKitAPI::Util::run(&finished);
-}
-
 TEST(WKHTTPCookieStore, WithoutProcessPoolDuplicates)
 {
     RetainPtr<WKHTTPCookieStore> httpCookieStore = [WKWebsiteDataStore defaultDataStore].httpCookieStore;
@@ -764,7 +732,7 @@
     RetainPtr<NSHTTPCookie> sessionCookieDifferentValue = [NSHTTPCookie cookieWithProperties:properties.get()];
     finished = false;
 
-    clearCookies(httpCookieStore.get());
+    clearCookies([WKWebsiteDataStore defaultDataStore]);
 
     [httpCookieStore.get() setCookie:sessionCookie.get() completionHandler:^{
         finished = true;
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to