Title: [282170] trunk
Revision
282170
Author
sihui_...@apple.com
Date
2021-09-08 14:09:45 -0700 (Wed, 08 Sep 2021)

Log Message

Regression (r282130): [ macOS iOS wk2 ] imported/w3c/web-platform-tests/storage/persisted.https.any.html is failing
https://bugs.webkit.org/show_bug.cgi?id=230053
<rdar://problem/82879548>

Reviewed by Chris Dumez.

Source/WebKit:

Add SPI to clear storage states for testing.

Covered by existing tests.

* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::clearStorage):
* NetworkProcess/NetworkProcess.h:
* NetworkProcess/NetworkProcess.messages.in:
* NetworkProcess/storage/NetworkStorageManager.cpp:
(WebKit::NetworkStorageManager::clearStorageForTesting):
* NetworkProcess/storage/NetworkStorageManager.h:
* UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
(WKWebsiteDataStoreClearStorage):
* UIProcess/API/C/WKWebsiteDataStoreRef.h:
* UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::clearStorage):
* UIProcess/Network/NetworkProcessProxy.h:
* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::clearStorage):
* UIProcess/WebsiteData/WebsiteDataStore.h:

Tools:

Clear storage states between tests so tests do not affect each other.

* WebKitTestRunner/TestController.cpp:
(WTR::TestController::resetStateToConsistentValues):
(WTR::TestController::clearStorage):
* WebKitTestRunner/TestController.h:

LayoutTests:

Skip storage/ tests on WebKitLegacy platforms as the API is not implemented there.

* TestExpectations:
* platform/wk2/TestExpectations:

Modified Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (282169 => 282170)


--- trunk/LayoutTests/ChangeLog	2021-09-08 20:55:00 UTC (rev 282169)
+++ trunk/LayoutTests/ChangeLog	2021-09-08 21:09:45 UTC (rev 282170)
@@ -1,3 +1,16 @@
+2021-09-08  Sihui Liu  <sihui_...@apple.com>
+
+        Regression (r282130): [ macOS iOS wk2 ] imported/w3c/web-platform-tests/storage/persisted.https.any.html is failing
+        https://bugs.webkit.org/show_bug.cgi?id=230053
+        <rdar://problem/82879548>
+
+        Reviewed by Chris Dumez.
+
+        Skip storage/ tests on WebKitLegacy platforms as the API is not implemented there.
+
+        * TestExpectations:
+        * platform/wk2/TestExpectations:
+
 2021-09-08  Ayumi Kojima  <ayumi_koj...@apple.com>
 
         [ macOS wk1 ] fast/text/FontFaceSet-check-after-style-update.html is a flaky failure.

Modified: trunk/LayoutTests/TestExpectations (282169 => 282170)


--- trunk/LayoutTests/TestExpectations	2021-09-08 20:55:00 UTC (rev 282169)
+++ trunk/LayoutTests/TestExpectations	2021-09-08 21:09:45 UTC (rev 282170)
@@ -198,6 +198,7 @@
 fast/speechrecognition/start-second-recognition.html [ Skip ]
 fast/speechrecognition/ios/ [ Skip ]
 imported/w3c/web-platform-tests/permissions/ [ Skip ]
+imported/w3c/web-platform-tests/storage/ [ Skip ]
 
 # app-privacy-report tests rely on WebKitAdditions
 http/tests/app-privacy-report/ [ Skip ]

Modified: trunk/LayoutTests/platform/wk2/TestExpectations (282169 => 282170)


--- trunk/LayoutTests/platform/wk2/TestExpectations	2021-09-08 20:55:00 UTC (rev 282169)
+++ trunk/LayoutTests/platform/wk2/TestExpectations	2021-09-08 21:09:45 UTC (rev 282170)
@@ -862,4 +862,5 @@
 fast/speechrecognition/start-second-recognition.html [ Pass ]
 fullscreen/full-screen-enter-while-exiting.html [ Pass ]
 imported/w3c/web-platform-tests/permissions/ [ Pass ]
+imported/w3c/web-platform-tests/storage/ [ Pass ]
 

Modified: trunk/Source/WebKit/ChangeLog (282169 => 282170)


