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