Title: [182031] trunk/Source/WebKit2
Revision
182031
Author
[email protected]
Date
2015-03-26 15:52:14 -0700 (Thu, 26 Mar 2015)

Log Message

[WK2][Cocoa] Add private API to override the network disk cache size
https://bugs.webkit.org/show_bug.cgi?id=143113
<rdar://problem/20315669>

Reviewed by Antti Koivisto.

Add private API to let the client override the network disk cache size.
By default, the network disk cache is automatically determined based on
the CacheModel and the available disk space. However, for testing
purposes, it can be used for the client-side to be able to override
the disk cache size.

* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::initializeNetworkProcess):
* NetworkProcess/NetworkProcess.h:
* NetworkProcess/cache/NetworkCache.cpp:
(WebKit::NetworkCache::Cache::setMaximumSize):
* NetworkProcess/cocoa/NetworkProcessCocoa.mm:
(WebKit::NetworkProcess::platformSetCacheModel):
* Shared/Network/NetworkProcessCreationParameters.cpp:
(WebKit::NetworkProcessCreationParameters::encode):
(WebKit::NetworkProcessCreationParameters::decode):
* Shared/Network/NetworkProcessCreationParameters.h:
* UIProcess/API/APIProcessPoolConfiguration.cpp:
(API::ProcessPoolConfiguration::copy):
* UIProcess/API/APIProcessPoolConfiguration.h:
* UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h:
* UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm:
(-[_WKProcessPoolConfiguration diskCacheSizeOverride]):
(-[_WKProcessPoolConfiguration setDiskCacheSizeOverride:]):
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::WebProcessPool):
(WebKit::WebProcessPool::ensureNetworkProcess):
* UIProcess/WebProcessPool.h:

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (182030 => 182031)


--- trunk/Source/WebKit2/ChangeLog	2015-03-26 22:35:30 UTC (rev 182030)
+++ trunk/Source/WebKit2/ChangeLog	2015-03-26 22:52:14 UTC (rev 182031)
@@ -1,3 +1,40 @@
+2015-03-26  Chris Dumez  <[email protected]>
+
+        [WK2][Cocoa] Add private API to override the network disk cache size
+        https://bugs.webkit.org/show_bug.cgi?id=143113
+        <rdar://problem/20315669>
+
+        Reviewed by Antti Koivisto.
+
+        Add private API to let the client override the network disk cache size.
+        By default, the network disk cache is automatically determined based on
+        the CacheModel and the available disk space. However, for testing
+        purposes, it can be used for the client-side to be able to override
+        the disk cache size.
+
+        * NetworkProcess/NetworkProcess.cpp:
+        (WebKit::NetworkProcess::initializeNetworkProcess):
+        * NetworkProcess/NetworkProcess.h:
+        * NetworkProcess/cache/NetworkCache.cpp:
+        (WebKit::NetworkCache::Cache::setMaximumSize):
+        * NetworkProcess/cocoa/NetworkProcessCocoa.mm:
+        (WebKit::NetworkProcess::platformSetCacheModel):
+        * Shared/Network/NetworkProcessCreationParameters.cpp:
+        (WebKit::NetworkProcessCreationParameters::encode):
+        (WebKit::NetworkProcessCreationParameters::decode):
+        * Shared/Network/NetworkProcessCreationParameters.h:
+        * UIProcess/API/APIProcessPoolConfiguration.cpp:
+        (API::ProcessPoolConfiguration::copy):
+        * UIProcess/API/APIProcessPoolConfiguration.h:
+        * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h:
+        * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm:
+        (-[_WKProcessPoolConfiguration diskCacheSizeOverride]):
+        (-[_WKProcessPoolConfiguration setDiskCacheSizeOverride:]):
+        * UIProcess/WebProcessPool.cpp:
+        (WebKit::WebProcessPool::WebProcessPool):
+        (WebKit::WebProcessPool::ensureNetworkProcess):
+        * UIProcess/WebProcessPool.h:
+
 2015-03-26  Andreas Kling  <[email protected]>
 
         [Darwin] Boost the web process QoS level while handling a synchronous IPC message.

Modified: trunk/Source/WebKit2/NetworkProcess/NetworkProcess.cpp (182030 => 182031)


--- trunk/Source/WebKit2/NetworkProcess/NetworkProcess.cpp	2015-03-26 22:35:30 UTC (rev 182030)
+++ trunk/Source/WebKit2/NetworkProcess/NetworkProcess.cpp	2015-03-26 22:52:14 UTC (rev 182031)
@@ -177,6 +177,8 @@
     memoryPressureHandler.install();
 
     m_diskCacheIsDisabledForTesting = parameters.shouldUseTestingNetworkSession;
+
+    m_diskCacheSizeOverride = parameters.diskCacheSizeOverride;
     setCacheModel(static_cast<uint32_t>(parameters.cacheModel));
 
     setCanHandleHTTPSServerTrustEvaluation(parameters.canHandleHTTPSServerTrustEvaluation);