--- trunk/Source/WebKit/ChangeLog	2021-09-08 20:55:00 UTC (rev 282169)
+++ trunk/Source/WebKit/ChangeLog	2021-09-08 21:09:45 UTC (rev 282170)
@@ -1,3 +1,32 @@
+2021-09-08  Sihui Liu  <sihui_...@apple.com>
+
+        Regression (r282130): [ macOS iOS wk2 ] imported/w3c/web-platform-tests/storage/persisted.https.any.html is failing
+        https://bugs.webkit.org/show_bug.cgi?id=230053
+        <rdar://problem/82879548>
+
+        Reviewed by Chris Dumez.
+
+        Add SPI to clear storage states for testing.
+
+        Covered by existing tests.
+
+        * NetworkProcess/NetworkProcess.cpp:
+        (WebKit::NetworkProcess::clearStorage):
+        * NetworkProcess/NetworkProcess.h:
+        * NetworkProcess/NetworkProcess.messages.in:
+        * NetworkProcess/storage/NetworkStorageManager.cpp:
+        (WebKit::NetworkStorageManager::clearStorageForTesting):
+        * NetworkProcess/storage/NetworkStorageManager.h:
+        * UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
+        (WKWebsiteDataStoreClearStorage):
+        * UIProcess/API/C/WKWebsiteDataStoreRef.h:
+        * UIProcess/Network/NetworkProcessProxy.cpp:
+        (WebKit::NetworkProcessProxy::clearStorage):
+        * UIProcess/Network/NetworkProcessProxy.h:
+        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
+        (WebKit::WebsiteDataStore::clearStorage):
+        * UIProcess/WebsiteData/WebsiteDataStore.h:
+
 2021-09-08  Per Arne  <pvol...@apple.com>
 
         Remove unneeded call on startup of WebContent process

Modified: trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp (282169 => 282170)


--- trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp	2021-09-08 20:55:00 UTC (rev 282169)
+++ trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp	2021-09-08 21:09:45 UTC (rev 282170)
@@ -2416,6 +2416,14 @@
     completionHandler();
 }
 
+void NetworkProcess::clearStorage(PAL::SessionID sessionID, CompletionHandler<void()>&& completionHandler)
+{
+    if (auto manager = m_storageManagers.get(sessionID))
+        manager->clearStorageForTesting(WTFMove(completionHandler));
+    else
+        completionHandler();
+}
+
 void NetworkProcess::renameOriginInWebsiteData(PAL::SessionID sessionID, const URL& oldName, const URL& newName, OptionSet<WebsiteDataType> dataTypes, CompletionHandler<void()>&& completionHandler)
 {
     auto aggregator = CallbackAggregator::create(WTFMove(completionHandler));

Modified: trunk/Source/WebKit/NetworkProcess/NetworkProcess.h (282169 => 282170)


--- trunk/Source/WebKit/NetworkProcess/NetworkProcess.h	2021-09-08 20:55:00 UTC (rev 282169)
+++ trunk/Source/WebKit/NetworkProcess/NetworkProcess.h	2021-09-08 21:09:45 UTC (rev 282170)
@@ -308,6 +308,7 @@
     void syncLocalStorage(CompletionHandler<void()>&&);
 
     void resetQuota(PAL::SessionID, CompletionHandler<void()>&&);
+    void clearStorage(PAL::SessionID, CompletionHandler<void()>&&);
     void renameOriginInWebsiteData(PAL::SessionID, const URL&, const URL&, OptionSet<WebsiteDataType>, CompletionHandler<void()>&&);
 
 #if ENABLE(SERVICE_WORKER)

Modified: trunk/Source/WebKit/NetworkProcess/NetworkProcess.messages.in (282169 => 282170)


--- trunk/Source/WebKit/NetworkProcess/NetworkProcess.messages.in	2021-09-08 20:55:00 UTC (rev 282169)
+++ trunk/Source/WebKit/NetworkProcess/NetworkProcess.messages.in	2021-09-08 21:09:45 UTC (rev 282170)
@@ -176,6 +176,7 @@
     ResetServiceWorkerFetchTimeoutForTesting() -> () Synchronous
 
     ResetQuota(PAL::SessionID sessionID) -> () Async
+    ClearStorage(PAL::SessionID sessionID) -> () Async
     
 #if ENABLE(APP_BOUND_DOMAINS)
     HasAppBoundSession(PAL::SessionID sessionID) -> (bool hasAppBoundSession) Async

Modified: trunk/Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp (282169 => 282170)


--- trunk/Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp	2021-09-08 20:55:00 UTC (rev 282169)
+++ trunk/Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp	2021-09-08 21:09:45 UTC (rev 282170)
@@ -111,5 +111,16 @@
     completionHandler(true);
 }
 
