Title: [173200] trunk/Source/WebKit/win
Revision
173200
Author
[email protected]
Date
2014-09-02 23:04:44 -0700 (Tue, 02 Sep 2014)

Log Message

[WinCairo] Memory cache capacity is not set.
https://bugs.webkit.org/show_bug.cgi?id=136432

Patch by [email protected] <[email protected]> on 2014-09-02
Reviewed by Alex Christensen.

Reuse code from AppleWin to set memory and disk cache capacity.

* WebKitSystemBits.cpp:
(WebVolumeFreeSize):
* WebKitSystemBits.h:
* WebView.cpp:
(WebView::setCacheModel):

Modified Paths

Diff

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()
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to