Title: [294670] trunk/Source/WebKit/UIProcess
Revision
294670
Author
[email protected]
Date
2022-05-23 12:46:17 -0700 (Mon, 23 May 2022)

Log Message

REGRESSION (r294469): [ iOS ] TestWebKitAPI.NSAttributedStringWebKitAdditions.DirectoriesNotCreated is a consistent failure
https://bugs.webkit.org/show_bug.cgi?id=240690

Reviewed by Chris Dumez.

r294469 failed to check if WebsiteDataStore is persistent before getting and creating directories in WebProcessPool. To
fix this and to avoid future issues, we make WebsiteDataStore return null for directory getters if it's not persistent.

* Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp:
(WebKit::GPUProcessProxy::GPUProcessProxy):
* Source/WebKit/UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::webProcessDataStoreParameters):
* Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
(WebKit::WebsiteDataStore::cookieStorageDirectory const):
(WebKit::WebsiteDataStore::containerCachesDirectory const):
(WebKit::WebsiteDataStore::parentBundleDirectory const):
(WebKit::WebsiteDataStore::networkingCachesDirectory const):
(WebKit::WebsiteDataStore::containerTemporaryDirectory const):
(WebKit::WebsiteDataStore::defaultContainerTemporaryDirectory):
(WebKit::WebsiteDataStore::cookieStorageDirectory): Deleted.
(WebKit::WebsiteDataStore::containerCachesDirectory): Deleted.
(WebKit::WebsiteDataStore::parentBundleDirectory): Deleted.
(WebKit::WebsiteDataStore::networkingCachesDirectory): Deleted.
(WebKit::WebsiteDataStore::containerTemporaryDirectory): Deleted.
* Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h:

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

Modified Paths

Diff

Modified: trunk/Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp (294669 => 294670)


--- trunk/Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp	2022-05-23 19:44:15 UTC (rev 294669)
+++ trunk/Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp	2022-05-23 19:46:17 UTC (rev 294670)
@@ -142,7 +142,7 @@
 
 #if USE(SANDBOX_EXTENSIONS_FOR_CACHE_AND_TEMP_DIRECTORY_ACCESS)
     auto containerCachesDirectory = resolveAndCreateReadWriteDirectoryForSandboxExtension(gpuProcessCachesDirectory());
-    auto containerTemporaryDirectory = resolveAndCreateReadWriteDirectoryForSandboxExtension(WebsiteDataStore::containerTemporaryDirectory());
+    auto containerTemporaryDirectory = resolveAndCreateReadWriteDirectoryForSandboxExtension(WebsiteDataStore::defaultContainerTemporaryDirectory());
 
     if (!containerCachesDirectory.isEmpty()) {
         if (auto handle = SandboxExtension::createHandleWithoutResolvingPath(containerCachesDirectory, SandboxExtension::Type::ReadWrite))

Modified: trunk/Source/WebKit/UIProcess/WebProcessPool.cpp (294669 => 294670)


--- trunk/Source/WebKit/UIProcess/WebProcessPool.cpp	2022-05-23 19:44:15 UTC (rev 294669)
+++ trunk/Source/WebKit/UIProcess/WebProcessPool.cpp	2022-05-23 19:46:17 UTC (rev 294670)
@@ -767,7 +767,7 @@
     if (auto directory = websiteDataStore.containerCachesDirectory(); !directory.isEmpty())
         containerCachesDirectoryExtensionHandle = SandboxExtension::createHandleForReadWriteDirectory(directory);
     std::optional<SandboxExtension::Handle> containerTemporaryDirectoryExtensionHandle;
-    if (auto directory = WebsiteDataStore::containerTemporaryDirectory(); !directory.isEmpty())
+    if (auto directory = websiteDataStore.containerTemporaryDirectory(); !directory.isEmpty())
         containerTemporaryDirectoryExtensionHandle = SandboxExtension::createHandleForReadWriteDirectory(directory);
 #endif
 

Modified: trunk/Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm (294669 => 294670)


--- trunk/Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm	2022-05-23 19:44:15 UTC (rev 294669)
+++ trunk/Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm	2022-05-23 19:46:17 UTC (rev 294670)
@@ -642,15 +642,20 @@
     return path;
 }
 
-String WebsiteDataStore::cookieStorageDirectory()
+String WebsiteDataStore::cookieStorageDirectory() const
 {
+    if (!isPersistent())
+        return { };
+
     return cacheDirectoryInContainerOrHomeDirectory("/Library/Cookies"_s);
 }
 
-String WebsiteDataStore::containerCachesDirectory()
+String WebsiteDataStore::containerCachesDirectory() const
 {
+    if (!isPersistent())
+        return { };
+
     String path = cacheDirectoryInContainerOrHomeDirectory("/Library/Caches/com.apple.WebKit.WebContent/"_s);
-
     NSError *error = nil;
     NSString* nsPath = path;
     if (![[NSFileManager defaultManager] createDirectoryAtPath:nsPath withIntermediateDirectories:YES attributes:nil error:&error]) {
@@ -661,15 +666,20 @@
     return path;
 }
 
-String WebsiteDataStore::parentBundleDirectory()
+String WebsiteDataStore::parentBundleDirectory() const
 {
+    if (!isPersistent())
+        return { };
+
     return [[[NSBundle mainBundle] bundlePath] stringByStandardizingPath];
 }
 
-String WebsiteDataStore::networkingCachesDirectory()
+String WebsiteDataStore::networkingCachesDirectory() const
 {
+    if (!isPersistent())
+        return { };
+
     String path = cacheDirectoryInContainerOrHomeDirectory("/Library/Caches/com.apple.WebKit.Networking/"_s);
-
     NSError *error = nil;
     NSString* nsPath = path;
     if (![[NSFileManager defaultManager] createDirectoryAtPath:nsPath withIntermediateDirectories:YES attributes:nil error:&error]) {
@@ -680,8 +690,16 @@
     return path;
 }
 
-String WebsiteDataStore::containerTemporaryDirectory()
+String WebsiteDataStore::containerTemporaryDirectory() const
 {
+    if (!isPersistent())
+        return { };
+
+    return defaultContainerTemporaryDirectory();
+}
+
+String WebsiteDataStore::defaultContainerTemporaryDirectory()
+{
     String path = NSTemporaryDirectory();
     return stringByResolvingSymlinksInPath(path);
 }

Modified: trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h (294669 => 294670)


--- trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h	2022-05-23 19:44:15 UTC (rev 294669)
+++ trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h	2022-05-23 19:46:17 UTC (rev 294670)
@@ -161,9 +161,10 @@
     const String& cacheStorageDirectory() const { return m_resolvedConfiguration->cacheStorageDirectory(); }
 
 #if PLATFORM(IOS_FAMILY)
-    String cookieStorageDirectory();
-    String containerCachesDirectory();
-    static String containerTemporaryDirectory();
+    String cookieStorageDirectory() const;
+    String containerCachesDirectory() const;
+    String containerTemporaryDirectory() const;
+    static String defaultContainerTemporaryDirectory();
     static String cacheDirectoryInContainerOrHomeDirectory(const String& subpath);
 #endif
 
@@ -429,8 +430,8 @@
 #endif
 
 #if PLATFORM(IOS_FAMILY)
-    String networkingCachesDirectory();
-    String parentBundleDirectory();
+    String networkingCachesDirectory() const;
+    String parentBundleDirectory() const;
 #endif
 
     const PAL::SessionID m_sessionID;
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to