Changeset 156918 in webkit
- Timestamp:
- Oct 4, 2013 3:41:11 PM (11 years ago)
- Location:
- trunk/Source
- Files:
-
- 8 added
- 24 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r156916 r156918 1 2013-10-04 Daniel Bates <dabates@apple.com> 2 3 [iOS] Upstream disk image cache 4 https://bugs.webkit.org/show_bug.cgi?id=121985 5 6 Reviewed by Joseph Pecoraro. 7 8 * WebCore.exp.in: 9 * WebCore.xcodeproj/project.pbxproj: 10 * loader/ResourceBuffer.cpp: 11 (WebCore::ResourceBuffer::isUsingDiskImageCache): 12 * loader/ResourceBuffer.h: 13 * loader/cache/CachedImage.cpp: 14 (WebCore::CachedImage::canUseDiskImageCache): Added. 15 (WebCore::CachedImage::useDiskImageCache): Added. 16 * loader/cache/CachedImage.h: 17 * loader/cache/CachedResource.cpp: 18 (WebCore::CachedResource::isSafeToMakePurgeable): 19 (WebCore::CachedResource::isUsingDiskImageCache): Added. 20 * loader/cache/CachedResource.h: 21 (WebCore::CachedResource::canUseDiskImageCache): Added. 22 (WebCore::CachedResource::useDiskImageCache): Added. 23 * loader/cache/MemoryCache.cpp: 24 (WebCore::MemoryCache::flushCachedImagesToDisk): Added. 25 (WebCore::MemoryCache::TypeStatistic::addResource): 26 (WebCore::MemoryCache::dumpStats): 27 (WebCore::MemoryCache::dumpLRULists): 28 * loader/cache/MemoryCache.h: 29 (WebCore::MemoryCache::TypeStatistic::TypeStatistic): 30 * loader/ios/DiskImageCacheClientIOS.h: Added. 31 * loader/ios/DiskImageCacheIOS.h: Added. 32 * loader/ios/DiskImageCacheIOS.mm: Added. 33 * platform/Logging.h: 34 * platform/SharedBuffer.cpp: 35 (WebCore::SharedBuffer::SharedBuffer): 36 (WebCore::SharedBuffer::~SharedBuffer): 37 (WebCore::SharedBuffer::isAllowedToBeMemoryMapped): Added. 38 (WebCore::SharedBuffer::allowToBeMemoryMapped): Added. 39 (WebCore::SharedBuffer::failedMemoryMap): Added. 40 (WebCore::SharedBuffer::markAsMemoryMapped): Added. 41 (WebCore::SharedBuffer::memoryMappedNotificationCallbackData): Added. 42 (WebCore::SharedBuffer::memoryMappedNotificationCallback): Added. 43 (WebCore::SharedBuffer::setMemoryMappedNotificationCallback): Added. 44 (WebCore::SharedBuffer::data): 45 (WebCore::SharedBuffer::append): 46 (WebCore::SharedBuffer::buffer): 47 (WebCore::SharedBuffer::getSomeData): 48 * platform/SharedBuffer.h: 49 (WebCore::SharedBuffer::isMemoryMapped): Added. 50 * platform/cf/SharedBufferCF.cpp: 51 (WebCore::SharedBuffer::SharedBuffer): 52 1 53 2013-10-04 Bear Travis <betravis@adobe.com> 2 54 -
trunk/Source/WebCore/WebCore.exp.in
r156842 r156918 2449 2449 #endif 2450 2450 2451 #if ENABLE(DISK_IMAGE_CACHE) 2452 __ZN7WebCore14diskImageCacheEv 2453 __ZN7WebCore11MemoryCache23flushCachedImagesToDiskEv 2454 __ZNK7WebCore12SharedBuffer32memoryMappedNotificationCallbackEv 2455 __ZN7WebCore12SharedBuffer21allowToBeMemoryMappedEv 2456 __ZN7WebCore12SharedBuffer35setMemoryMappedNotificationCallbackEPFvN3WTF10PassRefPtrIS0_EENS0_16CompletionStatusEPvES5_ 2457 __ZNK7WebCore12SharedBuffer25isAllowedToBeMemoryMappedEv 2458 __ZNK7WebCore12SharedBuffer36memoryMappedNotificationCallbackDataEv 2459 #endif 2460 2451 2461 #if ENABLE(DRAG_SUPPORT) 2452 2462 __ZN7WebCore12EventHandler17dragSourceEndedAtERKNS_18PlatformMouseEventENS_13DragOperationE -
trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj
r156842 r156918 3447 3447 A5AFB34F115151A700B045CB /* StepRange.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A5AFB34D115151A700B045CB /* StepRange.cpp */; }; 3448 3448 A5AFB350115151A700B045CB /* StepRange.h in Headers */ = {isa = PBXBuildFile; fileRef = A5AFB34E115151A700B045CB /* StepRange.h */; settings = {ATTRIBUTES = (Private, ); }; }; 3449 A5C566AB127A3AAD00E8A3FF /* DiskImageCacheClientIOS.h in Headers */ = {isa = PBXBuildFile; fileRef = A5C566AA127A3AAD00E8A3FF /* DiskImageCacheClientIOS.h */; settings = {ATTRIBUTES = (Private, ); }; }; 3450 A5F9EF701266750D00FCCF52 /* DiskImageCacheIOS.mm in Sources */ = {isa = PBXBuildFile; fileRef = A5F9EF6E1266750D00FCCF52 /* DiskImageCacheIOS.mm */; }; 3451 A5F9EF711266750D00FCCF52 /* DiskImageCacheIOS.h in Headers */ = {isa = PBXBuildFile; fileRef = A5F9EF6F1266750D00FCCF52 /* DiskImageCacheIOS.h */; settings = {ATTRIBUTES = (Private, ); }; }; 3449 3452 A6148A6212E41D3A0044A784 /* DOMHTMLKeygenElementInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = A6148A6112E41D3A0044A784 /* DOMHTMLKeygenElementInternal.h */; }; 3450 3453 A6148A6712E41D940044A784 /* DOMHTMLKeygenElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A6148A6512E41D940044A784 /* DOMHTMLKeygenElement.h */; }; … … 10049 10052 A5AFB34D115151A700B045CB /* StepRange.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StepRange.cpp; sourceTree = "<group>"; }; 10050 10053 A5AFB34E115151A700B045CB /* StepRange.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StepRange.h; sourceTree = "<group>"; }; 10054 A5C566AA127A3AAD00E8A3FF /* DiskImageCacheClientIOS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DiskImageCacheClientIOS.h; sourceTree = "<group>"; }; 10051 10055 A5C974CF11485FF10066F2AB /* KeyEventCocoa.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = KeyEventCocoa.h; path = cocoa/KeyEventCocoa.h; sourceTree = "<group>"; }; 10052 10056 A5C974D011485FF10066F2AB /* KeyEventCocoa.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = KeyEventCocoa.mm; path = cocoa/KeyEventCocoa.mm; sourceTree = "<group>"; }; 10057 A5F9EF6E1266750D00FCCF52 /* DiskImageCacheIOS.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DiskImageCacheIOS.mm; sourceTree = "<group>"; }; 10058 A5F9EF6F1266750D00FCCF52 /* DiskImageCacheIOS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DiskImageCacheIOS.h; sourceTree = "<group>"; }; 10053 10059 A6148A6112E41D3A0044A784 /* DOMHTMLKeygenElementInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMHTMLKeygenElementInternal.h; sourceTree = "<group>"; }; 10054 10060 A6148A6512E41D940044A784 /* DOMHTMLKeygenElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMHTMLKeygenElement.h; sourceTree = "<group>"; }; … … 19445 19451 7EE6847312D26E5500E79415 /* cf */, 19446 19452 5126E6B60A2E3AEF005C29FA /* icon */, 19453 CE79D68617F220ED00815C00 /* ios */, 19447 19454 93A1EAA20A5634D8006960A0 /* mac */, 19448 19455 E1424C91164B52C800F32D40 /* CookieJar.cpp */, … … 19848 19855 ); 19849 19856 name = MediaControls; 19857 sourceTree = "<group>"; 19858 }; 19859 CE79D68617F220ED00815C00 /* ios */ = { 19860 isa = PBXGroup; 19861 children = ( 19862 A5F9EF6E1266750D00FCCF52 /* DiskImageCacheIOS.mm */, 19863 A5F9EF6F1266750D00FCCF52 /* DiskImageCacheIOS.h */, 19864 A5C566AA127A3AAD00E8A3FF /* DiskImageCacheClientIOS.h */, 19865 ); 19866 path = ios; 19850 19867 sourceTree = "<group>"; 19851 19868 }; … … 21755 21772 316023F01532C40C00D50FF4 /* Dictionary.h in Headers */, 21756 21773 FDAF19991513D131008DB0C3 /* DirectConvolver.h in Headers */, 21774 A5F9EF711266750D00FCCF52 /* DiskImageCacheIOS.h in Headers */, 21775 A5C566AB127A3AAD00E8A3FF /* DiskImageCacheClientIOS.h in Headers */, 21757 21776 49AF2D6914435D050016A784 /* DisplayRefreshMonitor.h in Headers */, 21758 21777 5D8C4DC01428222C0026CE72 /* DisplaySleepDisabler.h in Headers */, … … 25178 25197 312D67B11535691F00563D0D /* Dictionary.cpp in Sources */, 25179 25198 FDAF19981513D131008DB0C3 /* DirectConvolver.cpp in Sources */, 25199 A5F9EF701266750D00FCCF52 /* DiskImageCacheIOS.mm in Sources */, 25180 25200 49FC7A501444AF5F00A5D864 /* DisplayRefreshMonitor.cpp in Sources */, 25181 25201 49AF2D6C14435D210016A784 /* DisplayRefreshMonitorMac.cpp in Sources */, -
trunk/Source/WebCore/loader/ResourceBuffer.cpp
r155629 r156918 133 133 #endif 134 134 135 #if ENABLE(DISK_IMAGE_CACHE) 136 bool ResourceBuffer::isUsingDiskImageCache() const 137 { 138 ASSERT(m_sharedBuffer); 139 return m_sharedBuffer && m_sharedBuffer->isAllowedToBeMemoryMapped(); 140 } 141 #endif 142 135 143 } // namespace WebCore -
trunk/Source/WebCore/loader/ResourceBuffer.h
r155641 r156918 82 82 RetainPtr<CFDataRef> createCFData(); 83 83 #endif 84 #if ENABLE(DISK_IMAGE_CACHE) 85 bool isUsingDiskImageCache() const; 86 #endif 84 87 85 88 protected: -
trunk/Source/WebCore/loader/cache/CachedImage.cpp
r156622 r156918 53 53 #endif 54 54 55 #if ENABLE(DISK_IMAGE_CACHE) 56 #include "DiskImageCacheIOS.h" 57 #endif 58 55 59 using std::max; 56 60 … … 533 537 } 534 538 539 #if ENABLE(DISK_IMAGE_CACHE) 540 bool CachedImage::canUseDiskImageCache() const 541 { 542 if (isLoading() || errorOccurred()) 543 return false; 544 545 if (!m_data) 546 return false; 547 548 if (isPurgeable()) 549 return false; 550 551 if (m_data->size() < diskImageCache().minimumImageSize()) 552 return false; 553 554 // "Cache-Control: no-store" resources may be marked as such because they may 555 // contain sensitive information. We should not write these resources to disk. 556 if (m_response.cacheControlContainsNoStore()) 557 return false; 558 559 // Testing shows that PDF images did not work when memory mapped. 560 // However, SVG images and Bitmap images were fine. See: 561 // <rdar://problem/8591834> Disk Image Cache should support PDF Images 562 if (m_response.mimeType() == "application/pdf") 563 return false; 564 565 return true; 566 } 567 568 void CachedImage::useDiskImageCache() 569 { 570 ASSERT(canUseDiskImageCache()); 571 ASSERT(!isUsingDiskImageCache()); 572 m_data->sharedBuffer()->allowToBeMemoryMapped(); 573 } 574 #endif 575 535 576 } // namespace WebCore -
trunk/Source/WebCore/loader/cache/CachedImage.h
r156622 r156918 80 80 static void resumeAnimatingImagesForLoader(CachedResourceLoader*); 81 81 82 #if ENABLE(DISK_IMAGE_CACHE) 83 virtual bool canUseDiskImageCache() const OVERRIDE; 84 virtual void useDiskImageCache() OVERRIDE; 85 #endif 86 82 87 private: 83 88 virtual void load(CachedResourceLoader*, const ResourceLoaderOptions&) OVERRIDE; -
trunk/Source/WebCore/loader/cache/CachedResource.cpp
r156550 r156918 827 827 bool CachedResource::isSafeToMakePurgeable() const 828 828 { 829 #if ENABLE(DISK_IMAGE_CACHE) 830 // It does not make sense to have a resource in the disk image cache 831 // (memory mapped on disk) and purgeable (in memory). So do not allow 832 // disk image cached resources to be purgeable. 833 if (isUsingDiskImageCache()) 834 return false; 835 #endif 836 829 837 return !hasClients() && !m_proxyResource && !m_resourceToRevalidate; 830 838 } … … 915 923 } 916 924 925 #if ENABLE(DISK_IMAGE_CACHE) 926 bool CachedResource::isUsingDiskImageCache() const 927 { 928 return m_data && m_data->isUsingDiskImageCache(); 929 } 930 #endif 931 917 932 #if PLATFORM(MAC) 918 933 void CachedResource::tryReplaceEncodedData(PassRefPtr<SharedBuffer> newBuffer) -
trunk/Source/WebCore/loader/cache/CachedResource.h
r156550 r156918 250 250 double loadFinishTime() const { return m_loadFinishTime; } 251 251 252 #if ENABLE(DISK_IMAGE_CACHE) 253 bool isUsingDiskImageCache() const; 254 virtual bool canUseDiskImageCache() const { return false; } 255 virtual void useDiskImageCache() { ASSERT(canUseDiskImageCache()); } 256 #endif 257 252 258 virtual bool canReuse(const ResourceRequest&) const { return true; } 253 259 -
trunk/Source/WebCore/loader/cache/MemoryCache.cpp
r156550 r156918 45 45 #include <wtf/text/CString.h> 46 46 47 #if ENABLE(DISK_IMAGE_CACHE) 48 #include "DiskImageCacheIOS.h" 49 #include "ResourceBuffer.h" 50 #endif 51 47 52 using namespace std; 48 53 … … 379 384 } 380 385 386 #if ENABLE(DISK_IMAGE_CACHE) 387 void MemoryCache::flushCachedImagesToDisk() 388 { 389 if (!diskImageCache().isEnabled()) 390 return; 391 392 #ifndef NDEBUG 393 double start = WTF::currentTimeMS(); 394 unsigned resourceCount = 0; 395 unsigned cachedSize = 0; 396 #endif 397 398 for (size_t i = m_allResources.size(); i; ) { 399 --i; 400 CachedResource* current = m_allResources[i].m_tail; 401 while (current) { 402 CachedResource* previous = current->m_prevInAllResourcesList; 403 404 if (!current->isUsingDiskImageCache() && current->canUseDiskImageCache()) { 405 current->useDiskImageCache(); 406 current->destroyDecodedData(); 407 #ifndef NDEBUG 408 LOG(DiskImageCache, "Cache::diskCacheResources(): attempting to save (%d) bytes", current->resourceBuffer()->sharedBuffer()->size()); 409 ++resourceCount; 410 cachedSize += current->resourceBuffer()->sharedBuffer()->size(); 411 #endif 412 } 413 414 current = previous; 415 } 416 } 417 418 #ifndef NDEBUG 419 double end = WTF::currentTimeMS(); 420 LOG(DiskImageCache, "DiskImageCache: took (%f) ms to cache (%d) bytes for (%d) resources", end - start, cachedSize, resourceCount); 421 #endif 422 } 423 #endif // ENABLE(DISK_IMAGE_CACHE) 424 381 425 void MemoryCache::setCapacities(unsigned minDeadBytes, unsigned maxDeadBytes, unsigned totalBytes) 382 426 { … … 744 788 purgeableSize += purgeable ? pageSize : 0; 745 789 purgedSize += purged ? pageSize : 0; 790 #if ENABLE(DISK_IMAGE_CACHE) 791 // Only the data inside the resource was mapped, not the entire resource. 792 mappedSize += o->isUsingDiskImageCache() ? o->resourceBuffer()->sharedBuffer()->size() : 0; 793 #endif 746 794 } 747 795 … … 833 881 { 834 882 Statistics s = getStatistics(); 883 #if ENABLE(DISK_IMAGE_CACHE) 884 printf("%-13s %-13s %-13s %-13s %-13s %-13s %-13s %-13s %-13s\n", "", "Count", "Size", "LiveSize", "DecodedSize", "PurgeableSize", "PurgedSize", "Mapped", "\"Real\""); 885 printf("%-13s %-13s %-13s %-13s %-13s %-13s %-13s %-13s %-13s\n", "-------------", "-------------", "-------------", "-------------", "-------------", "-------------", "-------------", "-------------", "-------------"); 886 printf("%-13s %13d %13d %13d %13d %13d %13d %13d %13d\n", "Images", s.images.count, s.images.size, s.images.liveSize, s.images.decodedSize, s.images.purgeableSize, s.images.purgedSize, s.images.mappedSize, s.images.size - s.images.mappedSize); 887 #else 835 888 printf("%-13s %-13s %-13s %-13s %-13s %-13s %-13s\n", "", "Count", "Size", "LiveSize", "DecodedSize", "PurgeableSize", "PurgedSize"); 836 889 printf("%-13s %-13s %-13s %-13s %-13s %-13s %-13s\n", "-------------", "-------------", "-------------", "-------------", "-------------", "-------------", "-------------"); 837 890 printf("%-13s %13d %13d %13d %13d %13d %13d\n", "Images", s.images.count, s.images.size, s.images.liveSize, s.images.decodedSize, s.images.purgeableSize, s.images.purgedSize); 891 #endif 838 892 printf("%-13s %13d %13d %13d %13d %13d %13d\n", "CSS", s.cssStyleSheets.count, s.cssStyleSheets.size, s.cssStyleSheets.liveSize, s.cssStyleSheets.decodedSize, s.cssStyleSheets.purgeableSize, s.cssStyleSheets.purgedSize); 839 893 #if ENABLE(XSLT) … … 847 901 void MemoryCache::dumpLRULists(bool includeLive) const 848 902 { 903 #if ENABLE(DISK_IMAGE_CACHE) 904 printf("LRU-SP lists in eviction order (Kilobytes decoded, Kilobytes encoded, Access count, Referenced, isPurgeable, wasPurged, isMemoryMapped):\n"); 905 #else 849 906 printf("LRU-SP lists in eviction order (Kilobytes decoded, Kilobytes encoded, Access count, Referenced, isPurgeable, wasPurged):\n"); 907 #endif 850 908 851 909 int size = m_allResources.size(); … … 856 914 CachedResource* prev = current->m_prevInAllResourcesList; 857 915 if (includeLive || !current->hasClients()) 916 #if ENABLE(DISK_IMAGE_CACHE) 917 printf("(%.1fK, %.1fK, %uA, %dR, %d, %d, %d); ", current->decodedSize() / 1024.0f, (current->encodedSize() + current->overheadSize()) / 1024.0f, current->accessCount(), current->hasClients(), current->isPurgeable(), current->wasPurged(), current->isUsingDiskImageCache()); 918 #else 858 919 printf("(%.1fK, %.1fK, %uA, %dR, %d, %d); ", current->decodedSize() / 1024.0f, (current->encodedSize() + current->overheadSize()) / 1024.0f, current->accessCount(), current->hasClients(), current->isPurgeable(), current->wasPurged()); 920 #endif 859 921 860 922 current = prev; -
trunk/Source/WebCore/loader/cache/MemoryCache.h
r156550 r156918 101 101 int purgeableSize; 102 102 int purgedSize; 103 #if ENABLE(DISK_IMAGE_CACHE) 104 int mappedSize; 105 TypeStatistic() : count(0), size(0), liveSize(0), decodedSize(0), purgeableSize(0), purgedSize(0), mappedSize(0) { } 106 #else 103 107 TypeStatistic() : count(0), size(0), liveSize(0), decodedSize(0), purgeableSize(0), purgedSize(0) { } 108 #endif 104 109 void addResource(CachedResource*); 105 110 }; … … 160 165 161 166 static bool shouldMakeResourcePurgeableOnEviction(); 167 168 #if ENABLE(DISK_IMAGE_CACHE) 169 void flushCachedImagesToDisk(); // Flush encoded data from resources still referenced by web pages. 170 #endif 162 171 163 172 static void removeUrlFromCache(ScriptExecutionContext*, const String& urlString); -
trunk/Source/WebCore/platform/Logging.h
r156205 r156918 43 43 M(BackForward) \ 44 44 M(Compositing) \ 45 M(DiskImageCache) \ 45 46 M(Editing) \ 46 47 M(Events) \ -
trunk/Source/WebCore/platform/SharedBuffer.cpp
r156795 r156918 33 33 #include <wtf/unicode/Unicode.h> 34 34 35 #if ENABLE(DISK_IMAGE_CACHE) 36 #include "DiskImageCacheIOS.h" 37 #endif 38 35 39 using namespace std; 36 40 … … 62 66 SharedBuffer::SharedBuffer() 63 67 : m_size(0) 68 #if ENABLE(DISK_IMAGE_CACHE) 69 , m_isMemoryMapped(false) 70 , m_diskImageCacheId(DiskImageCache::invalidDiskCacheId) 71 , m_notifyMemoryMappedCallback(nullptr) 72 , m_notifyMemoryMappedCallbackData(nullptr) 73 #endif 64 74 { 65 75 } … … 68 78 : m_size(size) 69 79 , m_buffer(size) 80 #if ENABLE(DISK_IMAGE_CACHE) 81 , m_isMemoryMapped(false) 82 , m_diskImageCacheId(DiskImageCache::invalidDiskCacheId) 83 , m_notifyMemoryMappedCallback(nullptr) 84 , m_notifyMemoryMappedCallbackData(nullptr) 85 #endif 70 86 { 71 87 } … … 73 89 SharedBuffer::SharedBuffer(const char* data, int size) 74 90 : m_size(0) 91 #if ENABLE(DISK_IMAGE_CACHE) 92 , m_isMemoryMapped(false) 93 , m_diskImageCacheId(DiskImageCache::invalidDiskCacheId) 94 , m_notifyMemoryMappedCallback(nullptr) 95 , m_notifyMemoryMappedCallbackData(nullptr) 96 #endif 75 97 { 76 98 // FIXME: Use unsigned consistently, and check for invalid casts when calling into SharedBuffer from other code. … … 83 105 SharedBuffer::SharedBuffer(const unsigned char* data, int size) 84 106 : m_size(0) 107 #if ENABLE(DISK_IMAGE_CACHE) 108 , m_isMemoryMapped(false) 109 , m_diskImageCacheId(DiskImageCache::invalidDiskCacheId) 110 , m_notifyMemoryMappedCallback(nullptr) 111 , m_notifyMemoryMappedCallbackData(nullptr) 112 #endif 85 113 { 86 114 // FIXME: Use unsigned consistently, and check for invalid casts when calling into SharedBuffer from other code. … … 93 121 SharedBuffer::~SharedBuffer() 94 122 { 123 #if ENABLE(DISK_IMAGE_CACHE) 124 if (m_diskImageCacheId) { 125 diskImageCache().removeItem(m_diskImageCacheId); 126 m_isMemoryMapped = false; 127 m_diskImageCacheId = DiskImageCache::invalidDiskCacheId; 128 } 129 #endif 95 130 clear(); 96 131 } … … 123 158 } 124 159 160 #if ENABLE(DISK_IMAGE_CACHE) 161 bool SharedBuffer::isAllowedToBeMemoryMapped() const 162 { 163 return m_diskImageCacheId != DiskImageCache::invalidDiskCacheId; 164 } 165 166 SharedBuffer::MemoryMappingState SharedBuffer::allowToBeMemoryMapped() 167 { 168 if (isMemoryMapped()) 169 return SharedBuffer::SuccessAlreadyMapped; 170 171 if (isAllowedToBeMemoryMapped()) 172 return SharedBuffer::PreviouslyQueuedForMapping; 173 174 m_diskImageCacheId = diskImageCache().writeItem(this); 175 if (m_diskImageCacheId == DiskImageCache::invalidDiskCacheId) 176 return SharedBuffer::FailureCacheFull; 177 178 return SharedBuffer::QueuedForMapping; 179 } 180 181 void SharedBuffer::failedMemoryMap() 182 { 183 if (m_notifyMemoryMappedCallback) 184 m_notifyMemoryMappedCallback(this, SharedBuffer::Failed, m_notifyMemoryMappedCallbackData); 185 } 186 187 void SharedBuffer::markAsMemoryMapped() 188 { 189 ASSERT(!isMemoryMapped()); 190 191 m_isMemoryMapped = true; 192 unsigned savedSize = size(); 193 clear(); 194 m_size = savedSize; 195 196 if (m_notifyMemoryMappedCallback) 197 m_notifyMemoryMappedCallback(this, SharedBuffer::Succeeded, m_notifyMemoryMappedCallbackData); 198 } 199 200 SharedBuffer::MemoryMappedNotifyCallbackData SharedBuffer::memoryMappedNotificationCallbackData() const 201 { 202 return m_notifyMemoryMappedCallbackData; 203 } 204 205 SharedBuffer::MemoryMappedNotifyCallback SharedBuffer::memoryMappedNotificationCallback() const 206 { 207 return m_notifyMemoryMappedCallback; 208 } 209 210 void SharedBuffer::setMemoryMappedNotificationCallback(MemoryMappedNotifyCallback callback, MemoryMappedNotifyCallbackData data) 211 { 212 ASSERT(!m_notifyMemoryMappedCallback || !callback); 213 ASSERT(!m_notifyMemoryMappedCallbackData || !data); 214 215 m_notifyMemoryMappedCallback = callback; 216 m_notifyMemoryMappedCallbackData = data; 217 } 218 #endif 219 125 220 void SharedBuffer::createPurgeableBuffer() const 126 221 { … … 141 236 const char* SharedBuffer::data() const 142 237 { 238 #if ENABLE(DISK_IMAGE_CACHE) 239 if (isMemoryMapped()) 240 return static_cast<const char*>(diskImageCache().dataForItem(m_diskImageCacheId)); 241 #endif 242 143 243 if (hasPlatformData()) 144 244 return platformData(); … … 168 268 { 169 269 ASSERT(!m_purgeableBuffer); 270 #if ENABLE(DISK_IMAGE_CACHE) 271 ASSERT(!isMemoryMapped()); 272 #endif 170 273 if (!length) 171 274 return; … … 266 369 const Vector<char>& SharedBuffer::buffer() const 267 370 { 371 #if ENABLE(DISK_IMAGE_CACHE) 372 ASSERT(!isMemoryMapped()); 373 #endif 268 374 unsigned bufferSize = m_buffer.size(); 269 375 if (m_size > bufferSize) { … … 295 401 } 296 402 403 #if ENABLE(DISK_IMAGE_CACHE) 404 ASSERT(position < size()); 405 if (isMemoryMapped()) { 406 const char* data = static_cast<const char*>(diskImageCache().dataForItem(m_diskImageCacheId)); 407 someData = data + position; 408 return size() - position; 409 } 410 #endif 411 297 412 if (hasPlatformData() || m_purgeableBuffer) { 298 413 ASSERT_WITH_SECURITY_IMPLICATION(position < size()); -
trunk/Source/WebCore/platform/SharedBuffer.h
r155641 r156918 131 131 unsigned getSomeData(const char*& data, unsigned position = 0) const; 132 132 133 #if ENABLE(DISK_IMAGE_CACHE) 134 enum MemoryMappingState { QueuedForMapping, PreviouslyQueuedForMapping, SuccessAlreadyMapped, FailureCacheFull }; 135 136 // Calling this will cause this buffer to be memory mapped. 137 MemoryMappingState allowToBeMemoryMapped(); 138 bool isAllowedToBeMemoryMapped() const; 139 140 // This is called to indicate that the memory mapping failed. 141 void failedMemoryMap(); 142 143 // This is called only once the buffer has been completely memory mapped. 144 void markAsMemoryMapped(); 145 bool isMemoryMapped() const { return m_isMemoryMapped; } 146 147 // This callback function will be called when either the buffer has been memory mapped or failed to be memory mapped. 148 enum CompletionStatus { Failed, Succeeded }; 149 typedef void* MemoryMappedNotifyCallbackData; 150 typedef void (*MemoryMappedNotifyCallback)(PassRefPtr<SharedBuffer>, CompletionStatus, MemoryMappedNotifyCallbackData); 151 152 MemoryMappedNotifyCallbackData memoryMappedNotificationCallbackData() const; 153 MemoryMappedNotifyCallback memoryMappedNotificationCallback() const; 154 void setMemoryMappedNotificationCallback(MemoryMappedNotifyCallback, MemoryMappedNotifyCallbackData); 155 #endif 156 133 157 void createPurgeableBuffer() const; 134 158 … … 163 187 mutable Vector<char*> m_segments; 164 188 #endif 189 #if ENABLE(DISK_IMAGE_CACHE) 190 bool m_isMemoryMapped; 191 unsigned m_diskImageCacheId; // DiskImageCacheId is unsigned. 192 MemoryMappedNotifyCallback m_notifyMemoryMappedCallback; 193 MemoryMappedNotifyCallbackData m_notifyMemoryMappedCallbackData; 194 #endif 165 195 #if USE(CF) 166 196 explicit SharedBuffer(CFDataRef); -
trunk/Source/WebCore/platform/cf/SharedBufferCF.cpp
r155629 r156918 31 31 #include "PurgeableBuffer.h" 32 32 33 #if ENABLE(DISK_IMAGE_CACHE) 34 #include "DiskImageCacheIOS.h" 35 #endif 36 33 37 namespace WebCore { 34 38 … … 36 40 : m_size(0) 37 41 , m_cfData(cfData) 42 #if ENABLE(DISK_IMAGE_CACHE) 43 , m_isMemoryMapped(false) 44 , m_diskImageCacheId(DiskImageCache::invalidDiskCacheId) 45 , m_notifyMemoryMappedCallback(nullptr) 46 , m_notifyMemoryMappedCallbackData(nullptr) 47 #endif 38 48 { 39 49 } -
trunk/Source/WebKit/ChangeLog
r156890 r156918 1 2013-10-04 Daniel Bates <dabates@apple.com> 2 3 [iOS] Upstream disk image cache 4 https://bugs.webkit.org/show_bug.cgi?id=121985 5 6 Reviewed by Joseph Pecoraro. 7 8 * WebKit.xcodeproj/project.pbxproj: 9 * ios/WebCoreSupport/WebDiskImageCacheClientIOS.h: Added. 10 * ios/WebCoreSupport/WebDiskImageCacheClientIOS.mm: Added. 11 1 12 2013-10-04 Anders Carlsson <andersca@apple.com> 2 13 -
trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj
r156890 r156918 364 364 CDA62AE2125F87C2007FD118 /* WebFullScreenController.h in Headers */ = {isa = PBXBuildFile; fileRef = CDA62AE0125F87C2007FD118 /* WebFullScreenController.h */; }; 365 365 CDA62AE3125F87C2007FD118 /* WebFullScreenController.mm in Sources */ = {isa = PBXBuildFile; fileRef = CDA62AE1125F87C2007FD118 /* WebFullScreenController.mm */; }; 366 A5C566BD127A3AE500E8A3FF /* WebDiskImageCacheClientIOS.h in Headers */ = {isa = PBXBuildFile; fileRef = A5C566BB127A3AE500E8A3FF /* WebDiskImageCacheClientIOS.h */; }; 367 A5C566BE127A3AE500E8A3FF /* WebDiskImageCacheClientIOS.mm in Sources */ = {isa = PBXBuildFile; fileRef = A5C566BC127A3AE500E8A3FF /* WebDiskImageCacheClientIOS.mm */; }; 366 368 CEDA12DB152CBE6800D9E08D /* WebAlternativeTextClient.mm in Sources */ = {isa = PBXBuildFile; fileRef = CEDA12D9152CBE6800D9E08D /* WebAlternativeTextClient.mm */; }; 367 369 CEDA12DC152CBE6800D9E08D /* WebAlternativeTextClient.h in Headers */ = {isa = PBXBuildFile; fileRef = CEDA12DA152CBE6800D9E08D /* WebAlternativeTextClient.h */; }; … … 698 700 CDA62AE0125F87C2007FD118 /* WebFullScreenController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebFullScreenController.h; sourceTree = "<group>"; }; 699 701 CDA62AE1125F87C2007FD118 /* WebFullScreenController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebFullScreenController.mm; sourceTree = "<group>"; }; 702 A5C566BB127A3AE500E8A3FF /* WebDiskImageCacheClientIOS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebDiskImageCacheClientIOS.h; sourceTree = "<group>"; }; 703 A5C566BC127A3AE500E8A3FF /* WebDiskImageCacheClientIOS.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebDiskImageCacheClientIOS.mm; sourceTree = "<group>"; }; 700 704 CEDA12D9152CBE6800D9E08D /* WebAlternativeTextClient.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebAlternativeTextClient.mm; sourceTree = "<group>"; }; 701 705 CEDA12DA152CBE6800D9E08D /* WebAlternativeTextClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebAlternativeTextClient.h; sourceTree = "<group>"; }; … … 798 802 F5F732D202FF4D4F01A80180 /* WebKit.exp */, 799 803 F5C283730284676D018635CA /* WebKitPrefix.h */, 804 FED1400A0CECCD6800D89466 /* ios */, 800 805 6508A4A7099B375F00BCBF45 /* Default Delegates */, 801 806 F57D194A034E732C01A80180 /* DOM */, … … 1239 1244 usesTabs = 0; 1240 1245 }; 1246 FED1400A0CECCD6800D89466 /* ios */ = { 1247 isa = PBXGroup; 1248 children = ( 1249 44A11FBE0EBA93B2009F69ED /* WebCoreSupport */, 1250 ); 1251 path = ios; 1252 sourceTree = "<group>"; 1253 }; 1254 44A11FBE0EBA93B2009F69ED /* WebCoreSupport */ = { 1255 isa = PBXGroup; 1256 children = ( 1257 A5C566BB127A3AE500E8A3FF /* WebDiskImageCacheClientIOS.h */, 1258 A5C566BC127A3AE500E8A3FF /* WebDiskImageCacheClientIOS.mm */, 1259 ); 1260 path = WebCoreSupport; 1261 sourceTree = "<group>"; 1262 }; 1241 1263 F52CA6BD02DF9D0F018635CA /* HTML */ = { 1242 1264 isa = PBXGroup; … … 1424 1446 1A60519417502A5D00BC62F5 /* HistoryPropertyList.h in Headers */, 1425 1447 939810680824BF01008DF038 /* HIViewAdapter.h in Headers */, 1448 A5C566BD127A3AE500E8A3FF /* WebDiskImageCacheClientIOS.h in Headers */, 1426 1449 070F549B17F1E42B00169E04 /* WebUserMediaClient.h in Headers */, 1427 1450 939810690824BF01008DF038 /* HIWebView.h in Headers */, … … 1957 1980 1C68F670095B5FC100C2984E /* WebNodeHighlight.mm in Sources */, 1958 1981 A5687BDB135B791A0074CBCB /* WebNodeHighlighter.mm in Sources */, 1982 A5C566BE127A3AE500E8A3FF /* WebDiskImageCacheClientIOS.mm in Sources */, 1959 1983 1C68F672095B5FC100C2984E /* WebNodeHighlightView.mm in Sources */, 1960 1984 312E2FE614E48182007CCA18 /* WebNotification.mm in Sources */, -
trunk/Source/WebKit/mac/ChangeLog
r156890 r156918 1 2013-10-04 Daniel Bates <dabates@apple.com> 2 3 [iOS] Upstream disk image cache 4 https://bugs.webkit.org/show_bug.cgi?id=121985 5 6 Reviewed by Joseph Pecoraro. 7 8 * Misc/WebCache.mm: 9 (+[WebCache statistics]): 10 * WebView/WebDataSource.mm: 11 (BufferMemoryMapped): Added. 12 (-[WebDataSource _setAllowToBeMemoryMapped]): Added. 13 (-[WebDataSource setDataSourceDelegate:]): Added. 14 (-[WebDataSource dataSourceDelegate]): Added. 15 (-[WebDataSource dealloc]): 16 * WebView/WebDataSourcePrivate.h: Declared private delegate 17 protocol, WebDataSourcePrivateDelegate. 18 * WebView/WebPreferenceKeysPrivate.h: 19 * WebView/WebPreferences.mm: 20 (+[WebPreferences initialize]): 21 (-[WebPreferences diskImageCacheEnabled]): Added. 22 (-[WebPreferences setDiskImageCacheEnabled:]): Added. 23 (-[WebPreferences diskImageCacheMinimumImageSize]): Added. 24 (-[WebPreferences setDiskImageCacheMinimumImageSize:]): Added. 25 (-[WebPreferences diskImageCacheMaximumCacheSize]): Added. 26 (-[WebPreferences setDiskImageCacheMaximumCacheSize:]): Added. 27 (-[WebPreferences _diskImageCacheSavedCacheDirectory]): Added. 28 (-[WebPreferences _setDiskImageCacheSavedCacheDirectory:]): Added. 29 * WebView/WebView.mm: 30 (-[WebView _commonInitializationWithFrameName:groupName:]): 31 (-[WebView _preferencesChanged:]): 32 1 33 2013-10-04 Anders Carlsson <andersca@apple.com> 2 34 -
trunk/Source/WebKit/mac/Misc/WebCache.mm
r147363 r156918 113 113 [NSNumber numberWithInt:s.scripts.purgedSize], @"JavaScript", 114 114 nil], 115 #if ENABLE(DISK_IMAGE_CACHE) && PLATFORM(IOS) 116 [NSDictionary dictionaryWithObjectsAndKeys: 117 [NSNumber numberWithInt:s.images.mappedSize], @"Images", 118 [NSNumber numberWithInt:s.cssStyleSheets.mappedSize] ,@"CSS", 119 #if ENABLE(XSLT) 120 [NSNumber numberWithInt:s.xslStyleSheets.mappedSize], @"XSL", 121 #else 122 [NSNumber numberWithInt:0], @"XSL", 123 #endif 124 [NSNumber numberWithInt:s.scripts.mappedSize], @"JavaScript", 125 nil], 126 #endif // ENABLE(DISK_IMAGE_CACHE) && PLATFORM(IOS) 115 127 nil]; 116 128 } -
trunk/Source/WebKit/mac/WebView/WebDataSource.mm
r156550 r156918 98 98 } 99 99 100 #if ENABLE(DISK_IMAGE_CACHE) && PLATFORM(IOS) 101 static void BufferMemoryMapped(PassRefPtr<SharedBuffer> buffer, SharedBuffer::CompletionStatus mapStatus, SharedBuffer::MemoryMappedNotifyCallbackData data) 102 { 103 NSObject<WebDataSourcePrivateDelegate> *delegate = [(WebDataSource *)data dataSourceDelegate]; 104 if (mapStatus == SharedBuffer::Succeeded) 105 [delegate dataSourceMemoryMapped]; 106 else 107 [delegate dataSourceMemoryMapFailed]; 108 } 109 #endif 110 100 111 @interface WebDataSource (WebFileInternal) 101 112 @end … … 197 208 toPrivate(_private)->loader->setDeferMainResourceDataLoad(flag); 198 209 } 210 211 #if ENABLE(DISK_IMAGE_CACHE) && PLATFORM(IOS) 212 - (void)_setAllowToBeMemoryMapped 213 { 214 RefPtr<ResourceBuffer> mainResourceBuffer = toPrivate(_private)->loader->mainResourceData(); 215 if (!mainResourceBuffer) 216 return; 217 218 RefPtr<SharedBuffer> mainResourceData = mainResourceBuffer->sharedBuffer(); 219 if (!mainResourceData) 220 return; 221 222 if (mainResourceData->memoryMappedNotificationCallback() != BufferMemoryMapped) { 223 ASSERT(!mainResourceData->memoryMappedNotificationCallback() && !mainResourceData->memoryMappedNotificationCallbackData()); 224 mainResourceData->setMemoryMappedNotificationCallback(BufferMemoryMapped, self); 225 } 226 227 switch (mainResourceData->allowToBeMemoryMapped()) { 228 case SharedBuffer::SuccessAlreadyMapped: 229 [[self dataSourceDelegate] dataSourceMemoryMapped]; 230 return; 231 case SharedBuffer::PreviouslyQueuedForMapping: 232 case SharedBuffer::QueuedForMapping: 233 return; 234 case SharedBuffer::FailureCacheFull: 235 [[self dataSourceDelegate] dataSourceMemoryMapFailed]; 236 return; 237 } 238 ASSERT_NOT_REACHED(); 239 } 240 241 - (void)setDataSourceDelegate:(NSObject<WebDataSourcePrivateDelegate> *)delegate 242 { 243 ASSERT(!toPrivate(_private)->_dataSourceDelegate); 244 toPrivate(_private)->_dataSourceDelegate = delegate; 245 } 246 247 - (NSObject<WebDataSourcePrivateDelegate> *)dataSourceDelegate 248 { 249 return toPrivate(_private)->_dataSourceDelegate; 250 } 251 #endif // ENABLE(DISK_IMAGE_CACHE) && PLATFORM(IOS) 199 252 200 253 @end … … 384 437 --WebDataSourceCount; 385 438 439 #if ENABLE(DISK_IMAGE_CACHE) && PLATFORM(IOS) 440 if (_private) { 441 RefPtr<ResourceBuffer> mainResourceBuffer = toPrivate(_private)->loader->mainResourceData(); 442 if (mainResourceBuffer) { 443 RefPtr<SharedBuffer> mainResourceData = mainResourceBuffer->sharedBuffer(); 444 if (mainResourceData && 445 mainResourceData->memoryMappedNotificationCallbackData() == self && 446 mainResourceData->memoryMappedNotificationCallback() == BufferMemoryMapped) { 447 mainResourceData->setMemoryMappedNotificationCallback(nullptr, nullptr); 448 } 449 } 450 } 451 #endif 452 386 453 delete toPrivate(_private); 387 454 -
trunk/Source/WebKit/mac/WebView/WebDataSourcePrivate.h
r63191 r156918 29 29 #import <WebKit/WebDataSource.h> 30 30 31 #if ENABLE(DISK_IMAGE_CACHE) && PLATFORM(IOS) 32 @protocol WebDataSourcePrivateDelegate 33 @required 34 - (void)dataSourceMemoryMapped; 35 - (void)dataSourceMemoryMapFailed; 36 @end 37 #endif 38 31 39 @interface WebDataSource (WebPrivate) 32 40 … … 40 48 - (void)_setDeferMainResourceDataLoad:(BOOL)flag; 41 49 50 #if ENABLE(DISK_IMAGE_CACHE) && PLATFORM(IOS) 51 - (void)_setAllowToBeMemoryMapped; 52 - (void)setDataSourceDelegate:(NSObject<WebDataSourcePrivateDelegate> *)dataSourceDelegate; 53 - (NSObject<WebDataSourcePrivateDelegate> *)dataSourceDelegate; 54 #endif 55 42 56 @end -
trunk/Source/WebKit/mac/WebView/WebPreferenceKeysPrivate.h
r155496 r156918 162 162 163 163 #define WebKitMinimumZoomFontSizePreferenceKey @"WebKitMinimumZoomFontSizePreferenceKey" 164 165 #define WebKitDiskImageCacheEnabledPreferenceKey @"WebKitDiskImageCacheEnabled" 166 #define WebKitDiskImageCacheMinimumImageSizePreferenceKey @"WebKitDiskImageCacheMinimumImageSize" 167 #define WebKitDiskImageCacheMaximumCacheSizePreferenceKey @"WebKitDiskImageCacheMaximumCacheSize" 168 #define WebKitDiskImageCacheSavedCacheDirectoryKey @"WebKitDiskImageCacheSavedCacheDirectory" -
trunk/Source/WebKit/mac/WebView/WebPreferences.mm
r155496 r156918 417 417 [NSNumber numberWithFloat:WKGetMinimumZoomFontSize()], WebKitMinimumZoomFontSizePreferenceKey, 418 418 #endif 419 #if ENABLE(DISK_IMAGE_CACHE) && PLATFORM(IOS) 420 [NSNumber numberWithBool:YES], WebKitDiskImageCacheEnabledPreferenceKey, 421 [NSNumber numberWithUnsignedInt:(100 * 1024)], WebKitDiskImageCacheMinimumImageSizePreferenceKey, 422 [NSNumber numberWithUnsignedInt:(100 * 1024 * 1024)], WebKitDiskImageCacheMaximumCacheSizePreferenceKey, 423 #endif 419 424 [NSNumber numberWithLongLong:ApplicationCacheStorage::noQuota()], WebKitApplicationCacheTotalQuota, 420 425 [NSNumber numberWithLongLong:ApplicationCacheStorage::noQuota()], WebKitApplicationCacheDefaultOriginQuota, … … 1488 1493 } 1489 1494 1495 #if ENABLE(DISK_IMAGE_CACHE) && PLATFORM(IOS) 1496 - (BOOL)diskImageCacheEnabled 1497 { 1498 return [self _boolValueForKey:WebKitDiskImageCacheEnabledPreferenceKey]; 1499 } 1500 1501 - (void)setDiskImageCacheEnabled:(BOOL)enabled 1502 { 1503 [self _setBoolValue:enabled forKey:WebKitDiskImageCacheEnabledPreferenceKey]; 1504 } 1505 1506 - (unsigned)diskImageCacheMinimumImageSize 1507 { 1508 return [self _integerValueForKey:WebKitDiskImageCacheMinimumImageSizePreferenceKey]; 1509 } 1510 1511 - (void)setDiskImageCacheMinimumImageSize:(unsigned)minimumSize 1512 { 1513 [self _setIntegerValue:minimumSize forKey:WebKitDiskImageCacheMinimumImageSizePreferenceKey]; 1514 } 1515 1516 - (unsigned)diskImageCacheMaximumCacheSize 1517 { 1518 return [self _integerValueForKey:WebKitDiskImageCacheMaximumCacheSizePreferenceKey]; 1519 } 1520 1521 - (void)setDiskImageCacheMaximumCacheSize:(unsigned)maximumSize 1522 { 1523 [self _setIntegerValue:maximumSize forKey:WebKitDiskImageCacheMaximumCacheSizePreferenceKey]; 1524 } 1525 1526 - (NSString *)_diskImageCacheSavedCacheDirectory 1527 { 1528 return [[self _stringValueForKey:WebKitDiskImageCacheSavedCacheDirectoryKey] stringByStandardizingPath]; 1529 } 1530 1531 - (void)_setDiskImageCacheSavedCacheDirectory:(NSString *)path 1532 { 1533 [self _setStringValue:[path stringByStandardizingPath] forKey:WebKitDiskImageCacheSavedCacheDirectoryKey]; 1534 } 1535 #endif // ENABLE(DISK_IMAGE_CACHE) && PLATFORM(IOS) 1536 1490 1537 - (BOOL)isFrameFlatteningEnabled 1491 1538 { -
trunk/Source/WebKit/mac/WebView/WebView.mm
r156769 r156918 207 207 #endif 208 208 209 #if ENABLE(DISK_IMAGE_CACHE) && PLATFORM(IOS) 210 #import "WebDiskImageCacheClientIOS.h" 211 #import <WebCore/DiskImageCacheIOS.h> 212 #endif 213 209 214 #if USE(GLIB) 210 215 #import <glib.h> … … 740 745 WebKitInitializeStorageIfNecessary(); 741 746 WebKitInitializeApplicationCachePathIfNecessary(); 747 #if ENABLE(DISK_IMAGE_CACHE) && PLATFORM(IOS) 748 WebKitInitializeWebDiskImageCache(); 749 #endif 742 750 743 751 Settings::setDefaultMinDOMTimerInterval(0.004); … … 1605 1613 if (_private->zoomsTextOnly != zoomsTextOnly) 1606 1614 [self _setZoomMultiplier:_private->zoomMultiplier isTextOnly:zoomsTextOnly]; 1615 1616 #if ENABLE(DISK_IMAGE_CACHE) && PLATFORM(IOS) 1617 DiskImageCache& diskImageCache = WebCore::diskImageCache(); 1618 diskImageCache.setEnabled([preferences diskImageCacheEnabled]); 1619 diskImageCache.setMinimumImageSize([preferences diskImageCacheMinimumImageSize]); 1620 diskImageCache.setMaximumCacheSize([preferences diskImageCacheMaximumCacheSize]); 1621 #endif 1607 1622 } 1608 1623
Note: See TracChangeset
for help on using the changeset viewer.