+void NetworkStorageManager::clearStorageForTesting(CompletionHandler<void()>&& completionHandler)
+{
+    ASSERT(RunLoop::isMain());
+    m_queue->dispatch([this, protectedThis = makeRef(*this), completionHandler = WTFMove(completionHandler)]() mutable {
+        m_localOriginStorageManagers.clear();
+        m_sessionOriginStorageManagers.clear();
+
+        RunLoop::main().dispatch(WTFMove(completionHandler));
+    });
+}
+
 } // namespace WebKit
 

Modified: trunk/Source/WebKit/NetworkProcess/storage/NetworkStorageManager.h (282169 => 282170)


--- trunk/Source/WebKit/NetworkProcess/storage/NetworkStorageManager.h	2021-09-08 20:55:00 UTC (rev 282169)
+++ trunk/Source/WebKit/NetworkProcess/storage/NetworkStorageManager.h	2021-09-08 21:09:45 UTC (rev 282170)
@@ -44,6 +44,7 @@
     void stopReceivingMessageFromConnection(IPC::Connection&);
 
     PAL::SessionID sessionID() const { return m_sessionID; }
+    void clearStorageForTesting(CompletionHandler<void()>&&);
 
 private:
     NetworkStorageManager(PAL::SessionID, const String& path);

Modified: trunk/Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreRef.cpp (282169 => 282170)


--- trunk/Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreRef.cpp	2021-09-08 20:55:00 UTC (rev 282169)
+++ trunk/Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreRef.cpp	2021-09-08 21:09:45 UTC (rev 282170)
@@ -838,6 +838,14 @@
     });
 }
 
+void WKWebsiteDataStoreClearStorage(WKWebsiteDataStoreRef dataStoreRef, void* context, WKWebsiteDataStoreClearStorageCallback callback)
+{
+    WebKit::toImpl(dataStoreRef)->clearStorage([context, callback] {
+        if (callback)
+            callback(context);
+    });
+}
+
 void WKWebsiteDataStoreClearAppBoundSession(WKWebsiteDataStoreRef dataStoreRef, void* context, WKWebsiteDataStoreClearAppBoundSessionFunction completionHandler)
 {
 #if ENABLE(APP_BOUND_DOMAINS)

Modified: trunk/Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreRef.h (282169 => 282170)


--- trunk/Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreRef.h	2021-09-08 20:55:00 UTC (rev 282169)
+++ trunk/Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreRef.h	2021-09-08 21:09:45 UTC (rev 282170)
@@ -194,6 +194,9 @@
 typedef void (*WKWebsiteDataStoreResetQuotaCallback)(void* functionContext);
 WK_EXPORT void WKWebsiteDataStoreResetQuota(WKWebsiteDataStoreRef dataStoreRef, void* context, WKWebsiteDataStoreResetQuotaCallback callback);
 
+typedef void (*WKWebsiteDataStoreClearStorageCallback)(void* functionContext);
+WK_EXPORT void WKWebsiteDataStoreClearStorage(WKWebsiteDataStoreRef dataStoreRef, void* context, WKWebsiteDataStoreResetQuotaCallback callback);
+
 typedef void (*WKWebsiteDataStoreClearAppBoundSessionFunction)(void* functionContext);
 WK_EXPORT void WKWebsiteDataStoreClearAppBoundSession(WKWebsiteDataStoreRef dataStoreRef, void* context, WKWebsiteDataStoreClearAppBoundSessionFunction completionHandler);
 

Modified: trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp (282169 => 282170)


--- trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp	2021-09-08 20:55:00 UTC (rev 282169)
+++ trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp	2021-09-08 21:09:45 UTC (rev 282170)
@@ -1560,6 +1560,11 @@
     sendWithAsyncReply(Messages::NetworkProcess::ResetQuota(sessionID), WTFMove(completionHandler));
 }
 
+void NetworkProcessProxy::clearStorage(PAL::SessionID sessionID, CompletionHandler<void()>&& completionHandler)
+{
+    sendWithAsyncReply(Messages::NetworkProcess::ClearStorage(sessionID), WTFMove(completionHandler));
+}
+
 #if ENABLE(APP_BOUND_DOMAINS)
 void NetworkProcessProxy::hasAppBoundSession(PAL::SessionID sessionID, CompletionHandler<void(bool)>&& completionHandler)
 {

Modified: trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.h (282169 => 282170)


--- trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.h	2021-09-08 20:55:00 UTC (rev 282169)
+++ trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.h	2021-09-08 21:09:45 UTC (rev 282170)
@@ -243,6 +243,7 @@
     void networkProcessDidTerminate(TerminationReason);
     
     void resetQuota(PAL::SessionID, CompletionHandler<void()>&&);
+    void clearStorage(PAL::SessionID, CompletionHandler<void()>&&);
 
     void resourceLoadDidSendRequest(WebPageProxyIdentifier, ResourceLoadInfo&&, WebCore::ResourceRequest&&, std::optional<IPC::FormDataReference>&&);
     void resourceLoadDidPerformHTTPRedirection(WebPageProxyIdentifier, ResourceLoadInfo&&, WebCore::ResourceResponse&&, WebCore::ResourceRequest&&);

Modified: trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp (282169 => 282170)


--- trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp	2021-09-08 20:55:00 UTC (rev 282169)
+++ trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp	2021-09-08 21:09:45 UTC (rev 282170)
@@ -2154,6 +2154,11 @@
     networkProcess().resetQuota(m_sessionID, [callbackAggregator] { });
 }
 
