Title: [221175] trunk/Source/WebKit
Revision
221175
Author
commit-qu...@webkit.org
Date
2017-08-24 18:08:16 -0700 (Thu, 24 Aug 2017)

Log Message

[Cache API] UIProcess should provide the directory path where to store Cache Storage data
https://bugs.webkit.org/show_bug.cgi?id=175884

Patch by Youenn Fablet <you...@apple.com> on 2017-08-24
Reviewed by Brady Eidson.

Adding API to set the cache storage directory path.
Updating IPC to pass this parameter with its sandbox extension to NetworkProcess at creation time.

* NetworkProcess/NetworkProcess.h:
(WebKit::NetworkProcess::cacheStorageDirectory const):
* NetworkProcess/NetworkProcessCreationParameters.cpp:
(WebKit::NetworkProcessCreationParameters::encode const):
(WebKit::NetworkProcessCreationParameters::decode):
* NetworkProcess/NetworkProcessCreationParameters.h:
* NetworkProcess/cocoa/NetworkProcessCocoa.mm:
(WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa):
* UIProcess/API/APIProcessPoolConfiguration.cpp:
(API::ProcessPoolConfiguration::createWithLegacyOptions):
(API::ProcessPoolConfiguration::createWithWebsiteDataStoreConfiguration):
(API::ProcessPoolConfiguration::ProcessPoolConfiguration):
(API::ProcessPoolConfiguration::copy):
* UIProcess/API/APIProcessPoolConfiguration.h:
* UIProcess/API/APIWebsiteDataStore.h:
* UIProcess/API/Cocoa/APIWebsiteDataStoreCocoa.mm:
(API::WebsiteDataStore::defaultCacheStorageDirectory):
* UIProcess/Cocoa/WebProcessPoolCocoa.mm:
(WebKit::WebProcessPool::legacyPlatformDefaultCacheStorageDirectory):
* UIProcess/WebProcessPool.cpp:
(WebKit::legacyWebsiteDataStoreConfiguration):
(WebKit::WebProcessPool::ensureNetworkProcess):
* UIProcess/WebProcessPool.h:
* UIProcess/WebsiteData/WebsiteDataStore.h:

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (221174 => 221175)


--- trunk/Source/WebKit/ChangeLog	2017-08-25 00:57:42 UTC (rev 221174)
+++ trunk/Source/WebKit/ChangeLog	2017-08-25 01:08:16 UTC (rev 221175)
@@ -1,3 +1,38 @@
+2017-08-24  Youenn Fablet  <you...@apple.com>
+
+        [Cache API] UIProcess should provide the directory path where to store Cache Storage data
+        https://bugs.webkit.org/show_bug.cgi?id=175884
+
+        Reviewed by Brady Eidson.
+
+        Adding API to set the cache storage directory path.
+        Updating IPC to pass this parameter with its sandbox extension to NetworkProcess at creation time.
+
+        * NetworkProcess/NetworkProcess.h:
+        (WebKit::NetworkProcess::cacheStorageDirectory const):
+        * NetworkProcess/NetworkProcessCreationParameters.cpp:
+        (WebKit::NetworkProcessCreationParameters::encode const):
+        (WebKit::NetworkProcessCreationParameters::decode):
+        * NetworkProcess/NetworkProcessCreationParameters.h:
+        * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
+        (WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa):
+        * UIProcess/API/APIProcessPoolConfiguration.cpp:
+        (API::ProcessPoolConfiguration::createWithLegacyOptions):
+        (API::ProcessPoolConfiguration::createWithWebsiteDataStoreConfiguration):
+        (API::ProcessPoolConfiguration::ProcessPoolConfiguration):
+        (API::ProcessPoolConfiguration::copy):
+        * UIProcess/API/APIProcessPoolConfiguration.h:
+        * UIProcess/API/APIWebsiteDataStore.h:
+        * UIProcess/API/Cocoa/APIWebsiteDataStoreCocoa.mm:
+        (API::WebsiteDataStore::defaultCacheStorageDirectory):
+        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
+        (WebKit::WebProcessPool::legacyPlatformDefaultCacheStorageDirectory):
+        * UIProcess/WebProcessPool.cpp:
+        (WebKit::legacyWebsiteDataStoreConfiguration):
+        (WebKit::WebProcessPool::ensureNetworkProcess):
+        * UIProcess/WebProcessPool.h:
+        * UIProcess/WebsiteData/WebsiteDataStore.h:
+
 2017-08-24  Alex Christensen  <achristen...@webkit.org>
 
         Add WKUIDelegatePrivate equivalent of WKPageUIClient's handleAutoplayEvent

