Changeset 223158 in webkit
- Timestamp:
- Oct 10, 2017 5:01:28 PM (7 years ago)
- Location:
- trunk/Source/WebKit
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit/ChangeLog
r223150 r223158 1 2017-10-10 Chris Dumez <cdumez@apple.com> 2 3 [WK2] Add API to clear service worker registrations 4 https://bugs.webkit.org/show_bug.cgi?id=178085 5 <rdar://problem/34866025> 6 7 Reviewed by Ryosuke Niwa. 8 9 Add API to clear service worker registrations. Although the request to 10 clear the registration is passed on to the StorageProcess, it is currently 11 a no-op on StorageProcess side until we actually persist service worker 12 registrations on disk. 13 14 * Shared/WebsiteData/WebsiteDataType.h: 15 * StorageProcess/StorageProcess.cpp: 16 (WebKit::StorageProcess::fetchWebsiteData): 17 (WebKit::StorageProcess::deleteWebsiteData): 18 (WebKit::StorageProcess::deleteWebsiteDataForOrigins): 19 * UIProcess/API/C/WKWebsiteDataStoreRef.cpp: 20 (WKWebsiteDataStoreRemoveAllServiceWorkerRegistrations): 21 * UIProcess/API/C/WKWebsiteDataStoreRef.h: 22 * UIProcess/API/Cocoa/WKWebsiteDataRecord.h: 23 * UIProcess/API/Cocoa/WKWebsiteDataRecord.mm: 24 (dataTypesToString): 25 * UIProcess/API/Cocoa/WKWebsiteDataRecordInternal.h: 26 (WebKit::toWebsiteDataType): 27 (WebKit::toWKWebsiteDataTypes): 28 * UIProcess/API/Cocoa/WKWebsiteDataStore.mm: 29 (+[WKWebsiteDataStore allWebsiteDataTypes]): 30 * UIProcess/WebsiteData/WebsiteDataStore.cpp: 31 (WebKit::WebsiteDataStore::fetchDataAndApply): 32 (WebKit::WebsiteDataStore::removeData): 33 1 34 2017-10-10 Commit Queue <commit-queue@webkit.org> 2 35 -
trunk/Source/WebKit/Shared/WebsiteData/WebsiteDataType.h
r219904 r223158 46 46 ResourceLoadStatistics = 1 << 12, 47 47 Credentials = 1 << 13, 48 #if ENABLE(SERVICE_WORKER) 49 ServiceWorkerRegistrations = 1 << 14, 50 #endif 48 51 }; 49 52 -
trunk/Source/WebKit/StorageProcess/StorageProcess.cpp
r223141 r223158 184 184 void StorageProcess::fetchWebsiteData(PAL::SessionID sessionID, OptionSet<WebsiteDataType> websiteDataTypes, uint64_t callbackID) 185 185 { 186 #if ENABLE(INDEXED_DATABASE)187 186 auto completionHandler = [this, callbackID](const WebsiteData& websiteData) { 188 187 parentProcessConnection()->send(Messages::StorageProcessProxy::DidFetchWebsiteData(callbackID, websiteData), 0); 189 188 }; 190 189 190 #if ENABLE(SERVICE_WORKER) 191 if (websiteDataTypes.contains(WebsiteDataType::ServiceWorkerRegistrations)) 192 notImplemented(); 193 #endif 194 195 #if ENABLE(INDEXED_DATABASE) 191 196 String path = m_idbDatabasePaths.get(sessionID); 192 if (path.isEmpty() || !websiteDataTypes.contains(WebsiteDataType::IndexedDBDatabases)) { 193 completionHandler({ }); 194 return; 195 } 196 197 if (websiteDataTypes.contains(WebsiteDataType::IndexedDBDatabases)) { 197 if (!path.isEmpty() && websiteDataTypes.contains(WebsiteDataType::IndexedDBDatabases)) { 198 198 // FIXME: Pick the right database store based on the session ID. 199 199 postStorageTask(CrossThreadTask([this, completionHandler = WTFMove(completionHandler), path = WTFMove(path)]() mutable { … … 206 206 }); 207 207 })); 208 } 209 #endif 208 return; 209 } 210 #endif 211 212 completionHandler({ }); 210 213 } 211 214 212 215 void StorageProcess::deleteWebsiteData(PAL::SessionID sessionID, OptionSet<WebsiteDataType> websiteDataTypes, std::chrono::system_clock::time_point modifiedSince, uint64_t callbackID) 213 216 { 214 #if ENABLE(INDEXED_DATABASE)215 217 auto completionHandler = [this, callbackID]() { 216 218 parentProcessConnection()->send(Messages::StorageProcessProxy::DidDeleteWebsiteData(callbackID), 0); 217 219 }; 218 220 219 if (!websiteDataTypes.contains(WebsiteDataType::IndexedDBDatabases)) { 220 completionHandler(); 221 return; 222 } 223 224 idbServer(sessionID).closeAndDeleteDatabasesModifiedSince(modifiedSince, WTFMove(completionHandler)); 225 #endif 221 #if ENABLE(SERVICE_WORKER) 222 if (websiteDataTypes.contains(WebsiteDataType::ServiceWorkerRegistrations)) 223 notImplemented(); 224 #endif 225 226 #if ENABLE(INDEXED_DATABASE) 227 if (websiteDataTypes.contains(WebsiteDataType::IndexedDBDatabases)) { 228 idbServer(sessionID).closeAndDeleteDatabasesModifiedSince(modifiedSince, WTFMove(completionHandler)); 229 return; 230 } 231 #endif 232 233 completionHandler(); 226 234 } 227 235 228 236 void StorageProcess::deleteWebsiteDataForOrigins(PAL::SessionID sessionID, OptionSet<WebsiteDataType> websiteDataTypes, const Vector<SecurityOriginData>& securityOriginDatas, uint64_t callbackID) 229 237 { 230 #if ENABLE(INDEXED_DATABASE)231 238 auto completionHandler = [this, callbackID]() { 232 239 parentProcessConnection()->send(Messages::StorageProcessProxy::DidDeleteWebsiteDataForOrigins(callbackID), 0); 233 240 }; 234 241 242 #if ENABLE(SERVICE_WORKER) 243 if (websiteDataTypes.contains(WebsiteDataType::ServiceWorkerRegistrations)) 244 notImplemented(); 245 #endif 246 247 #if ENABLE(INDEXED_DATABASE) 235 248 if (!websiteDataTypes.contains(WebsiteDataType::IndexedDBDatabases)) { 236 completionHandler();237 return; 238 } 239 240 idbServer(sessionID).closeAndDeleteDatabasesForOrigins(securityOriginDatas, WTFMove(completionHandler)); 241 #endif 249 idbServer(sessionID).closeAndDeleteDatabasesForOrigins(securityOriginDatas, WTFMove(completionHandler)); 250 return; 251 } 252 #endif 253 254 completionHandler(); 242 255 } 243 256 -
trunk/Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreRef.cpp
r222962 r223158 325 325 WebKit::toImpl(dataStoreRef)->websiteDataStore().removeData(dataTypes, std::chrono::system_clock::time_point::min(), [] { }); 326 326 } 327 328 void WKWebsiteDataStoreRemoveAllServiceWorkerRegistrations(WKWebsiteDataStoreRef dataStoreRef) 329 { 330 #if ENABLE(SERVICE_WORKER) 331 OptionSet<WebKit::WebsiteDataType> dataTypes = WebKit::WebsiteDataType::ServiceWorkerRegistrations; 332 WebKit::toImpl(dataStoreRef)->websiteDataStore().removeData(dataTypes, std::chrono::system_clock::time_point::min(), [] { }); 333 #else 334 UNUSED_PARAM(dataStoreRef); 335 #endif 336 } -
trunk/Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreRef.h
r222962 r223158 72 72 WK_EXPORT void WKWebsiteDataStoreStatisticsResetToConsistentState(WKWebsiteDataStoreRef dataStoreRef); 73 73 WK_EXPORT void WKWebsiteDataStoreRemoveAllIndexedDatabases(WKWebsiteDataStoreRef dataStoreRef); 74 WK_EXPORT void WKWebsiteDataStoreRemoveAllServiceWorkerRegistrations(WKWebsiteDataStoreRef dataStoreRef); 74 75 75 76 #ifdef __cplusplus -
trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataRecord.h
r202789 r223158 56 56 WK_EXTERN NSString * const WKWebsiteDataTypeIndexedDBDatabases WK_API_AVAILABLE(macosx(10.11), ios(9.0)); 57 57 58 /*! @constant WKWebsiteDataTypeServiceWorkerRegistrations Service worker registrations. */ 59 WK_EXTERN NSString * const WKWebsiteDataTypeServiceWorkerRegistrations WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA)); 60 58 61 /*! A WKWebsiteDataRecord represents website data, grouped by domain name using the public suffix list. */ 59 62 WK_CLASS_AVAILABLE(macosx(10.11), ios(9.0)) -
trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataRecord.mm
r217886 r223158 41 41 NSString * const WKWebsiteDataTypeWebSQLDatabases = @"WKWebsiteDataTypeWebSQLDatabases"; 42 42 NSString * const WKWebsiteDataTypeIndexedDBDatabases = @"WKWebsiteDataTypeIndexedDBDatabases"; 43 NSString * const WKWebsiteDataTypeServiceWorkerRegistrations = @"WKWebsiteDataTypeServiceWorkerRegistrations"; 43 44 44 45 NSString * const _WKWebsiteDataTypeMediaKeys = @"_WKWebsiteDataTypeMediaKeys"; … … 81 82 if ([dataTypes containsObject:WKWebsiteDataTypeIndexedDBDatabases]) 82 83 [array addObject:@"IndexedDB"]; 84 if ([dataTypes containsObject:WKWebsiteDataTypeServiceWorkerRegistrations]) 85 [array addObject:@"Service Worker Registrations"]; 83 86 if ([dataTypes containsObject:_WKWebsiteDataTypeHSTSCache]) 84 87 [array addObject:@"HSTS Cache"]; -
trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataRecordInternal.h
r218011 r223158 59 59 if ([websiteDataType isEqualToString:WKWebsiteDataTypeIndexedDBDatabases]) 60 60 return WebsiteDataType::IndexedDBDatabases; 61 #if ENABLE(SERVICE_WORKER) 62 if ([websiteDataType isEqualToString:WKWebsiteDataTypeServiceWorkerRegistrations]) 63 return WebsiteDataType::ServiceWorkerRegistrations; 64 #endif 61 65 if ([websiteDataType isEqualToString:_WKWebsiteDataTypeHSTSCache]) 62 66 return WebsiteDataType::HSTSCache; … … 108 112 if (websiteDataTypes.contains(WebsiteDataType::IndexedDBDatabases)) 109 113 [wkWebsiteDataTypes addObject:WKWebsiteDataTypeIndexedDBDatabases]; 114 #if ENABLE(SERVICE_WORKER) 115 if (websiteDataTypes.contains(WebsiteDataType::ServiceWorkerRegistrations)) 116 [wkWebsiteDataTypes addObject:WKWebsiteDataTypeServiceWorkerRegistrations]; 117 #endif 110 118 if (websiteDataTypes.contains(WebsiteDataType::HSTSCache)) 111 119 [wkWebsiteDataTypes addObject:_WKWebsiteDataTypeHSTSCache]; -
trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm
r222396 r223158 96 96 static NSSet *allWebsiteDataTypes; 97 97 dispatch_once(&onceToken, ^{ 98 allWebsiteDataTypes = [[NSSet alloc] initWithArray:@[ WKWebsiteDataTypeDiskCache, WKWebsiteDataTypeMemoryCache, WKWebsiteDataTypeOfflineWebApplicationCache, WKWebsiteDataTypeCookies, WKWebsiteDataTypeSessionStorage, WKWebsiteDataTypeLocalStorage, WKWebsiteDataTypeIndexedDBDatabases, WKWebsiteDataType WebSQLDatabases ]];98 allWebsiteDataTypes = [[NSSet alloc] initWithArray:@[ WKWebsiteDataTypeDiskCache, WKWebsiteDataTypeMemoryCache, WKWebsiteDataTypeOfflineWebApplicationCache, WKWebsiteDataTypeCookies, WKWebsiteDataTypeSessionStorage, WKWebsiteDataTypeLocalStorage, WKWebsiteDataTypeIndexedDBDatabases, WKWebsiteDataTypeServiceWorkerRegistrations, WKWebsiteDataTypeWebSQLDatabases ]]; 99 99 }); 100 100 -
trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp
r222941 r223158 427 427 } 428 428 429 if (dataTypes.contains(WebsiteDataType::IndexedDBDatabases) && isPersistent()) { 429 if ((dataTypes.contains(WebsiteDataType::IndexedDBDatabases) 430 #if ENABLE(SERVICE_WORKER) 431 || dataTypes.contains(WebsiteDataType::ServiceWorkerRegistrations) 432 #endif 433 ) && isPersistent()) { 430 434 for (auto& processPool : processPools()) { 431 435 processPool->ensureStorageProcessAndWebsiteDataStore(this); … … 721 725 } 722 726 723 if (dataTypes.contains(WebsiteDataType::IndexedDBDatabases) && isPersistent()) { 727 if ((dataTypes.contains(WebsiteDataType::IndexedDBDatabases) 728 #if ENABLE(SERVICE_WORKER) 729 || dataTypes.contains(WebsiteDataType::ServiceWorkerRegistrations) 730 #endif 731 ) && isPersistent()) { 724 732 for (auto& processPool : processPools()) { 725 733 processPool->ensureStorageProcessAndWebsiteDataStore(this); … … 1000 1008 } 1001 1009 1002 if (dataTypes.contains(WebsiteDataType::IndexedDBDatabases) && isPersistent()) { 1010 if ((dataTypes.contains(WebsiteDataType::IndexedDBDatabases) 1011 #if ENABLE(SERVICE_WORKER) 1012 || dataTypes.contains(WebsiteDataType::ServiceWorkerRegistrations) 1013 #endif 1014 ) && isPersistent()) { 1003 1015 for (auto& processPool : processPools()) { 1004 1016 processPool->ensureStorageProcessAndWebsiteDataStore(this);
Note: See TracChangeset
for help on using the changeset viewer.