Modified: trunk/Source/WebKit/win/ChangeLog (173199 => 173200)
--- trunk/Source/WebKit/win/ChangeLog 2014-09-03 04:58:55 UTC (rev 173199)
+++ trunk/Source/WebKit/win/ChangeLog 2014-09-03 06:04:44 UTC (rev 173200)
@@ -1,3 +1,18 @@
+2014-09-02 [email protected] <[email protected]>
+
+ [WinCairo] Memory cache capacity is not set.
+ https://bugs.webkit.org/show_bug.cgi?id=136432
+
+ Reviewed by Alex Christensen.
+
+ Reuse code from AppleWin to set memory and disk cache capacity.
+
+ * WebKitSystemBits.cpp:
+ (WebVolumeFreeSize):
+ * WebKitSystemBits.h:
+ * WebView.cpp:
+ (WebView::setCacheModel):
+
2014-08-26 Brent Fulgham <[email protected]>
[Win] WebKit IDL incorrectly passes HWND as OLE_HANDLE
Modified: trunk/Source/WebKit/win/WebKitSystemBits.cpp (173199 => 173200)
--- trunk/Source/WebKit/win/WebKitSystemBits.cpp 2014-09-03 04:58:55 UTC (rev 173199)
+++ trunk/Source/WebKit/win/WebKitSystemBits.cpp 2014-09-03 06:04:44 UTC (rev 173200)
@@ -29,9 +29,7 @@
#include "config.h"
#include "WebKitSystemBits.h"
-#include <CoreFoundation/CoreFoundation.h>
#include <windows.h>
-#include <wtf/text/WTFString.h>
unsigned long long WebMemorySize()
{
@@ -41,9 +39,8 @@
return statex.ullTotalPhys;
}
-unsigned long long WebVolumeFreeSize(CFStringRef cfstringPath)
+unsigned long long WebVolumeFreeSize(const String& path)
{
- WTF::String path(cfstringPath);
ULARGE_INTEGER freeBytesToCaller;
BOOL result = GetDiskFreeSpaceExW((LPCWSTR)path.charactersWithNullTermination().data(), &freeBytesToCaller, 0, 0);
if (!result)
Modified: trunk/Source/WebKit/win/WebKitSystemBits.h (173199 => 173200)
--- trunk/Source/WebKit/win/WebKitSystemBits.h 2014-09-03 04:58:55 UTC (rev 173199)
+++ trunk/Source/WebKit/win/WebKitSystemBits.h 2014-09-03 06:04:44 UTC (rev 173200)
@@ -29,9 +29,9 @@
#ifndef WebKitSystemBits_h
#define WebKitSystemBits_h
-typedef const struct __CFString* CFStringRef;
+#include <wtf/text/WTFString.h>
unsigned long long WebMemorySize();
-unsigned long long WebVolumeFreeSize(CFStringRef path);
+unsigned long long WebVolumeFreeSize(const String& path);
#endif // WebKitSystemBits_h
Modified: trunk/Source/WebKit/win/WebView.cpp (173199 => 173200)
--- trunk/Source/WebKit/win/WebView.cpp 2014-09-03 04:58:55 UTC (rev 173199)
+++ trunk/Source/WebKit/win/WebView.cpp 2014-09-03 06:04:44 UTC (rev 173200)
@@ -162,7 +162,9 @@
#if USE(CFNETWORK)
#include <CFNetwork/CFURLCachePriv.h>
#include <CFNetwork/CFURLProtocolPriv.h>
-#include <WebKitSystemInterface/WebKitSystemInterface.h>
+#include <WebKitSystemInterface/WebKitSystemInterface.h>
+#elif USE(CURL)
+#include <WebCore/CurlCacheManager.h>
#endif
#if USE(CA)
@@ -483,10 +485,12 @@
void WebView::setCacheModel(WebCacheModel cacheModel)
{
-#if USE(CFNETWORK)
if (s_didSetCacheModel && cacheModel == s_cacheModel)
return;
+ String cacheDirectory;
+
+#if USE(CFNETWORK)
RetainPtr<CFURLCacheRef> cfurlCache = adoptCF(CFURLCacheCopySharedURLCache());
RetainPtr<CFStringRef> cfurlCacheDirectory = adoptCF(wkCopyFoundationCacheDirectory(0));
if (!cfurlCacheDirectory) {
@@ -496,11 +500,18 @@
else
cfurlCacheDirectory = WebCore::localUserSpecificStorageDirectory().createCFString();
}
+ cacheDirectory = String(cfurlCacheDirectory);
+#elif USE(CURL)
+ cacheDirectory = CurlCacheManager::getInstance().cacheDirectory();
+#endif
+ long cacheMemoryCapacity = 0;
+ long cacheDiskCapacity = 0;
+
// As a fudge factor, use 1000 instead of 1024, in case the reported byte
// count doesn't align exactly to a megabyte boundary.
unsigned long long memSize = WebMemorySize() / 1024 / 1000;
- unsigned long long diskFreeSize = WebVolumeFreeSize(cfurlCacheDirectory.get()) / 1024 / 1000;
+ unsigned long long diskFreeSize = WebVolumeFreeSize(cacheDirectory) / 1024 / 1000;
unsigned cacheTotalCapacity = 0;
unsigned cacheMinDeadCapacity = 0;
@@ -509,8 +520,6 @@
unsigned pageCacheCapacity = 0;
- CFIndex cfurlCacheMemoryCapacity = 0;
- CFIndex cfurlCacheDiskCapacity = 0;
switch (cacheModel) {
case WebCacheModelDocumentViewer: {
@@ -530,12 +539,13 @@
cacheMinDeadCapacity = 0;
cacheMaxDeadCapacity = 0;
- // Foundation memory cache capacity (in bytes)
- cfurlCacheMemoryCapacity = 0;
+ // Memory cache capacity (in bytes)
+ cacheMemoryCapacity = 0;
+#if USE(CFNETWORK)
// Foundation disk cache capacity (in bytes)
- cfurlCacheDiskCapacity = CFURLCacheDiskCapacity(cfurlCache.get());
-
+ cacheDiskCapacity = CFURLCacheDiskCapacity(cfurlCache.get());
+#endif
break;
}
case WebCacheModelDocumentBrowser: {
@@ -562,25 +572,25 @@
cacheMinDeadCapacity = cacheTotalCapacity / 8;
cacheMaxDeadCapacity = cacheTotalCapacity / 4;
- // Foundation memory cache capacity (in bytes)
+ // Memory cache capacity (in bytes)
if (memSize >= 2048)
- cfurlCacheMemoryCapacity = 4 * 1024 * 1024;
+ cacheMemoryCapacity = 4 * 1024 * 1024;
else if (memSize >= 1024)
- cfurlCacheMemoryCapacity = 2 * 1024 * 1024;
+ cacheMemoryCapacity = 2 * 1024 * 1024;
else if (memSize >= 512)
- cfurlCacheMemoryCapacity = 1 * 1024 * 1024;
+ cacheMemoryCapacity = 1 * 1024 * 1024;
else
- cfurlCacheMemoryCapacity = 512 * 1024;
+ cacheMemoryCapacity = 512 * 1024;
- // Foundation disk cache capacity (in bytes)
+ // Disk cache capacity (in bytes)
if (diskFreeSize >= 16384)
- cfurlCacheDiskCapacity = 50 * 1024 * 1024;
+ cacheDiskCapacity = 50 * 1024 * 1024;
else if (diskFreeSize >= 8192)
- cfurlCacheDiskCapacity = 40 * 1024 * 1024;
+ cacheDiskCapacity = 40 * 1024 * 1024;
else if (diskFreeSize >= 4096)
- cfurlCacheDiskCapacity = 30 * 1024 * 1024;
+ cacheDiskCapacity = 30 * 1024 * 1024;
else
- cfurlCacheDiskCapacity = 20 * 1024 * 1024;
+ cacheDiskCapacity = 20 * 1024 * 1024;
break;
}
@@ -620,30 +630,30 @@
deadDecodedDataDeletionInterval = std::chrono::seconds { 60 };
- // Foundation memory cache capacity (in bytes)
+ // Memory cache capacity (in bytes)
// (These values are small because WebCore does most caching itself.)
if (memSize >= 1024)
- cfurlCacheMemoryCapacity = 4 * 1024 * 1024;
+ cacheMemoryCapacity = 4 * 1024 * 1024;
else if (memSize >= 512)
- cfurlCacheMemoryCapacity = 2 * 1024 * 1024;
+ cacheMemoryCapacity = 2 * 1024 * 1024;
else if (memSize >= 256)
- cfurlCacheMemoryCapacity = 1 * 1024 * 1024;
+ cacheMemoryCapacity = 1 * 1024 * 1024;
else
- cfurlCacheMemoryCapacity = 512 * 1024;
+ cacheMemoryCapacity = 512 * 1024;
- // Foundation disk cache capacity (in bytes)
+ // Disk cache capacity (in bytes)
if (diskFreeSize >= 16384)
- cfurlCacheDiskCapacity = 175 * 1024 * 1024;
+ cacheDiskCapacity = 175 * 1024 * 1024;
else if (diskFreeSize >= 8192)
- cfurlCacheDiskCapacity = 150 * 1024 * 1024;
+ cacheDiskCapacity = 150 * 1024 * 1024;
else if (diskFreeSize >= 4096)
- cfurlCacheDiskCapacity = 125 * 1024 * 1024;
+ cacheDiskCapacity = 125 * 1024 * 1024;
else if (diskFreeSize >= 2048)
- cfurlCacheDiskCapacity = 100 * 1024 * 1024;
+ cacheDiskCapacity = 100 * 1024 * 1024;
else if (diskFreeSize >= 1024)
- cfurlCacheDiskCapacity = 75 * 1024 * 1024;
+ cacheDiskCapacity = 75 * 1024 * 1024;
else
- cfurlCacheDiskCapacity = 50 * 1024 * 1024;
+ cacheDiskCapacity = 50 * 1024 * 1024;
break;
}
@@ -651,20 +661,23 @@
ASSERT_NOT_REACHED();
}
- // Don't shrink a big disk cache, since that would cause churn.
- cfurlCacheDiskCapacity = max(cfurlCacheDiskCapacity, CFURLCacheDiskCapacity(cfurlCache.get()));
-
memoryCache()->setCapacities(cacheMinDeadCapacity, cacheMaxDeadCapacity, cacheTotalCapacity);
memoryCache()->setDeadDecodedDataDeletionInterval(deadDecodedDataDeletionInterval);
pageCache()->setCapacity(pageCacheCapacity);
- CFURLCacheSetMemoryCapacity(cfurlCache.get(), cfurlCacheMemoryCapacity);
- CFURLCacheSetDiskCapacity(cfurlCache.get(), cfurlCacheDiskCapacity);
+#if USE(CFNETWORK)
+ // Don't shrink a big disk cache, since that would cause churn.
+ cacheDiskCapacity = max(cacheDiskCapacity, CFURLCacheDiskCapacity(cfurlCache.get()));
+ CFURLCacheSetMemoryCapacity(cfurlCache.get(), cacheMemoryCapacity);
+ CFURLCacheSetDiskCapacity(cfurlCache.get(), cacheDiskCapacity);
+#elif USE(CURL)
+ CurlCacheManager::getInstance().setStorageSizeLimit(cacheDiskCapacity);
+#endif
+
s_didSetCacheModel = true;
s_cacheModel = cacheModel;
return;
-#endif
}
WebCacheModel WebView::cacheModel()