Modified: trunk/Source/WebKit/NetworkProcess/NetworkProcess.h (221174 => 221175)


--- trunk/Source/WebKit/NetworkProcess/NetworkProcess.h	2017-08-25 00:57:42 UTC (rev 221174)
+++ trunk/Source/WebKit/NetworkProcess/NetworkProcess.h	2017-08-25 01:08:16 UTC (rev 221175)
@@ -134,6 +134,7 @@
 #endif
 
     Seconds loadThrottleLatency() const { return m_loadThrottleLatency; }
+    const String& cacheStorageDirectory() const { return m_cacheStorageDirectory; }
 
 private:
     NetworkProcess();
@@ -223,6 +224,7 @@
     // Connections to WebProcesses.
     Vector<RefPtr<NetworkConnectionToWebProcess>> m_webProcessConnections;
 
+    String m_cacheStorageDirectory;
     String m_diskCacheDirectory;
     bool m_hasSetCacheModel;
     CacheModel m_cacheModel;

Modified: trunk/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.cpp (221174 => 221175)


--- trunk/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.cpp	2017-08-25 00:57:42 UTC (rev 221174)
+++ trunk/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.cpp	2017-08-25 01:08:16 UTC (rev 221175)
@@ -45,6 +45,8 @@
     encoder.encodeEnum(cacheModel);
     encoder << diskCacheSizeOverride;
     encoder << canHandleHTTPSServerTrustEvaluation;
+    encoder << cacheStorageDirectory;
+    encoder << cacheStorageDirectoryExtensionHandle;
     encoder << diskCacheDirectory;
     encoder << diskCacheDirectoryExtensionHandle;
 #if ENABLE(NETWORK_CACHE)
@@ -112,6 +114,10 @@
         return false;
     if (!decoder.decode(result.canHandleHTTPSServerTrustEvaluation))
         return false;
+    if (!decoder.decode(result.cacheStorageDirectory))
+        return false;
+    if (!decoder.decode(result.cacheStorageDirectoryExtensionHandle))
+        return false;
     if (!decoder.decode(result.diskCacheDirectory))
         return false;
     if (!decoder.decode(result.diskCacheDirectoryExtensionHandle))

Modified: trunk/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.h (221174 => 221175)


--- trunk/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.h	2017-08-25 00:57:42 UTC (rev 221174)
+++ trunk/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.h	2017-08-25 01:08:16 UTC (rev 221175)
@@ -54,6 +54,8 @@
     int64_t diskCacheSizeOverride { -1 };
     bool canHandleHTTPSServerTrustEvaluation { true };
 
+    String cacheStorageDirectory;
+    SandboxExtension::Handle cacheStorageDirectoryExtensionHandle;
     String diskCacheDirectory;
     SandboxExtension::Handle diskCacheDirectoryExtensionHandle;
 #if ENABLE(NETWORK_CACHE)

Modified: trunk/Source/WebKit/NetworkProcess/cocoa/NetworkProcessCocoa.mm (221174 => 221175)


--- trunk/Source/WebKit/NetworkProcess/cocoa/NetworkProcessCocoa.mm	2017-08-25 00:57:42 UTC (rev 221174)
+++ trunk/Source/WebKit/NetworkProcess/cocoa/NetworkProcessCocoa.mm	2017-08-25 01:08:16 UTC (rev 221175)
@@ -73,6 +73,7 @@
     SandboxExtension::consumePermanently(parameters.containerCachesDirectoryExtensionHandle);
     SandboxExtension::consumePermanently(parameters.parentBundleDirectoryExtensionHandle);
 #endif
