Diff
Modified: trunk/Source/WebKit2/ChangeLog (185261 => 185262)
--- trunk/Source/WebKit2/ChangeLog 2015-06-05 19:27:26 UTC (rev 185261)
+++ trunk/Source/WebKit2/ChangeLog 2015-06-05 21:31:27 UTC (rev 185262)
@@ -1,5 +1,42 @@
2015-06-05 Anders Carlsson <ander...@apple.com>
+ Make the network cache directory part of WKContextConfigurationRef
+ https://bugs.webkit.org/show_bug.cgi?id=145711
+
+ Reviewed by Antti Koivisto.
+
+ Also, make the UI process be in control of where we place the new network cache.
+ When using the Modern WebKit API, put the cache in ~/Library/Caches/<Bundle ID>/WebKit/NetworkCache,
+ and put the cache in ~/Library/Caches/<Bundle ID>/WebKitCache otherwise (this is just for Safari).
+
+ * NetworkProcess/cache/NetworkCacheStorage.cpp:
+ (WebKit::NetworkCache::Storage::open):
+ * UIProcess/API/APIProcessPoolConfiguration.cpp:
+ (API::ProcessPoolConfiguration::createWithLegacyOptions):
+ (API::ProcessPoolConfiguration::ProcessPoolConfiguration):
+ (API::ProcessPoolConfiguration::copy):
+ * UIProcess/API/APIProcessPoolConfiguration.h:
+ * UIProcess/API/C/WKContext.cpp:
+ (WKContextSetDiskCacheDirectory): Deleted.
+ * UIProcess/API/C/WKContextConfigurationRef.cpp:
+ (WKContextConfigurationCopyDiskCacheDirectory):
+ (WKContextConfigurationSetDiskCacheDirectory):
+ * UIProcess/API/C/WKContextConfigurationRef.h:
+ * UIProcess/API/C/WKContextPrivate.h:
+ * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
+ (WebKit::WebProcessPool::platformInitializeNetworkProcess):
+ (WebKit::WebProcessPool::legacyPlatformDefaultNetworkCacheDirectory):
+ (WebKit::WebProcessPool::isNetworkCacheEnabled):
+ (WebKit::WebProcessPool::platformDefaultDiskCacheDirectory): Deleted.
+ * UIProcess/WebProcessPool.cpp:
+ (WebKit::legacyWebsiteDataStoreConfiguration):
+ (WebKit::WebProcessPool::WebProcessPool):
+ (WebKit::WebProcessPool::ensureNetworkProcess):
+ (WebKit::WebProcessPool::diskCacheDirectory): Deleted.
+ * UIProcess/WebProcessPool.h:
+
+2015-06-05 Anders Carlsson <ander...@apple.com>
+
Make the application cache directory part of WKContextConfigurationRef
https://bugs.webkit.org/show_bug.cgi?id=145704
Modified: trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheStorage.cpp (185261 => 185262)
--- trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheStorage.cpp 2015-06-05 19:27:26 UTC (rev 185261)
+++ trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheStorage.cpp 2015-06-05 21:31:27 UTC (rev 185262)
@@ -41,7 +41,6 @@
namespace WebKit {
namespace NetworkCache {
-static const char networkCacheSubdirectory[] = "WebKitCache";
static const char versionDirectoryPrefix[] = "Version ";
static const char recordsDirectoryName[] = "Records";
static const char blobsDirectoryName[] = "Blobs";
@@ -79,11 +78,9 @@
{
ASSERT(RunLoop::isMain());
- String networkCachePath = WebCore::pathByAppendingComponent(cachePath, networkCacheSubdirectory);
-
- if (!WebCore::makeAllDirectories(networkCachePath))
+ if (!WebCore::makeAllDirectories(cachePath))
return nullptr;
- return std::unique_ptr<Storage>(new Storage(networkCachePath));
+ return std::unique_ptr<Storage>(new Storage(cachePath));
}
static String makeVersionedDirectoryPath(const String& baseDirectoryPath)
Modified: trunk/Source/WebKit2/UIProcess/API/APIProcessPoolConfiguration.cpp (185261 => 185262)
--- trunk/Source/WebKit2/UIProcess/API/APIProcessPoolConfiguration.cpp 2015-06-05 19:27:26 UTC (rev 185261)
+++ trunk/Source/WebKit2/UIProcess/API/APIProcessPoolConfiguration.cpp 2015-06-05 21:31:27 UTC (rev 185262)
@@ -46,6 +46,7 @@
configuration->m_cacheModel = WebKit::CacheModelDocumentViewer;
configuration->m_applicationCacheDirectory = WebKit::WebProcessPool::legacyPlatformDefaultApplicationCacheDirectory();
+ configuration->m_diskCacheDirectory = WebKit::WebProcessPool::legacyPlatformDefaultNetworkCacheDirectory();
configuration->m_indexedDBDatabaseDirectory = WebKit::WebProcessPool::legacyPlatformDefaultIndexedDBDatabaseDirectory();
configuration->m_localStorageDirectory = WebKit::WebProcessPool::legacyPlatformDefaultLocalStorageDirectory();
configuration->m_mediaKeysStorageDirectory = WebKit::WebProcessPool::legacyPlatformDefaultMediaKeysStorageDirectory();
@@ -56,6 +57,7 @@
ProcessPoolConfiguration::ProcessPoolConfiguration()
: m_applicationCacheDirectory(WebsiteDataStore::defaultApplicationCacheDirectory())
+ , m_diskCacheDirectory(WebsiteDataStore::defaultNetworkCacheDirectory())
, m_indexedDBDatabaseDirectory(WebsiteDataStore::defaultIndexedDBDatabaseDirectory())
, m_localStorageDirectory(WebsiteDataStore::defaultLocalStorageDirectory())
, m_webSQLDatabaseDirectory(WebsiteDataStore::defaultWebSQLDatabaseDirectory())
@@ -78,6 +80,7 @@
copy->m_cacheModel = this->m_cacheModel;
copy->m_diskCacheSizeOverride = this->m_diskCacheSizeOverride;
copy->m_applicationCacheDirectory = this->m_applicationCacheDirectory;
+ copy->m_diskCacheDirectory = this->m_diskCacheDirectory;
copy->m_indexedDBDatabaseDirectory = this->m_indexedDBDatabaseDirectory;
copy->m_injectedBundlePath = this->m_injectedBundlePath;
copy->m_localStorageDirectory = this->m_localStorageDirectory;
Modified: trunk/Source/WebKit2/UIProcess/API/APIProcessPoolConfiguration.h (185261 => 185262)
--- trunk/Source/WebKit2/UIProcess/API/APIProcessPoolConfiguration.h 2015-06-05 19:27:26 UTC (rev 185261)
+++ trunk/Source/WebKit2/UIProcess/API/APIProcessPoolConfiguration.h 2015-06-05 21:31:27 UTC (rev 185262)
@@ -66,6 +66,9 @@
WTF::String applicationCacheDirectory() const { return m_applicationCacheDirectory; }
void setApplicationCacheDirectory(const WTF::String& applicationCacheDirectory) { m_applicationCacheDirectory = applicationCacheDirectory; }
+ WTF::String diskCacheDirectory() const { return m_diskCacheDirectory; }
+ void setDiskCacheDirectory(const WTF::String& diskCacheDirectory) { m_diskCacheDirectory = diskCacheDirectory; }
+
WTF::String indexedDBDatabaseDirectory() const { return m_indexedDBDatabaseDirectory; }
void setIndexedDBDatabaseDirectory(const WTF::String& indexedDBDatabaseDirectory) { m_indexedDBDatabaseDirectory = indexedDBDatabaseDirectory; }
@@ -94,6 +97,7 @@
int64_t m_diskCacheSizeOverride { -1 };
WTF::String m_applicationCacheDirectory;
+ WTF::String m_diskCacheDirectory;
WTF::String m_indexedDBDatabaseDirectory;
WTF::String m_injectedBundlePath;
WTF::String m_localStorageDirectory;
Modified: trunk/Source/WebKit2/UIProcess/API/C/WKContext.cpp (185261 => 185262)
--- trunk/Source/WebKit2/UIProcess/API/C/WKContext.cpp 2015-06-05 19:27:26 UTC (rev 185261)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKContext.cpp 2015-06-05 21:31:27 UTC (rev 185262)
@@ -504,11 +504,6 @@
toImpl(contextRef)->allowSpecificHTTPSCertificateForHost(toImpl(certificateRef), toImpl(hostRef)->string());
}
-WK_EXPORT void WKContextSetDiskCacheDirectory(WKContextRef contextRef, WKStringRef diskCacheDirectory)
-{
- toImpl(contextRef)->setDiskCacheDirectory(toImpl(diskCacheDirectory)->string());
-}
-
WK_EXPORT void WKContextSetCookieStorageDirectory(WKContextRef contextRef, WKStringRef cookieStorageDirectory)
{
toImpl(contextRef)->setCookieStorageDirectory(toImpl(cookieStorageDirectory)->string());
Modified: trunk/Source/WebKit2/UIProcess/API/C/WKContextConfigurationRef.cpp (185261 => 185262)
--- trunk/Source/WebKit2/UIProcess/API/C/WKContextConfigurationRef.cpp 2015-06-05 19:27:26 UTC (rev 185261)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKContextConfigurationRef.cpp 2015-06-05 21:31:27 UTC (rev 185262)
@@ -42,6 +42,16 @@
return toAPI(&configuration.leakRef());
}
+WKStringRef WKContextConfigurationCopyDiskCacheDirectory(WKContextConfigurationRef configuration)
+{
+ return toCopiedAPI(toImpl(configuration)->diskCacheDirectory());
+}
+
+void WKContextConfigurationSetDiskCacheDirectory(WKContextConfigurationRef configuration, WKStringRef diskCacheDirectory)
+{
+ toImpl(configuration)->setDiskCacheDirectory(toImpl(diskCacheDirectory)->string());
+}
+
WKStringRef WKContextConfigurationCopyApplicationCacheDirectory(WKContextConfigurationRef configuration)
{
return toCopiedAPI(toImpl(configuration)->applicationCacheDirectory());
Modified: trunk/Source/WebKit2/UIProcess/API/C/WKContextConfigurationRef.h (185261 => 185262)
--- trunk/Source/WebKit2/UIProcess/API/C/WKContextConfigurationRef.h 2015-06-05 19:27:26 UTC (rev 185261)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKContextConfigurationRef.h 2015-06-05 21:31:27 UTC (rev 185262)
@@ -37,6 +37,9 @@
WK_EXPORT WKStringRef WKContextConfigurationCopyApplicationCacheDirectory(WKContextConfigurationRef configuration);
WK_EXPORT void WKContextConfigurationSetApplicationCacheDirectory(WKContextConfigurationRef configuration, WKStringRef applicationCacheDirectory);
+WK_EXPORT WKStringRef WKContextConfigurationCopyDiskCacheDirectory(WKContextConfigurationRef configuration);
+WK_EXPORT void WKContextConfigurationSetDiskCacheDirectory(WKContextConfigurationRef configuration, WKStringRef diskCacheDirectory);
+
WK_EXPORT WKStringRef WKContextConfigurationCopyIndexedDBDatabaseDirectory(WKContextConfigurationRef configuration);
WK_EXPORT void WKContextConfigurationSetIndexedDBDatabaseDirectory(WKContextConfigurationRef configuration, WKStringRef indexedDBDatabaseDirectory);
Modified: trunk/Source/WebKit2/UIProcess/API/C/WKContextPrivate.h (185261 => 185262)
--- trunk/Source/WebKit2/UIProcess/API/C/WKContextPrivate.h 2015-06-05 19:27:26 UTC (rev 185261)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKContextPrivate.h 2015-06-05 21:31:27 UTC (rev 185262)
@@ -64,7 +64,6 @@
WK_EXPORT void WKContextAllowSpecificHTTPSCertificateForHost(WKContextRef context, WKCertificateInfoRef certificate, WKStringRef host);
-WK_EXPORT void WKContextSetDiskCacheDirectory(WKContextRef context, WKStringRef diskCacheDirectory);
WK_EXPORT void WKContextSetCookieStorageDirectory(WKContextRef context, WKStringRef cookieStorageDirectory);
// FIXME: This is a workaround for testing purposes only and should be removed once a better
Modified: trunk/Source/WebKit2/UIProcess/Cocoa/WebProcessPoolCocoa.mm (185261 => 185262)
--- trunk/Source/WebKit2/UIProcess/Cocoa/WebProcessPoolCocoa.mm 2015-06-05 19:27:26 UTC (rev 185261)
+++ trunk/Source/WebKit2/UIProcess/Cocoa/WebProcessPoolCocoa.mm 2015-06-05 21:31:27 UTC (rev 185262)
@@ -252,8 +252,7 @@
#endif
#if ENABLE(NETWORK_CACHE)
- bool networkCacheEnabledByDefaults = [defaults boolForKey:WebKitNetworkCacheEnabledDefaultsKey] && ![defaults boolForKey:WebKitNetworkCacheTemporarilyDisabledForTestingKey];
- parameters.shouldEnableNetworkCache = networkCacheEnabledByDefaults && linkedOnOrAfter(LibraryVersion::FirstWithNetworkCache);
+ parameters.shouldEnableNetworkCache = isNetworkCacheEnabled();
parameters.shouldEnableNetworkCacheEfficacyLogging = [defaults boolForKey:WebKitNetworkCacheEfficacyLoggingEnabledDefaultsKey];
#endif
@@ -270,14 +269,6 @@
unregisterNotificationObservers();
}
-String WebProcessPool::platformDefaultDiskCacheDirectory() const
-{
- RetainPtr<NSString> cachePath = adoptNS((NSString *)WKCopyFoundationCacheDirectory());
- if (!cachePath)
- cachePath = @"~/Library/Caches/com.apple.WebKit.WebProcess";
- return stringByResolvingSymlinksInPath([cachePath stringByStandardizingPath]);
-}
-
#if PLATFORM(IOS)
String WebProcessPool::parentBundleDirectory() const
{
@@ -390,6 +381,33 @@
return stringByResolvingSymlinksInPath([cachePath stringByStandardizingPath]);
}
+String WebProcessPool::legacyPlatformDefaultNetworkCacheDirectory()
+{
+ RetainPtr<NSString> cachePath = adoptNS((NSString *)WKCopyFoundationCacheDirectory());
+ if (!cachePath)
+ cachePath = @"~/Library/Caches/com.apple.WebKit.WebProcess";
+
+#if ENABLE(NETWORK_CACHE)
+ if (isNetworkCacheEnabled())
+ cachePath = [cachePath stringByAppendingPathComponent:@"WebKitCache"];
+#endif
+
+ return stringByResolvingSymlinksInPath([cachePath stringByStandardizingPath]);
+}
+
+bool WebProcessPool::isNetworkCacheEnabled()
+{
+#if ENABLE(NETWORK_CACHE)
+ NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
+
+ bool networkCacheEnabledByDefaults = [defaults boolForKey:WebKitNetworkCacheEnabledDefaultsKey] && ![defaults boolForKey:WebKitNetworkCacheTemporarilyDisabledForTestingKey];
+
+ return networkCacheEnabledByDefaults && linkedOnOrAfter(LibraryVersion::FirstWithNetworkCache);
+#else
+ return false;
+#endif
+}
+
String WebProcessPool::platformDefaultIconDatabasePath() const
{
// FIXME: <rdar://problem/9138817> - After this "backwards compatibility" radar is removed, this code should be removed to only return an empty String.
Modified: trunk/Source/WebKit2/UIProcess/WebProcessPool.cpp (185261 => 185262)
--- trunk/Source/WebKit2/UIProcess/WebProcessPool.cpp 2015-06-05 19:27:26 UTC (rev 185261)
+++ trunk/Source/WebKit2/UIProcess/WebProcessPool.cpp 2015-06-05 21:31:27 UTC (rev 185262)
@@ -138,6 +138,7 @@
configuration.webSQLDatabaseDirectory = processPoolConfiguration.webSQLDatabaseDirectory();
configuration.applicationCacheDirectory = WebProcessPool::legacyPlatformDefaultApplicationCacheDirectory();
configuration.mediaKeysStorageDirectory = WebProcessPool::legacyPlatformDefaultMediaKeysStorageDirectory();
+ configuration.networkCacheDirectory = WebProcessPool::legacyPlatformDefaultNetworkCacheDirectory();
return configuration;
}
@@ -166,6 +167,7 @@
, m_initialHTTPCookieAcceptPolicy(HTTPCookieAcceptPolicyOnlyFromMainDocumentDomain)
#endif
, m_applicationCacheDirectory(configuration.applicationCacheDirectory())
+ , m_diskCacheDirectory(configuration.diskCacheDirectory())
, m_indexedDBDatabaseDirectory(configuration.indexedDBDatabaseDirectory())
, m_mediaKeysStorageDirectory(configuration.mediaKeysStorageDirectory())
, m_webSQLDatabaseDirectory(configuration.webSQLDatabaseDirectory())
@@ -416,7 +418,7 @@
parameters.diskCacheSizeOverride = m_diskCacheSizeOverride;
parameters.canHandleHTTPSServerTrustEvaluation = m_canHandleHTTPSServerTrustEvaluation;
- parameters.diskCacheDirectory = stringByResolvingSymlinksInPath(diskCacheDirectory());
+ parameters.diskCacheDirectory = m_diskCacheDirectory;
if (!parameters.diskCacheDirectory.isEmpty())
SandboxExtension::createHandleForReadWriteDirectory(parameters.diskCacheDirectory, parameters.diskCacheDirectoryExtensionHandle);
@@ -1182,14 +1184,6 @@
return platformDefaultIconDatabasePath();
}
-String WebProcessPool::diskCacheDirectory() const
-{
- if (!m_overrideDiskCacheDirectory.isEmpty())
- return m_overrideDiskCacheDirectory;
-
- return platformDefaultDiskCacheDirectory();
-}
-
#if ENABLE(SECCOMP_FILTERS)
String WebProcessPool::cookieStorageDirectory() const
{
Modified: trunk/Source/WebKit2/UIProcess/WebProcessPool.h (185261 => 185262)
--- trunk/Source/WebKit2/UIProcess/WebProcessPool.h 2015-06-05 19:27:26 UTC (rev 185261)
+++ trunk/Source/WebKit2/UIProcess/WebProcessPool.h 2015-06-05 21:31:27 UTC (rev 185262)
@@ -245,7 +245,6 @@
void setIconDatabasePath(const String&);
String iconDatabasePath() const;
- void setDiskCacheDirectory(const String& dir) { m_overrideDiskCacheDirectory = dir; }
void setCookieStorageDirectory(const String& dir) { m_overrideCookieStorageDirectory = dir; }
void useTestingNetworkSession();
@@ -364,6 +363,8 @@
static String legacyPlatformDefaultWebSQLDatabaseDirectory();
static String legacyPlatformDefaultMediaKeysStorageDirectory();
static String legacyPlatformDefaultApplicationCacheDirectory();
+ static String legacyPlatformDefaultNetworkCacheDirectory();
+ static bool isNetworkCacheEnabled();
private:
void platformInitialize();
@@ -395,9 +396,6 @@
String platformDefaultIconDatabasePath() const;
- String diskCacheDirectory() const;
- String platformDefaultDiskCacheDirectory() const;
-
#if PLATFORM(IOS) || ENABLE(SECCOMP_FILTERS)
String cookieStorageDirectory() const;
#endif
@@ -505,10 +503,10 @@
#endif
String m_overrideIconDatabasePath;
- String m_overrideDiskCacheDirectory;
String m_overrideCookieStorageDirectory;
String m_applicationCacheDirectory;
+ String m_diskCacheDirectory;
String m_indexedDBDatabaseDirectory;
String m_mediaKeysStorageDirectory;
String m_webSQLDatabaseDirectory;
Modified: trunk/Tools/ChangeLog (185261 => 185262)
--- trunk/Tools/ChangeLog 2015-06-05 19:27:26 UTC (rev 185261)
+++ trunk/Tools/ChangeLog 2015-06-05 21:31:27 UTC (rev 185262)
@@ -1,5 +1,15 @@
2015-06-05 Anders Carlsson <ander...@apple.com>
+ Make the network cache directory part of WKContextConfigurationRef
+ https://bugs.webkit.org/show_bug.cgi?id=145711
+
+ Reviewed by Antti Koivisto.
+
+ * WebKitTestRunner/TestController.cpp:
+ (WTR::TestController::initialize):
+
+2015-06-05 Anders Carlsson <ander...@apple.com>
+
Make the application cache directory part of WKContextConfigurationRef
https://bugs.webkit.org/show_bug.cgi?id=145704
Modified: trunk/Tools/WebKitTestRunner/TestController.cpp (185261 => 185262)
--- trunk/Tools/WebKitTestRunner/TestController.cpp 2015-06-05 19:27:26 UTC (rev 185261)
+++ trunk/Tools/WebKitTestRunner/TestController.cpp 2015-06-05 21:31:27 UTC (rev 185262)
@@ -359,6 +359,7 @@
const char separator = '/';
WKContextConfigurationSetApplicationCacheDirectory(configuration.get(), toWK(temporaryFolder + separator + "ApplicationCache").get());
+ WKContextConfigurationSetDiskCacheDirectory(configuration.get(), toWK(temporaryFolder + separator + "Cache").get());
WKContextConfigurationSetIndexedDBDatabaseDirectory(configuration.get(), toWK(temporaryFolder + separator + "Databases" + separator + "IndexedDB").get());
WKContextConfigurationSetLocalStorageDirectory(configuration.get(), toWK(temporaryFolder + separator + "LocalStorage").get());
WKContextConfigurationSetWebSQLDatabaseDirectory(configuration.get(), toWK(temporaryFolder + separator + "Databases" + separator + "WebSQL").get());
@@ -376,10 +377,7 @@
if (const char* dumpRenderTreeTemp = libraryPathForTesting()) {
String temporaryFolder = String::fromUTF8(dumpRenderTreeTemp);
- const char separator = '/';
-
// FIXME: This should be migrated to WKContextConfigurationRef.
- WKContextSetDiskCacheDirectory(m_context.get(), toWK(temporaryFolder + separator + "Cache").get());
// Disable icon database to avoid fetching <http://127.0.0.1:8000/favicon.ico> and making tests flaky.
// Invividual tests can enable it using testRunner.setIconDatabaseEnabled, although it's not currently supported in WebKitTestRunner.
WKContextSetIconDatabasePath(m_context.get(), toWK(emptyString()).get());