Modified: trunk/Source/WebKit2/NetworkProcess/NetworkProcess.h (182030 => 182031)


--- trunk/Source/WebKit2/NetworkProcess/NetworkProcess.h	2015-03-26 22:35:30 UTC (rev 182030)
+++ trunk/Source/WebKit2/NetworkProcess/NetworkProcess.h	2015-03-26 22:52:14 UTC (rev 182031)
@@ -153,6 +153,7 @@
     String m_diskCacheDirectory;
     bool m_hasSetCacheModel;
     CacheModel m_cacheModel;
+    int64_t m_diskCacheSizeOverride { -1 };
     bool m_diskCacheIsDisabledForTesting;
     bool m_canHandleHTTPSServerTrustEvaluation;
 

Modified: trunk/Source/WebKit2/NetworkProcess/cocoa/NetworkProcessCocoa.mm (182030 => 182031)


--- trunk/Source/WebKit2/NetworkProcess/cocoa/NetworkProcessCocoa.mm	2015-03-26 22:35:30 UTC (rev 182030)
+++ trunk/Source/WebKit2/NetworkProcess/cocoa/NetworkProcessCocoa.mm	2015-03-26 22:52:14 UTC (rev 182031)
@@ -133,6 +133,9 @@
         cacheTotalCapacity, cacheMinDeadCapacity, cacheMaxDeadCapacity, deadDecodedDataDeletionInterval,
         pageCacheCapacity, urlCacheMemoryCapacity, urlCacheDiskCapacity);
 