+    m_cacheStorageDirectory = parameters.cacheStorageDirectory;
     m_diskCacheDirectory = parameters.diskCacheDirectory;
 
     _CFNetworkSetATSContext(parameters.networkATSContext.get());
@@ -105,6 +106,9 @@
 
     ASSERT(!m_diskCacheIsDisabledForTesting || !parameters.nsURLCacheDiskCapacity);
 
+    if (!m_cacheStorageDirectory.isNull())
+        SandboxExtension::consumePermanently(parameters.cacheStorageDirectoryExtensionHandle);
+
     if (!m_diskCacheDirectory.isNull()) {
         SandboxExtension::consumePermanently(parameters.diskCacheDirectoryExtensionHandle);
 #if ENABLE(NETWORK_CACHE)

Modified: trunk/Source/WebKit/UIProcess/API/APIProcessPoolConfiguration.cpp (221174 => 221175)


--- trunk/Source/WebKit/UIProcess/API/APIProcessPoolConfiguration.cpp	2017-08-25 00:57:42 UTC (rev 221174)
+++ trunk/Source/WebKit/UIProcess/API/APIProcessPoolConfiguration.cpp	2017-08-25 01:08:16 UTC (rev 221175)
@@ -46,6 +46,9 @@
 
     configuration->m_applicationCacheDirectory = WebKit::WebProcessPool::legacyPlatformDefaultApplicationCacheDirectory();
     configuration->m_applicationCacheFlatFileSubdirectoryName = "ApplicationCache";
+#if PLATFORM(COCOA)
+    configuration->m_cacheStorageDirectory = WebKit::WebProcessPool::legacyPlatformDefaultCacheStorageDirectory();
+#endif
     configuration->m_diskCacheDirectory = WebKit::WebProcessPool::legacyPlatformDefaultNetworkCacheDirectory();
     configuration->m_mediaCacheDirectory = WebKit::WebProcessPool::legacyPlatformDefaultMediaCacheDirectory();
     configuration->m_indexedDBDatabaseDirectory = WebKit::WebProcessPool::legacyPlatformDefaultIndexedDBDatabaseDirectory();
@@ -63,6 +66,7 @@
 
     configuration->m_applicationCacheDirectory = legacyConfiguration.applicationCacheDirectory;
     configuration->m_applicationCacheFlatFileSubdirectoryName = legacyConfiguration.applicationCacheFlatFileSubdirectoryName;
+    configuration->m_cacheStorageDirectory = legacyConfiguration.cacheStorageDirectory;
     configuration->m_diskCacheDirectory = legacyConfiguration.networkCacheDirectory;
     configuration->m_mediaCacheDirectory = legacyConfiguration.mediaCacheDirectory;
     configuration->m_indexedDBDatabaseDirectory = WebKit::WebProcessPool::legacyPlatformDefaultIndexedDBDatabaseDirectory();
@@ -77,6 +81,9 @@
 ProcessPoolConfiguration::ProcessPoolConfiguration()
     : m_applicationCacheDirectory(WebsiteDataStore::defaultApplicationCacheDirectory())
     , m_applicationCacheFlatFileSubdirectoryName("Files")
+#if PLATFORM(COCA)
+    , m_cacheStorageDirectory(WebsiteDataStore::defaultCacheStorageDirectory())
+#endif
     , m_diskCacheDirectory(WebsiteDataStore::defaultNetworkCacheDirectory())
     , m_mediaCacheDirectory(WebsiteDataStore::defaultMediaCacheDirectory())
     , m_indexedDBDatabaseDirectory(WebsiteDataStore::defaultIndexedDBDatabaseDirectory())
@@ -103,6 +110,7 @@
     copy->m_diskCacheSizeOverride = this->m_diskCacheSizeOverride;
     copy->m_applicationCacheDirectory = this->m_applicationCacheDirectory;
     copy->m_applicationCacheFlatFileSubdirectoryName = this->m_applicationCacheFlatFileSubdirectoryName;
+    copy->m_cacheStorageDirectory = this->m_cacheStorageDirectory;
     copy->m_diskCacheDirectory = this->m_diskCacheDirectory;
     copy->m_mediaCacheDirectory = this->m_mediaCacheDirectory;
     copy->m_indexedDBDatabaseDirectory = this->m_indexedDBDatabaseDirectory;

Modified: trunk/Source/WebKit/UIProcess/API/APIProcessPoolConfiguration.h (221174 => 221175)


--- trunk/Source/WebKit/UIProcess/API/APIProcessPoolConfiguration.h	2017-08-25 00:57:42 UTC (rev 221174)
+++ trunk/Source/WebKit/UIProcess/API/APIProcessPoolConfiguration.h	2017-08-25 01:08:16 UTC (rev 221175)
@@ -68,6 +68,9 @@
 
     const WTF::String& applicationCacheFlatFileSubdirectoryName() const { return m_applicationCacheFlatFileSubdirectoryName; }
 
+    const WTF::String& cacheStorageDirectory() const { return m_cacheStorageDirectory; }
+    void setCacheStorageDirectory(WTF::String&& cacheStorageDirectory) { m_cacheStorageDirectory = WTFMove(cacheStorageDirectory); }
+
     const WTF::String& diskCacheDirectory() const { return m_diskCacheDirectory; }
     void setDiskCacheDirectory(const WTF::String& diskCacheDirectory) { m_diskCacheDirectory = diskCacheDirectory; }
 
@@ -149,6 +152,7 @@
 
     WTF::String m_applicationCacheDirectory;
     WTF::String m_applicationCacheFlatFileSubdirectoryName;
+    WTF::String m_cacheStorageDirectory;
     WTF::String m_diskCacheDirectory;
     WTF::String m_mediaCacheDirectory;
     WTF::String m_indexedDBDatabaseDirectory;

Modified: trunk/Source/WebKit/UIProcess/API/APIWebsiteDataStore.h (221174 => 221175)


--- trunk/Source/WebKit/UIProcess/API/APIWebsiteDataStore.h	2017-08-25 00:57:42 UTC (rev 221174)
+++ trunk/Source/WebKit/UIProcess/API/APIWebsiteDataStore.h	2017-08-25 01:08:16 UTC (rev 221175)
@@ -51,6 +51,7 @@
     HTTPCookieStore& httpCookieStore();
 
     static String defaultApplicationCacheDirectory();
+    static String defaultCacheStorageDirectory();
     static String defaultNetworkCacheDirectory();
     static String defaultMediaCacheDirectory();
 

Modified: trunk/Source/WebKit/UIProcess/API/Cocoa/APIWebsiteDataStoreCocoa.mm (221174 => 221175)


--- trunk/Source/WebKit/UIProcess/API/Cocoa/APIWebsiteDataStoreCocoa.mm	2017-08-25 00:57:42 UTC (rev 221174)
+++ trunk/Source/WebKit/UIProcess/API/Cocoa/APIWebsiteDataStoreCocoa.mm	2017-08-25 01:08:16 UTC (rev 221175)
@@ -52,6 +52,11 @@
     return cacheDirectoryFileSystemRepresentation("OfflineWebApplicationCache");
 }
 
