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;