+void WebsiteDataStore::clearStorage(CompletionHandler<void()>&& completionHandler)
+{
+    networkProcess().clearStorage(m_sessionID, WTFMove(completionHandler));
+}
+
 #if !PLATFORM(COCOA)
 WTF::String WebsiteDataStore::defaultMediaCacheDirectory()
 {

Modified: trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h (282169 => 282170)


--- trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h	2021-09-08 20:55:00 UTC (rev 282169)
+++ trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h	2021-09-08 21:09:45 UTC (rev 282170)
@@ -352,6 +352,7 @@
     static bool http3Enabled();
 
     void resetQuota(CompletionHandler<void()>&&);
+    void clearStorage(CompletionHandler<void()>&&);
 
 #if ENABLE(APP_BOUND_DOMAINS)
     void hasAppBoundSession(CompletionHandler<void(bool)>&&) const;

Modified: trunk/Tools/ChangeLog (282169 => 282170)


--- trunk/Tools/ChangeLog	2021-09-08 20:55:00 UTC (rev 282169)
+++ trunk/Tools/ChangeLog	2021-09-08 21:09:45 UTC (rev 282170)
@@ -1,3 +1,18 @@
+2021-09-08  Sihui Liu  <sihui_...@apple.com>
+
+        Regression (r282130): [ macOS iOS wk2 ] imported/w3c/web-platform-tests/storage/persisted.https.any.html is failing
+        https://bugs.webkit.org/show_bug.cgi?id=230053
+        <rdar://problem/82879548>
+
+        Reviewed by Chris Dumez.
+
+        Clear storage states between tests so tests do not affect each other.
+
+        * WebKitTestRunner/TestController.cpp:
+        (WTR::TestController::resetStateToConsistentValues):
+        (WTR::TestController::clearStorage):
+        * WebKitTestRunner/TestController.h:
+
 2021-09-08  Jonathan Bedard  <jbed...@apple.com>
 
         [webkitcorepy] Add support for find_spec

Modified: trunk/Tools/WebKitTestRunner/TestController.cpp (282169 => 282170)


--- trunk/Tools/WebKitTestRunner/TestController.cpp	2021-09-08 20:55:00 UTC (rev 282169)
+++ trunk/Tools/WebKitTestRunner/TestController.cpp	2021-09-08 21:09:45 UTC (rev 282170)
@@ -967,6 +967,7 @@
     clearDOMCaches();
 
     resetQuota();
+    clearStorage();
 
     WKContextClearCurrentModifierStateForTesting(TestController::singleton().context());
     WKContextSetUseSeparateServiceWorkerProcess(TestController::singleton().context(), false);
@@ -2953,6 +2954,13 @@
     runUntil(context.done, noTimeout);
 }
 
+void TestController::clearStorage()
+{
+    StorageVoidCallbackContext context(*this);
+    WKWebsiteDataStoreClearStorage(TestController::websiteDataStore(), &context, StorageVoidCallback);
+    runUntil(context.done, noTimeout);
+}
+
 struct FetchCacheOriginsCallbackContext {
     FetchCacheOriginsCallbackContext(TestController& controller, WKStringRef origin)
         : testController(controller)

Modified: trunk/Tools/WebKitTestRunner/TestController.h (282169 => 282170)


--- trunk/Tools/WebKitTestRunner/TestController.h	2021-09-08 20:55:00 UTC (rev 282169)
+++ trunk/Tools/WebKitTestRunner/TestController.h	2021-09-08 21:09:45 UTC (rev 282170)
@@ -281,6 +281,7 @@
     void terminateServiceWorkers();
 
     void resetQuota();
+    void clearStorage();
 
     void removeAllSessionCredentials();
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to