Changeset 250426 in webkit
- Timestamp:
- Sep 27, 2019, 9:07:18 AM (6 years ago)
- Location:
- trunk
- Files:
-
- 20 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r250425 r250426 1 2019-09-27 Alex Christensen <achristensen@webkit.org> 2 3 Move service worker process termination delay disabling from process pool to website data store 4 https://bugs.webkit.org/show_bug.cgi?id=202308 5 6 Reviewed by Chris Dumez. 7 8 * workers/service/server/SWServer.cpp: 9 (WebCore::SWServer::SWServer): 10 (WebCore::SWServer::unregisterServiceWorkerClient): 11 * workers/service/server/SWServer.h: 12 (WebCore::SWServer::disableServiceWorkerProcessTerminationDelay): Deleted. 13 1 14 2019-09-27 Chris Dumez <cdumez@apple.com> 2 15 -
trunk/Source/WebCore/workers/service/server/SWServer.cpp
r250195 r250426 300 300 } 301 301 302 SWServer::SWServer(UniqueRef<SWOriginStore>&& originStore, String&& registrationDatabaseDirectory, PAL::SessionID sessionID, CreateContextConnectionCallback&& callback)302 SWServer::SWServer(UniqueRef<SWOriginStore>&& originStore, bool processTerminationDelayEnabled, String&& registrationDatabaseDirectory, PAL::SessionID sessionID, CreateContextConnectionCallback&& callback) 303 303 : m_originStore(WTFMove(originStore)) 304 304 , m_sessionID(sessionID) 305 , m_isProcessTerminationDelayEnabled(processTerminationDelayEnabled) 305 306 , m_createContextConnectionCallback(WTFMove(callback)) 306 307 { … … 843 844 m_clientIdentifiersPerOrigin.remove(clientOrigin); 844 845 }); 845 iterator->value.terminateServiceWorkersTimer->startOneShot(m_ shouldDisableServiceWorkerProcessTerminationDelay ? 0_s : terminationDelay);846 iterator->value.terminateServiceWorkersTimer->startOneShot(m_isProcessTerminationDelayEnabled ? terminationDelay : 0_s); 846 847 } 847 848 -
trunk/Source/WebCore/workers/service/server/SWServer.h
r250287 r250426 126 126 127 127 using CreateContextConnectionCallback = Function<void(const WebCore::RegistrableDomain&)>; 128 WEBCORE_EXPORT SWServer(UniqueRef<SWOriginStore>&&, String&& registrationDatabaseDirectory, PAL::SessionID, CreateContextConnectionCallback&&);128 WEBCORE_EXPORT SWServer(UniqueRef<SWOriginStore>&&, bool processTerminationDelayEnabled, String&& registrationDatabaseDirectory, PAL::SessionID, CreateContextConnectionCallback&&); 129 129 130 130 WEBCORE_EXPORT ~SWServer(); … … 194 194 PAL::SessionID sessionID() const { return m_sessionID; } 195 195 WEBCORE_EXPORT bool needsContextConnectionForRegistrableDomain(const RegistrableDomain&) const; 196 197 void disableServiceWorkerProcessTerminationDelay() { m_shouldDisableServiceWorkerProcessTerminationDelay = true; }198 196 199 197 void removeFromScopeToRegistrationMap(const ServiceWorkerRegistrationKey&); … … 257 255 PAL::SessionID m_sessionID; 258 256 bool m_importCompleted { false }; 259 bool m_ shouldDisableServiceWorkerProcessTerminationDelay { false };257 bool m_isProcessTerminationDelayEnabled { true }; 260 258 Vector<CompletionHandler<void()>> m_clearCompletionCallbacks; 261 259 Vector<Function<void(const HashSet<SecurityOriginData>&)>> m_getOriginsWithRegistrationsCallbacks; -
trunk/Source/WebKit/ChangeLog
r250424 r250426 1 2019-09-27 Alex Christensen <achristensen@webkit.org> 2 3 Move service worker process termination delay disabling from process pool to website data store 4 https://bugs.webkit.org/show_bug.cgi?id=202308 5 6 Reviewed by Chris Dumez. 7 8 It's only there for a test, which still works quickly. 9 10 * NetworkProcess/NetworkProcess.cpp: 11 (WebKit::NetworkProcess::initializeNetworkProcess): 12 (WebKit::NetworkProcess::addWebsiteDataStore): 13 (WebKit::NetworkProcess::destroySession): 14 (WebKit::NetworkProcess::fetchWebsiteData): 15 (WebKit::NetworkProcess::deleteWebsiteDataForRegistrableDomains): 16 (WebKit::NetworkProcess::registrableDomainsWithWebsiteData): 17 (WebKit::NetworkProcess::swServerForSession): 18 (WebKit::NetworkProcess::addServiceWorkerSession): 19 (WebKit::NetworkProcess::disableServiceWorkerProcessTerminationDelay): Deleted. 20 * NetworkProcess/NetworkProcess.h: 21 * NetworkProcess/NetworkProcess.messages.in: 22 * Shared/WebsiteDataStoreParameters.cpp: 23 (WebKit::WebsiteDataStoreParameters::encode const): 24 (WebKit::WebsiteDataStoreParameters::decode): 25 * Shared/WebsiteDataStoreParameters.h: 26 * UIProcess/API/Cocoa/WKProcessPool.mm: 27 (-[WKProcessPool _disableServiceWorkerProcessTerminationDelay]): Deleted. 28 * UIProcess/API/Cocoa/WKProcessPoolPrivate.h: 29 * UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h: 30 * UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm: 31 (-[_WKWebsiteDataStoreConfiguration serviceWorkerProcessTerminationDelayEnabled]): 32 (-[_WKWebsiteDataStoreConfiguration setServiceWorkerProcessTerminationDelayEnabled:]): 33 * UIProcess/WebProcessPool.cpp: 34 (WebKit::WebProcessPool::ensureNetworkProcess): 35 (WebKit::WebProcessPool::disableServiceWorkerProcessTerminationDelay): Deleted. 36 * UIProcess/WebProcessPool.h: 37 * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm: 38 (WebKit::WebsiteDataStore::parameters): 39 * UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp: 40 (WebKit::WebsiteDataStoreConfiguration::copy): 41 * UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h: 42 (WebKit::WebsiteDataStoreConfiguration::serviceWorkerProcessTerminationDelayEnabled const): 43 (WebKit::WebsiteDataStoreConfiguration::setServiceWorkerProcessTerminationDelayEnabled): 44 1 45 2019-09-27 Alex Christensen <achristensen@webkit.org> 2 46 -
trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp
r250424 r250426 332 332 #if ENABLE(SERVICE_WORKER) 333 333 if (parentProcessHasServiceWorkerEntitlement()) { 334 addServiceWorkerSession(PAL::SessionID::defaultSessionID(), parameters.serviceWorkerRegistrationDirectory, parameters.serviceWorkerRegistrationDirectoryExtensionHandle); 334 bool serviceWorkerProcessTerminationDelayEnabled = true; 335 addServiceWorkerSession(PAL::SessionID::defaultSessionID(), serviceWorkerProcessTerminationDelayEnabled, parameters.serviceWorkerRegistrationDirectory, parameters.serviceWorkerRegistrationDirectoryExtensionHandle); 335 336 336 337 for (auto& scheme : parameters.urlSchemesServiceWorkersCanHandle) 337 338 registerURLSchemeServiceWorkersCanHandle(scheme); 338 339 m_shouldDisableServiceWorkerProcessTerminationDelay = parameters.shouldDisableServiceWorkerProcessTerminationDelay;340 339 } 341 340 #endif … … 465 464 #if ENABLE(SERVICE_WORKER) 466 465 if (parentProcessHasServiceWorkerEntitlement()) 467 addServiceWorkerSession(parameters.networkSessionParameters.sessionID, parameters.serviceWorker RegistrationDirectory, parameters.serviceWorkerRegistrationDirectoryExtensionHandle);466 addServiceWorkerSession(parameters.networkSessionParameters.sessionID, parameters.serviceWorkerProcessTerminationDelayEnabled, parameters.serviceWorkerRegistrationDirectory, parameters.serviceWorkerRegistrationDirectoryExtensionHandle); 468 467 #endif 469 468 … … 597 596 #if ENABLE(SERVICE_WORKER) 598 597 m_swServers.remove(sessionID); 599 m_s wDatabasePaths.remove(sessionID);598 m_serviceWorkerInfo.remove(sessionID); 600 599 #endif 601 600 … … 1375 1374 1376 1375 #if ENABLE(SERVICE_WORKER) 1377 path = m_s wDatabasePaths.get(sessionID);1376 path = m_serviceWorkerInfo.get(sessionID).databasePath; 1378 1377 if (!path.isEmpty() && websiteDataTypes.contains(WebsiteDataType::ServiceWorkerRegistrations)) { 1379 1378 swServerForSession(sessionID).getOriginsWithRegistrations([callbackAggregator = callbackAggregator.copyRef()](const HashSet<SecurityOriginData>& securityOrigins) mutable { … … 1756 1755 1757 1756 #if ENABLE(SERVICE_WORKER) 1758 path = m_s wDatabasePaths.get(sessionID);1757 path = m_serviceWorkerInfo.get(sessionID).databasePath; 1759 1758 if (!path.isEmpty() && websiteDataTypes.contains(WebsiteDataType::ServiceWorkerRegistrations)) { 1760 1759 swServerForSession(sessionID).getOriginsWithRegistrations([this, sessionID, domainsToDeleteAllButCookiesFor, callbackAggregator = callbackAggregator.copyRef()](const HashSet<SecurityOriginData>& securityOrigins) mutable { … … 1893 1892 1894 1893 #if ENABLE(SERVICE_WORKER) 1895 path = m_s wDatabasePaths.get(sessionID);1894 path = m_serviceWorkerInfo.get(sessionID).databasePath; 1896 1895 if (!path.isEmpty() && websiteDataTypes.contains(WebsiteDataType::ServiceWorkerRegistrations)) { 1897 1896 swServerForSession(sessionID).getOriginsWithRegistrations([callbackAggregator = callbackAggregator.copyRef()](const HashSet<SecurityOriginData>& securityOrigins) mutable { … … 2393 2392 { 2394 2393 auto result = m_swServers.ensure(sessionID, [&] { 2395 auto path = m_swDatabasePaths.get(sessionID); 2394 auto info = m_serviceWorkerInfo.get(sessionID); 2395 auto path = info.databasePath; 2396 2396 // There should already be a registered path for this PAL::SessionID. 2397 2397 // If there's not, then where did this PAL::SessionID come from? 2398 2398 ASSERT(sessionID.isEphemeral() || !path.isEmpty()); 2399 2400 auto value = makeUnique<SWServer>(makeUniqueRef<WebSWOriginStore>(), WTFMove(path), sessionID, [this, sessionID](auto& registrableDomain) {2399 2400 return makeUnique<SWServer>(makeUniqueRef<WebSWOriginStore>(), info.processTerminationDelayEnabled, WTFMove(path), sessionID, [this, sessionID](auto& registrableDomain) { 2401 2401 ASSERT(!registrableDomain.isEmpty()); 2402 2402 parentProcessConnection()->send(Messages::NetworkProcessProxy::EstablishWorkerContextConnectionToNetworkProcess { registrableDomain, sessionID }, 0); 2403 2403 }); 2404 if (m_shouldDisableServiceWorkerProcessTerminationDelay)2405 value->disableServiceWorkerProcessTerminationDelay();2406 return value;2407 2404 }); 2408 2409 2405 return *result.iterator->value; 2410 2406 } … … 2433 2429 } 2434 2430 2435 void NetworkProcess::disableServiceWorkerProcessTerminationDelay() 2436 { 2437 if (m_shouldDisableServiceWorkerProcessTerminationDelay) 2438 return; 2439 2440 m_shouldDisableServiceWorkerProcessTerminationDelay = true; 2441 for (auto& swServer : m_swServers.values()) 2442 swServer->disableServiceWorkerProcessTerminationDelay(); 2443 } 2444 2445 void NetworkProcess::addServiceWorkerSession(PAL::SessionID sessionID, String& serviceWorkerRegistrationDirectory, const SandboxExtension::Handle& handle) 2446 { 2447 auto addResult = m_swDatabasePaths.add(sessionID, serviceWorkerRegistrationDirectory); 2431 void NetworkProcess::addServiceWorkerSession(PAL::SessionID sessionID, bool processTerminationDelayEnabled, String& serviceWorkerRegistrationDirectory, const SandboxExtension::Handle& handle) 2432 { 2433 ServiceWorkerInfo info { 2434 serviceWorkerRegistrationDirectory, 2435 processTerminationDelayEnabled, 2436 }; 2437 auto addResult = m_serviceWorkerInfo.add(sessionID, WTFMove(info)); 2448 2438 if (addResult.isNewEntry) { 2449 2439 SandboxExtension::consumePermanently(handle); -
trunk/Source/WebKit/NetworkProcess/NetworkProcess.h
r250424 r250426 460 460 WebSWOriginStore* existingSWOriginStoreForSession(PAL::SessionID) const; 461 461 462 void addServiceWorkerSession(PAL::SessionID, String& serviceWorkerRegistrationDirectory, const SandboxExtension::Handle&);462 void addServiceWorkerSession(PAL::SessionID, bool processTerminationDelayEnabled, String& serviceWorkerRegistrationDirectory, const SandboxExtension::Handle&); 463 463 #endif 464 464 … … 527 527 528 528 #if ENABLE(SERVICE_WORKER) 529 bool m_shouldDisableServiceWorkerProcessTerminationDelay { false }; 530 HashMap<PAL::SessionID, String> m_swDatabasePaths; 529 struct ServiceWorkerInfo { 530 String databasePath; 531 bool processTerminationDelayEnabled { true }; 532 }; 533 HashMap<PAL::SessionID, ServiceWorkerInfo> m_serviceWorkerInfo; 531 534 HashMap<PAL::SessionID, std::unique_ptr<WebCore::SWServer>> m_swServers; 532 535 #endif -
trunk/Source/WebKit/NetworkProcess/NetworkProcess.messages.in
r250424 r250426 152 152 SetCacheStorageParameters(PAL::SessionID sessionID, String cacheStorageDirectory, WebKit::SandboxExtension::Handle handle); 153 153 154 #if ENABLE(SERVICE_WORKER)155 DisableServiceWorkerProcessTerminationDelay()156 #endif157 158 154 SyncLocalStorage() -> () Synchronous 159 155 ClearLegacyPrivateBrowsingLocalStorage() -
trunk/Source/WebKit/Shared/WebsiteDataStoreParameters.cpp
r250351 r250426 51 51 52 52 #if ENABLE(SERVICE_WORKER) 53 encoder << serviceWorkerRegistrationDirectory << serviceWorkerRegistrationDirectoryExtensionHandle ;53 encoder << serviceWorkerRegistrationDirectory << serviceWorkerRegistrationDirectoryExtensionHandle << serviceWorkerProcessTerminationDelayEnabled; 54 54 #endif 55 55 … … 122 122 return WTF::nullopt; 123 123 parameters.serviceWorkerRegistrationDirectoryExtensionHandle = WTFMove(*serviceWorkerRegistrationDirectoryExtensionHandle); 124 125 Optional<bool> serviceWorkerProcessTerminationDelayEnabled; 126 decoder >> serviceWorkerProcessTerminationDelayEnabled; 127 if (!serviceWorkerProcessTerminationDelayEnabled) 128 return WTF::nullopt; 129 parameters.serviceWorkerProcessTerminationDelayEnabled = WTFMove(*serviceWorkerProcessTerminationDelayEnabled); 124 130 #endif 125 131 -
trunk/Source/WebKit/Shared/WebsiteDataStoreParameters.h
r250351 r250426 66 66 String serviceWorkerRegistrationDirectory; 67 67 SandboxExtension::Handle serviceWorkerRegistrationDirectoryExtensionHandle; 68 bool serviceWorkerProcessTerminationDelayEnabled { true }; 68 69 #endif 69 70 -
trunk/Source/WebKit/UIProcess/API/Cocoa/WKProcessPool.mm
r250422 r250426 453 453 } 454 454 455 - (void)_disableServiceWorkerProcessTerminationDelay456 {457 _processPool->disableServiceWorkerProcessTerminationDelay();458 }459 460 455 - (pid_t)_networkProcessIdentifier 461 456 { … … 467 462 return _processPool->prewarmedProcessIdentifier(); 468 463 } 469 470 464 471 465 - (void)_syncNetworkProcessCookies -
trunk/Source/WebKit/UIProcess/API/Cocoa/WKProcessPoolPrivate.h
r250377 r250426 94 94 - (void)_sendNetworkProcessDidResume WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA)); 95 95 - (void)_terminateServiceWorkerProcesses WK_API_AVAILABLE(macos(10.14), ios(12.0)); 96 - (void)_disableServiceWorkerProcessTerminationDelay WK_API_AVAILABLE(macos(10.14), ios(12.0));97 96 98 97 // Test only. -
trunk/Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h
r250377 r250426 61 61 @property (nonatomic, copy, setter=_setCacheStorageDirectory:) NSURL *_cacheStorageDirectory WK_API_AVAILABLE(macos(10.13.4), ios(11.3)); 62 62 @property (nonatomic, copy, setter=_setServiceWorkerRegistrationDirectory:) NSURL *_serviceWorkerRegistrationDirectory WK_API_AVAILABLE(macos(10.13.4), ios(11.3)); 63 @property (nonatomic) BOOL serviceWorkerProcessTerminationDelayEnabled WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA)); 63 64 @property (nonatomic, nullable, copy) NSURL *networkCacheDirectory WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA)); 64 65 @property (nonatomic, nullable, copy) NSURL *deviceIdHashSaltsStorageDirectory WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA)); -
trunk/Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm
r250377 r250426 210 210 } 211 211 212 - (BOOL)serviceWorkerProcessTerminationDelayEnabled 213 { 214 return _configuration->serviceWorkerProcessTerminationDelayEnabled(); 215 } 216 217 - (void)setServiceWorkerProcessTerminationDelayEnabled:(BOOL)enabled 218 { 219 _configuration->setServiceWorkerProcessTerminationDelayEnabled(enabled); 220 } 221 212 222 - (void)setSourceApplicationBundleIdentifier:(NSString *)identifier 213 223 { -
trunk/Source/WebKit/UIProcess/WebProcessPool.cpp
r250424 r250426 553 553 if (!m_schemesServiceWorkersCanHandle.isEmpty()) 554 554 parameters.urlSchemesServiceWorkersCanHandle = copyToVector(m_schemesServiceWorkersCanHandle); 555 556 parameters.shouldDisableServiceWorkerProcessTerminationDelay = m_shouldDisableServiceWorkerProcessTerminationDelay;557 555 #endif 558 556 … … 728 726 } 729 727 #endif 730 731 void WebProcessPool::disableServiceWorkerProcessTerminationDelay()732 {733 #if ENABLE(SERVICE_WORKER)734 if (m_shouldDisableServiceWorkerProcessTerminationDelay)735 return;736 737 m_shouldDisableServiceWorkerProcessTerminationDelay = true;738 if (m_networkProcess)739 m_networkProcess->send(Messages::NetworkProcess::DisableServiceWorkerProcessTerminationDelay(), 0);740 #endif741 }742 728 743 729 void WebProcessPool::windowServerConnectionStateChanged() -
trunk/Source/WebKit/UIProcess/WebProcessPool.h
r250424 r250426 317 317 void sendNetworkProcessDidResume(); 318 318 void terminateServiceWorkerProcesses(); 319 void disableServiceWorkerProcessTerminationDelay();320 319 321 320 void syncNetworkProcessCookies(); … … 618 617 bool m_waitingForWorkerContextProcessConnection { false }; 619 618 bool m_allowsAnySSLCertificateForServiceWorker { false }; 620 bool m_shouldDisableServiceWorkerProcessTerminationDelay { false };621 619 String m_serviceWorkerUserAgent; 622 620 Optional<WebPreferencesStore> m_serviceWorkerPreferences; -
trunk/Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm
r250377 r250426 177 177 if (!parameters.serviceWorkerRegistrationDirectory.isEmpty()) 178 178 SandboxExtension::createHandleForReadWriteDirectory(parameters.serviceWorkerRegistrationDirectory, parameters.serviceWorkerRegistrationDirectoryExtensionHandle); 179 parameters.serviceWorkerProcessTerminationDelayEnabled = m_configuration->serviceWorkerProcessTerminationDelayEnabled(); 179 180 #endif 180 181 -
trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp
r250377 r250426 54 54 auto copy = WebsiteDataStoreConfiguration::create(m_isPersistent); 55 55 56 copy->m_serviceWorkerProcessTerminationDelayEnabled = this->m_serviceWorkerProcessTerminationDelayEnabled; 56 57 copy->m_fastServerTrustEvaluationEnabled = this->m_fastServerTrustEvaluationEnabled; 57 58 copy->m_networkCacheSpeculativeValidationEnabled = this->m_networkCacheSpeculativeValidationEnabled; -
trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h
r250421 r250426 109 109 void setServiceWorkerRegistrationDirectory(String&& directory) { m_serviceWorkerRegistrationDirectory = WTFMove(directory); } 110 110 111 bool serviceWorkerProcessTerminationDelayEnabled() const { return m_serviceWorkerProcessTerminationDelayEnabled; } 112 void setServiceWorkerProcessTerminationDelayEnabled(bool enabled) { m_serviceWorkerProcessTerminationDelayEnabled = enabled; } 113 111 114 const String& sourceApplicationBundleIdentifier() const { return m_sourceApplicationBundleIdentifier; } 112 115 void setSourceApplicationBundleIdentifier(String&& identifier) { m_sourceApplicationBundleIdentifier = WTFMove(identifier); } … … 164 167 bool m_allowsCellularAccess { true }; 165 168 bool m_fastServerTrustEvaluationEnabled { false }; 169 bool m_serviceWorkerProcessTerminationDelayEnabled { true }; 166 170 #if PLATFORM(COCOA) 167 171 RetainPtr<CFDictionaryRef> m_proxyConfiguration; -
trunk/Tools/ChangeLog
r250422 r250426 1 2019-09-27 Alex Christensen <achristensen@webkit.org> 2 3 Move service worker process termination delay disabling from process pool to website data store 4 https://bugs.webkit.org/show_bug.cgi?id=202308 5 6 Reviewed by Chris Dumez. 7 8 * TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm: 9 1 10 2019-09-27 Alex Christensen <achristensen@webkit.org> 2 11 -
trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm
r249853 r250426 1701 1701 [WKWebsiteDataStore _allowWebsiteDataRecordsForAllOrigins]; 1702 1702 1703 // Normally, service workers get terminated several seconds after their clients are gone. 1704 // Disable this delay for the purpose of testing. 1705 _WKWebsiteDataStoreConfiguration *dataStoreConfiguration = [[[_WKWebsiteDataStoreConfiguration alloc] init] autorelease]; 1706 dataStoreConfiguration.serviceWorkerProcessTerminationDelayEnabled = NO; 1707 auto dataStore = adoptNS([[WKWebsiteDataStore alloc] _initWithConfiguration:dataStoreConfiguration]); 1708 1703 1709 // Start with a clean slate data store 1704 [ [WKWebsiteDataStore defaultDataStore]removeDataOfTypes:[WKWebsiteDataStore allWebsiteDataTypes] modifiedSince:[NSDate distantPast] completionHandler:^() {1710 [dataStore removeDataOfTypes:[WKWebsiteDataStore allWebsiteDataTypes] modifiedSince:[NSDate distantPast] completionHandler:^() { 1705 1711 done = true; 1706 1712 }]; … … 1709 1715 1710 1716 RetainPtr<WKWebViewConfiguration> configuration = adoptNS([[WKWebViewConfiguration alloc] init]); 1717 configuration.get().websiteDataStore = dataStore.get(); 1711 1718 1712 1719 RetainPtr<SWMessageHandler> messageHandler = adoptNS([[SWMessageHandler alloc] init]); … … 1728 1735 [processPool _registerURLSchemeServiceWorkersCanHandle:@"sw1"]; 1729 1736 [processPool _registerURLSchemeServiceWorkersCanHandle:@"sw2"]; 1730 1731 // Normally, service workers get terminated several seconds after their clients are gone.1732 // Disable this delay for the purpose of testing.1733 [processPool _disableServiceWorkerProcessTerminationDelay];1734 1737 1735 1738 RetainPtr<WKWebView> webView1 = adoptNS([[WKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:configuration.get()]);
Note:
See TracChangeset
for help on using the changeset viewer.