+    if (m_diskCacheSizeOverride >= 0)
+        urlCacheDiskCapacity = m_diskCacheSizeOverride;
+
 #if ENABLE(NETWORK_CACHE)
     auto& networkCache = NetworkCache::singleton();
     if (networkCache.isEnabled()) {

Modified: trunk/Source/WebKit2/Shared/Network/NetworkProcessCreationParameters.cpp (182030 => 182031)


--- trunk/Source/WebKit2/Shared/Network/NetworkProcessCreationParameters.cpp	2015-03-26 22:35:30 UTC (rev 182030)
+++ trunk/Source/WebKit2/Shared/Network/NetworkProcessCreationParameters.cpp	2015-03-26 22:52:14 UTC (rev 182031)
@@ -40,6 +40,7 @@
 {
     encoder << privateBrowsingEnabled;
     encoder.encodeEnum(cacheModel);
+    encoder << diskCacheSizeOverride;
     encoder << canHandleHTTPSServerTrustEvaluation;
     encoder << diskCacheDirectory;
     encoder << diskCacheDirectoryExtensionHandle;
@@ -78,6 +79,8 @@
         return false;
     if (!decoder.decodeEnum(result.cacheModel))
         return false;
+    if (!decoder.decode(result.diskCacheSizeOverride))
+        return false;
     if (!decoder.decode(result.canHandleHTTPSServerTrustEvaluation))
         return false;
     if (!decoder.decode(result.diskCacheDirectory))

Modified: trunk/Source/WebKit2/Shared/Network/NetworkProcessCreationParameters.h (182030 => 182031)


--- trunk/Source/WebKit2/Shared/Network/NetworkProcessCreationParameters.h	2015-03-26 22:35:30 UTC (rev 182030)
+++ trunk/Source/WebKit2/Shared/Network/NetworkProcessCreationParameters.h	2015-03-26 22:52:14 UTC (rev 182031)
@@ -52,6 +52,7 @@
 
     bool privateBrowsingEnabled;
     CacheModel cacheModel;
+    int64_t diskCacheSizeOverride { -1 };
     bool canHandleHTTPSServerTrustEvaluation;
 
     String diskCacheDirectory;

Modified: trunk/Source/WebKit2/UIProcess/API/APIProcessPoolConfiguration.cpp (182030 => 182031)


--- trunk/Source/WebKit2/UIProcess/API/APIProcessPoolConfiguration.cpp	2015-03-26 22:35:30 UTC (rev 182030)
+++ trunk/Source/WebKit2/UIProcess/API/APIProcessPoolConfiguration.cpp	2015-03-26 22:52:14 UTC (rev 182031)
@@ -71,6 +71,7 @@
     copy->m_useNetworkProcess = this->m_useNetworkProcess;
     copy->m_maximumProcessCount = this->m_maximumProcessCount;
     copy->m_cacheModel = this->m_cacheModel;
+    copy->m_diskCacheSizeOverride = this->m_diskCacheSizeOverride;
     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 (182030 => 182031)


--- trunk/Source/WebKit2/UIProcess/API/APIProcessPoolConfiguration.h	2015-03-26 22:35:30 UTC (rev 182030)
+++ trunk/Source/WebKit2/UIProcess/API/APIProcessPoolConfiguration.h	2015-03-26 22:52:14 UTC (rev 182031)
@@ -55,8 +55,11 @@
     void setMaximumProcessCount(unsigned maximumProcessCount) { m_maximumProcessCount = maximumProcessCount; } 
 
     WebKit::CacheModel cacheModel() const { return m_cacheModel; }
-    void setCacheModel(WebKit::CacheModel cacheModel) { m_cacheModel = cacheModel; } 
+    void setCacheModel(WebKit::CacheModel cacheModel) { m_cacheModel = cacheModel; }
 
+    int64_t diskCacheSizeOverride() const { return m_diskCacheSizeOverride; }
+    void setDiskCacheSizeOverride(int64_t size) { m_diskCacheSizeOverride = size; }
+
     WTF::String indexedDBDatabaseDirectory() const { return m_indexedDBDatabaseDirectory; }
     void setIndexedDBDatabaseDirectory(const WTF::String& indexedDBDatabaseDirectory) { m_indexedDBDatabaseDirectory = indexedDBDatabaseDirectory; }
 
@@ -80,6 +83,7 @@
     bool m_useNetworkProcess { true };
     unsigned m_maximumProcessCount { 0 };
     WebKit::CacheModel m_cacheModel { WebKit::CacheModelPrimaryWebBrowser };
+    int64_t m_diskCacheSizeOverride { -1 };
     WTF::String m_injectedBundlePath;
     WTF::String m_indexedDBDatabaseDirectory;
     WTF::String m_localStorageDirectory;

Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h (182030 => 182031)


--- trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h	2015-03-26 22:35:30 UTC (rev 182030)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h	2015-03-26 22:52:14 UTC (rev 182031)
@@ -33,6 +33,7 @@
 
 @property (nonatomic, copy) NSURL *injectedBundleURL;
 @property (nonatomic) NSUInteger maximumProcessCount;
+@property (nonatomic) NSInteger diskCacheSizeOverride WK_AVAILABLE(WK_MAC_TBA, WK_IOS_TBA);
 @property (nonatomic, copy) NSArray *cachePartitionedURLSchemes;
 
 @end

Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm (182030 => 182031)


--- trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm	2015-03-26 22:35:30 UTC (rev 182030)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm	2015-03-26 22:52:14 UTC (rev 182031)
@@ -72,6 +72,16 @@
     _processPoolConfiguration->setMaximumProcessCount(maximumProcessCount);
 }
 
+- (NSInteger)diskCacheSizeOverride
+{
+    return _processPoolConfiguration->diskCacheSizeOverride();
+}
+
+- (void)setDiskCacheSizeOverride:(NSInteger)size
+{
+    _processPoolConfiguration->setDiskCacheSizeOverride(size);
+}
+
 - (NSArray *)cachePartitionedURLSchemes
 {
     auto schemes = _processPoolConfiguration->cachePartitionedURLSchemes();

Modified: trunk/Source/WebKit2/UIProcess/WebProcessPool.cpp (182030 => 182031)


--- trunk/Source/WebKit2/UIProcess/WebProcessPool.cpp	2015-03-26 22:35:30 UTC (rev 182030)
+++ trunk/Source/WebKit2/UIProcess/WebProcessPool.cpp	2015-03-26 22:52:14 UTC (rev 182031)
@@ -155,6 +155,7 @@
     , m_alwaysUsesComplexTextCodePath(false)
     , m_shouldUseFontSmoothing(true)
     , m_cacheModel(m_configuration->cacheModel())
+    , m_diskCacheSizeOverride(m_configuration->diskCacheSizeOverride())
     , m_memorySamplerEnabled(false)
     , m_memorySamplerInterval(1400.0)
     , m_websiteDataStore(API::WebsiteDataStore::create(websiteDataStoreConfiguration(m_configuration.get())))
@@ -403,6 +404,7 @@
     parameters.privateBrowsingEnabled = WebPreferences::anyPagesAreUsingPrivateBrowsing();
 
     parameters.cacheModel = m_cacheModel;
+    parameters.diskCacheSizeOverride = m_diskCacheSizeOverride;
     parameters.canHandleHTTPSServerTrustEvaluation = m_canHandleHTTPSServerTrustEvaluation;
 
     parameters.diskCacheDirectory = stringByResolvingSymlinksInPath(diskCacheDirectory());

Modified: trunk/Source/WebKit2/UIProcess/WebProcessPool.h (182030 => 182031)


--- trunk/Source/WebKit2/UIProcess/WebProcessPool.h	2015-03-26 22:35:30 UTC (rev 182030)
+++ trunk/Source/WebKit2/UIProcess/WebProcessPool.h	2015-03-26 22:52:14 UTC (rev 182031)
@@ -475,6 +475,7 @@
     Vector<std::pair<String, RefPtr<API::Object>>> m_messagesToInjectedBundlePostedToEmptyContext;
 
     CacheModel m_cacheModel;
+    uint64_t m_diskCacheSizeOverride;
 
     bool m_memorySamplerEnabled;
     double m_memorySamplerInterval;
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to