Changeset 177038 in webkit
- Timestamp:
- Dec 9, 2014, 1:53:45 PM (11 years ago)
- Location:
- trunk/Source/WebKit2
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit2/ChangeLog
r177035 r177038 1 2014-12-09 Anders Carlsson <andersca@apple.com> 2 3 Add support for clearing the disk cache 4 https://bugs.webkit.org/show_bug.cgi?id=139458 5 6 Reviewed by Antti Koivisto. 7 8 * NetworkProcess/NetworkProcess.cpp: 9 (WebKit::NetworkProcess::deleteWebsiteData): 10 If we're asked to clear the disk cache, do so. Clearing the cache is asynchronous, 11 so we make sure not to call the completion handler right away in that case. 12 13 * NetworkProcess/NetworkProcess.h: 14 Add clearDiskCache member function. 15 16 * NetworkProcess/cocoa/NetworkProcessCocoa.mm: 17 (WebKit::NetworkProcess::clearDiskCache): 18 Clear the disk cache, then call the completion handler. 19 20 * NetworkProcess/mac/NetworkProcessMac.mm: 21 (WebKit::NetworkProcess::clearCacheForAllOrigins): 22 Call the new clearDiskCache function. 23 24 * Shared/WebsiteData/WebsiteDataTypes.h: 25 Add WebsiteDataTypeDiskCache. 26 27 * UIProcess/API/Cocoa/_WKWebsiteDataStore.h: 28 * UIProcess/API/Cocoa/_WKWebsiteDataStore.mm: 29 (toWebsiteDataTypes): 30 Handle WKWebsiteDataTypeDiskCache. 31 1 32 2014-12-09 Myles C. Maxfield <mmaxfield@apple.com> 2 33 -
trunk/Source/WebKit2/NetworkProcess/NetworkProcess.cpp
r177032 r177038 244 244 } 245 245 246 parentProcessConnection()->send(Messages::NetworkProcessProxy::DidDeleteWebsiteData(callbackID), 0); 246 auto completionHandler = [this, callbackID] { 247 parentProcessConnection()->send(Messages::NetworkProcessProxy::DidDeleteWebsiteData(callbackID), 0); 248 }; 249 250 if ((websiteDataTypes & WebsiteDataTypeDiskCache) & !sessionID.isEphemeral()) { 251 clearDiskCache(modifiedSince, WTF::move(completionHandler)); 252 return; 253 } 254 255 completionHandler(); 247 256 } 248 257 -
trunk/Source/WebKit2/NetworkProcess/NetworkProcess.h
r177032 r177038 116 116 void deleteWebsiteData(WebCore::SessionID, uint64_t websiteDataTypes, std::chrono::system_clock::time_point modifiedSince, uint64_t callbackID); 117 117 118 // FIXME: This should take a session ID so we can identify which disk cache to delete. 119 void clearDiskCache(std::chrono::system_clock::time_point modifiedSince, std::function<void ()> completionHandler); 120 118 121 void downloadRequest(uint64_t downloadID, const WebCore::ResourceRequest&); 119 122 void resumeDownload(uint64_t downloadID, const IPC::DataReference& resumeData, const String& path, const SandboxExtension::Handle&); -
trunk/Source/WebKit2/NetworkProcess/cocoa/NetworkProcessCocoa.mm
r176347 r177038 134 134 } 135 135 136 void NetworkProcess::clearDiskCache(std::chrono::system_clock::time_point modifiedSince, std::function<void ()> completionHandler) 137 { 138 if (!m_clearCacheDispatchGroup) 139 m_clearCacheDispatchGroup = dispatch_group_create(); 140 141 dispatch_group_async(m_clearCacheDispatchGroup, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), [modifiedSince, completionHandler] { 142 NSURLCache *cache = [NSURLCache sharedURLCache]; 143 144 #if PLATFORM(IOS) || __MAC_OS_X_VERSION_MIN_REQUIRED >= 101000 145 NSTimeInterval timeInterval = std::chrono::duration_cast<std::chrono::duration<double>>(modifiedSince.time_since_epoch()).count(); 146 NSDate *date = [NSDate dateWithTimeIntervalSince1970:timeInterval]; 147 [cache removeCachedResponsesSinceDate:date]; 148 #else 149 [cache removeAllCachedResponses]; 150 #endif 151 dispatch_async(dispatch_get_main_queue(), [completionHandler] { 152 completionHandler(); 153 }); 154 }); 155 } 156 136 157 } 137 158 -
trunk/Source/WebKit2/NetworkProcess/mac/NetworkProcessMac.mm
r166385 r177038 130 130 return; 131 131 132 if (!m_clearCacheDispatchGroup) 133 m_clearCacheDispatchGroup = dispatch_group_create(); 134 135 dispatch_group_async(m_clearCacheDispatchGroup, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 136 [[NSURLCache sharedURLCache] removeAllCachedResponses]; 137 }); 132 clearDiskCache(std::chrono::system_clock::time_point::min(), [] { }); 138 133 } 139 134 -
trunk/Source/WebKit2/Shared/WebsiteData/WebsiteDataTypes.h
r177032 r177038 31 31 enum WebsiteDataTypes { 32 32 WebsiteDataTypeCookies = 1 << 0, 33 WebsiteDataTypeDiskCache = 1 << 1, 33 34 }; 34 35 -
trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKWebsiteDataStore.h
r177018 r177038 32 32 typedef NS_OPTIONS(NSUInteger, WKWebsiteDataTypes) { 33 33 WKWebsiteDataTypeCookies = 1 << 0, 34 WKWebsiteDataTypeDiskCache = 1 << 1, 34 35 35 36 WKWebsiteDataTypeAll = NSUIntegerMax, -
trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKWebsiteDataStore.mm
r177032 r177038 61 61 if (wkWebsiteDataTypes & WKWebsiteDataTypeCookies) 62 62 websiteDataTypes |= WebsiteDataTypes::WebsiteDataTypeCookies; 63 if (wkWebsiteDataTypes & WKWebsiteDataTypeDiskCache) 64 websiteDataTypes |= WebsiteDataTypes::WebsiteDataTypeDiskCache; 63 65 64 66 return static_cast<WebsiteDataTypes>(websiteDataTypes);
Note:
See TracChangeset
for help on using the changeset viewer.