Changeset 173200 in webkit
- Timestamp:
- Sep 2, 2014 11:04:44 PM (10 years ago)
- Location:
- trunk/Source/WebKit/win
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit/win/ChangeLog
r172977 r173200 1 2014-09-02 peavo@outlook.com <peavo@outlook.com> 2 3 [WinCairo] Memory cache capacity is not set. 4 https://bugs.webkit.org/show_bug.cgi?id=136432 5 6 Reviewed by Alex Christensen. 7 8 Reuse code from AppleWin to set memory and disk cache capacity. 9 10 * WebKitSystemBits.cpp: 11 (WebVolumeFreeSize): 12 * WebKitSystemBits.h: 13 * WebView.cpp: 14 (WebView::setCacheModel): 15 1 16 2014-08-26 Brent Fulgham <bfulgham@apple.com> 2 17 -
trunk/Source/WebKit/win/WebKitSystemBits.cpp
r165676 r173200 30 30 #include "WebKitSystemBits.h" 31 31 32 #include <CoreFoundation/CoreFoundation.h>33 32 #include <windows.h> 34 #include <wtf/text/WTFString.h>35 33 36 34 unsigned long long WebMemorySize() … … 42 40 } 43 41 44 unsigned long long WebVolumeFreeSize( CFStringRef cfstringPath)42 unsigned long long WebVolumeFreeSize(const String& path) 45 43 { 46 WTF::String path(cfstringPath);47 44 ULARGE_INTEGER freeBytesToCaller; 48 45 BOOL result = GetDiskFreeSpaceExW((LPCWSTR)path.charactersWithNullTermination().data(), &freeBytesToCaller, 0, 0); -
trunk/Source/WebKit/win/WebKitSystemBits.h
r165676 r173200 30 30 #define WebKitSystemBits_h 31 31 32 typedef const struct __CFString* CFStringRef; 32 #include <wtf/text/WTFString.h> 33 33 34 34 unsigned long long WebMemorySize(); 35 unsigned long long WebVolumeFreeSize( CFStringRefpath);35 unsigned long long WebVolumeFreeSize(const String& path); 36 36 37 37 #endif // WebKitSystemBits_h -
trunk/Source/WebKit/win/WebView.cpp
r172977 r173200 163 163 #include <CFNetwork/CFURLCachePriv.h> 164 164 #include <CFNetwork/CFURLProtocolPriv.h> 165 #include <WebKitSystemInterface/WebKitSystemInterface.h> 165 #include <WebKitSystemInterface/WebKitSystemInterface.h> 166 #elif USE(CURL) 167 #include <WebCore/CurlCacheManager.h> 166 168 #endif 167 169 … … 484 486 void WebView::setCacheModel(WebCacheModel cacheModel) 485 487 { 486 #if USE(CFNETWORK)487 488 if (s_didSetCacheModel && cacheModel == s_cacheModel) 488 489 return; 489 490 491 String cacheDirectory; 492 493 #if USE(CFNETWORK) 490 494 RetainPtr<CFURLCacheRef> cfurlCache = adoptCF(CFURLCacheCopySharedURLCache()); 491 495 RetainPtr<CFStringRef> cfurlCacheDirectory = adoptCF(wkCopyFoundationCacheDirectory(0)); … … 497 501 cfurlCacheDirectory = WebCore::localUserSpecificStorageDirectory().createCFString(); 498 502 } 503 cacheDirectory = String(cfurlCacheDirectory); 504 #elif USE(CURL) 505 cacheDirectory = CurlCacheManager::getInstance().cacheDirectory(); 506 #endif 507 508 long cacheMemoryCapacity = 0; 509 long cacheDiskCapacity = 0; 499 510 500 511 // As a fudge factor, use 1000 instead of 1024, in case the reported byte 501 512 // count doesn't align exactly to a megabyte boundary. 502 513 unsigned long long memSize = WebMemorySize() / 1024 / 1000; 503 unsigned long long diskFreeSize = WebVolumeFreeSize(c furlCacheDirectory.get()) / 1024 / 1000;514 unsigned long long diskFreeSize = WebVolumeFreeSize(cacheDirectory) / 1024 / 1000; 504 515 505 516 unsigned cacheTotalCapacity = 0; … … 510 521 unsigned pageCacheCapacity = 0; 511 522 512 CFIndex cfurlCacheMemoryCapacity = 0;513 CFIndex cfurlCacheDiskCapacity = 0;514 523 515 524 switch (cacheModel) { … … 531 540 cacheMaxDeadCapacity = 0; 532 541 533 // Foundation memory cache capacity (in bytes) 534 cfurlCacheMemoryCapacity = 0; 535 542 // Memory cache capacity (in bytes) 543 cacheMemoryCapacity = 0; 544 545 #if USE(CFNETWORK) 536 546 // Foundation disk cache capacity (in bytes) 537 c furlCacheDiskCapacity = CFURLCacheDiskCapacity(cfurlCache.get());538 547 cacheDiskCapacity = CFURLCacheDiskCapacity(cfurlCache.get()); 548 #endif 539 549 break; 540 550 } … … 563 573 cacheMaxDeadCapacity = cacheTotalCapacity / 4; 564 574 565 // Foundation memory cache capacity (in bytes)575 // Memory cache capacity (in bytes) 566 576 if (memSize >= 2048) 567 c furlCacheMemoryCapacity = 4 * 1024 * 1024;577 cacheMemoryCapacity = 4 * 1024 * 1024; 568 578 else if (memSize >= 1024) 569 c furlCacheMemoryCapacity = 2 * 1024 * 1024;579 cacheMemoryCapacity = 2 * 1024 * 1024; 570 580 else if (memSize >= 512) 571 c furlCacheMemoryCapacity = 1 * 1024 * 1024;581 cacheMemoryCapacity = 1 * 1024 * 1024; 572 582 else 573 c furlCacheMemoryCapacity = 512 * 1024;574 575 // Foundation disk cache capacity (in bytes)583 cacheMemoryCapacity = 512 * 1024; 584 585 // Disk cache capacity (in bytes) 576 586 if (diskFreeSize >= 16384) 577 c furlCacheDiskCapacity = 50 * 1024 * 1024;587 cacheDiskCapacity = 50 * 1024 * 1024; 578 588 else if (diskFreeSize >= 8192) 579 c furlCacheDiskCapacity = 40 * 1024 * 1024;589 cacheDiskCapacity = 40 * 1024 * 1024; 580 590 else if (diskFreeSize >= 4096) 581 c furlCacheDiskCapacity = 30 * 1024 * 1024;591 cacheDiskCapacity = 30 * 1024 * 1024; 582 592 else 583 c furlCacheDiskCapacity = 20 * 1024 * 1024;593 cacheDiskCapacity = 20 * 1024 * 1024; 584 594 585 595 break; … … 621 631 deadDecodedDataDeletionInterval = std::chrono::seconds { 60 }; 622 632 623 // Foundation memory cache capacity (in bytes)633 // Memory cache capacity (in bytes) 624 634 // (These values are small because WebCore does most caching itself.) 625 635 if (memSize >= 1024) 626 c furlCacheMemoryCapacity = 4 * 1024 * 1024;636 cacheMemoryCapacity = 4 * 1024 * 1024; 627 637 else if (memSize >= 512) 628 c furlCacheMemoryCapacity = 2 * 1024 * 1024;638 cacheMemoryCapacity = 2 * 1024 * 1024; 629 639 else if (memSize >= 256) 630 c furlCacheMemoryCapacity = 1 * 1024 * 1024;640 cacheMemoryCapacity = 1 * 1024 * 1024; 631 641 else 632 c furlCacheMemoryCapacity = 512 * 1024;633 634 // Foundation disk cache capacity (in bytes)642 cacheMemoryCapacity = 512 * 1024; 643 644 // Disk cache capacity (in bytes) 635 645 if (diskFreeSize >= 16384) 636 c furlCacheDiskCapacity = 175 * 1024 * 1024;646 cacheDiskCapacity = 175 * 1024 * 1024; 637 647 else if (diskFreeSize >= 8192) 638 c furlCacheDiskCapacity = 150 * 1024 * 1024;648 cacheDiskCapacity = 150 * 1024 * 1024; 639 649 else if (diskFreeSize >= 4096) 640 c furlCacheDiskCapacity = 125 * 1024 * 1024;650 cacheDiskCapacity = 125 * 1024 * 1024; 641 651 else if (diskFreeSize >= 2048) 642 c furlCacheDiskCapacity = 100 * 1024 * 1024;652 cacheDiskCapacity = 100 * 1024 * 1024; 643 653 else if (diskFreeSize >= 1024) 644 c furlCacheDiskCapacity = 75 * 1024 * 1024;654 cacheDiskCapacity = 75 * 1024 * 1024; 645 655 else 646 c furlCacheDiskCapacity = 50 * 1024 * 1024;656 cacheDiskCapacity = 50 * 1024 * 1024; 647 657 648 658 break; … … 651 661 ASSERT_NOT_REACHED(); 652 662 } 653 654 // Don't shrink a big disk cache, since that would cause churn.655 cfurlCacheDiskCapacity = max(cfurlCacheDiskCapacity, CFURLCacheDiskCapacity(cfurlCache.get()));656 663 657 664 memoryCache()->setCapacities(cacheMinDeadCapacity, cacheMaxDeadCapacity, cacheTotalCapacity); … … 659 666 pageCache()->setCapacity(pageCacheCapacity); 660 667 661 CFURLCacheSetMemoryCapacity(cfurlCache.get(), cfurlCacheMemoryCapacity); 662 CFURLCacheSetDiskCapacity(cfurlCache.get(), cfurlCacheDiskCapacity); 668 #if USE(CFNETWORK) 669 // Don't shrink a big disk cache, since that would cause churn. 670 cacheDiskCapacity = max(cacheDiskCapacity, CFURLCacheDiskCapacity(cfurlCache.get())); 671 672 CFURLCacheSetMemoryCapacity(cfurlCache.get(), cacheMemoryCapacity); 673 CFURLCacheSetDiskCapacity(cfurlCache.get(), cacheDiskCapacity); 674 #elif USE(CURL) 675 CurlCacheManager::getInstance().setStorageSizeLimit(cacheDiskCapacity); 676 #endif 663 677 664 678 s_didSetCacheModel = true; 665 679 s_cacheModel = cacheModel; 666 680 return; 667 #endif668 681 } 669 682
Note: See TracChangeset
for help on using the changeset viewer.