+String WebsiteDataStore::defaultCacheStorageDirectory()
+{
+    return websiteDataDirectoryFileSystemRepresentation("CacheStorage");
+}
+
 String WebsiteDataStore::defaultNetworkCacheDirectory()
 {
     return cacheDirectoryFileSystemRepresentation("NetworkCache");

Modified: trunk/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm (221174 => 221175)


--- trunk/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm	2017-08-25 00:57:42 UTC (rev 221174)
+++ trunk/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm	2017-08-25 01:08:16 UTC (rev 221175)
@@ -452,6 +452,15 @@
     return stringByResolvingSymlinksInPath([cachePath stringByStandardizingPath]);
 }
 
+String WebProcessPool::legacyPlatformDefaultCacheStorageDirectory()
+{
+    RetainPtr<NSString> cacheStoragePath = adoptNS((NSString *)WKCopyFoundationCacheDirectory());
+    if (!cacheStoragePath)
+        cacheStoragePath = @"~/Library/WebKit/CacheStorage";
+
+    return stringByResolvingSymlinksInPath([cacheStoragePath stringByStandardizingPath]);
+}
+
 String WebProcessPool::legacyPlatformDefaultNetworkCacheDirectory()
 {
     RetainPtr<NSString> cachePath = adoptNS((NSString *)WKCopyFoundationCacheDirectory());

Modified: trunk/Source/WebKit/UIProcess/WebProcessPool.cpp (221174 => 221175)


--- trunk/Source/WebKit/UIProcess/WebProcessPool.cpp	2017-08-25 00:57:42 UTC (rev 221174)
+++ trunk/Source/WebKit/UIProcess/WebProcessPool.cpp	2017-08-25 01:08:16 UTC (rev 221175)
@@ -197,6 +197,7 @@
     configuration.mediaCacheDirectory = processPoolConfiguration.mediaCacheDirectory();
     configuration.mediaKeysStorageDirectory = processPoolConfiguration.mediaKeysStorageDirectory();
     configuration.resourceLoadStatisticsDirectory = processPoolConfiguration.resourceLoadStatisticsDirectory();
+    configuration.cacheStorageDirectory = processPoolConfiguration.cacheStorageDirectory();
     configuration.networkCacheDirectory = processPoolConfiguration.diskCacheDirectory();
     configuration._javascript_ConfigurationDirectory = processPoolConfiguration._javascript_ConfigurationDirectory();
 
@@ -428,6 +429,10 @@
     for (auto& scheme : m_urlSchemesRegisteredForCustomProtocols)
         parameters.urlSchemesRegisteredForCustomProtocols.append(scheme);
 
+    parameters.cacheStorageDirectory = m_configuration->cacheStorageDirectory();
+    if (!parameters.cacheStorageDirectory.isEmpty())
+        SandboxExtension::createHandleForReadWriteDirectory(parameters.cacheStorageDirectory, parameters.cacheStorageDirectoryExtensionHandle);
+
     parameters.diskCacheDirectory = m_configuration->diskCacheDirectory();
     if (!parameters.diskCacheDirectory.isEmpty())
         SandboxExtension::createHandleForReadWriteDirectory(parameters.diskCacheDirectory, parameters.diskCacheDirectoryExtensionHandle);

Modified: trunk/Source/WebKit/UIProcess/WebProcessPool.h (221174 => 221175)


--- trunk/Source/WebKit/UIProcess/WebProcessPool.h	2017-08-25 00:57:42 UTC (rev 221174)
+++ trunk/Source/WebKit/UIProcess/WebProcessPool.h	2017-08-25 01:08:16 UTC (rev 221175)
@@ -382,6 +382,7 @@
     static String legacyPlatformDefaultMediaKeysStorageDirectory();
     static String legacyPlatformDefaultMediaCacheDirectory();
     static String legacyPlatformDefaultApplicationCacheDirectory();
+    static String legacyPlatformDefaultCacheStorageDirectory();
     static String legacyPlatformDefaultNetworkCacheDirectory();
     static String legacyPlatformDefaultJavaScriptConfigurationDirectory();
     static bool isNetworkCacheEnabled();

Modified: trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h (221174 => 221175)


--- trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h	2017-08-25 00:57:42 UTC (rev 221174)
+++ trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h	2017-08-25 01:08:16 UTC (rev 221175)
@@ -67,6 +67,7 @@
 class WebsiteDataStore : public RefCounted<WebsiteDataStore>, public WebProcessLifetimeObserver {
 public:
     struct Configuration {
+        String cacheStorageDirectory;
         String networkCacheDirectory;
         String applicationCacheDirectory;
         String applicationCacheFlatFileSubdirectoryName;
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to