Modified: trunk/Source/WebCore/workers/service/ServiceWorkerContainer.cpp (238907 => 238908)
--- trunk/Source/WebCore/workers/service/ServiceWorkerContainer.cpp 2018-12-05 21:15:36 UTC (rev 238907)
+++ trunk/Source/WebCore/workers/service/ServiceWorkerContainer.cpp 2018-12-05 21:35:50 UTC (rev 238908)
@@ -269,10 +269,16 @@
m_pendingPromises.add(pendingPromiseIdentifier, WTFMove(pendingPromise));
auto contextIdentifier = this->contextIdentifier();
- callOnMainThread([connection = makeRef(ensureSWClientConnection()), this, topOrigin = context->topOrigin().data().isolatedCopy(), parsedURL = parsedURL.isolatedCopy(), contextIdentifier, pendingPromiseIdentifier]() mutable {
- connection->matchRegistration(WTFMove(topOrigin), parsedURL, [this, contextIdentifier, pendingPromiseIdentifier] (auto&& result) mutable {
- ScriptExecutionContext::postTaskTo(contextIdentifier, [this, pendingPromiseIdentifier, result = crossThreadCopy(result)](ScriptExecutionContext&) mutable {
- this->didFinishGetRegistrationRequest(pendingPromiseIdentifier, WTFMove(result));
+ callOnMainThread([connection = makeRef(ensureSWClientConnection()), topOrigin = context->topOrigin().data().isolatedCopy(), parsedURL = parsedURL.isolatedCopy(), contextIdentifier, pendingPromiseIdentifier]() mutable {
+ connection->matchRegistration(WTFMove(topOrigin), parsedURL, [contextIdentifier, pendingPromiseIdentifier] (auto&& result) mutable {
+ ScriptExecutionContext::postTaskTo(contextIdentifier, [pendingPromiseIdentifier, result = crossThreadCopy(result)](auto& context) mutable {
+ auto* serviceWorkerContainer = context.serviceWorkerContainer();
+ if (!serviceWorkerContainer)
+ return;
+ if (serviceWorkerContainer->m_isStopped || !context.sessionID().isValid())
+ return;
+
+ serviceWorkerContainer->didFinishGetRegistrationRequest(pendingPromiseIdentifier, WTFMove(result));
});
});
});
@@ -332,10 +338,16 @@
auto contextIdentifier = this->contextIdentifier();
auto contextURL = context->url();
- callOnMainThread([connection = makeRef(ensureSWClientConnection()), this, topOrigin = context->topOrigin().data().isolatedCopy(), contextURL = contextURL.isolatedCopy(), contextIdentifier, pendingPromiseIdentifier]() mutable {
- connection->getRegistrations(WTFMove(topOrigin), contextURL, [this, contextIdentifier, pendingPromiseIdentifier] (auto&& registrationDatas) mutable {
- ScriptExecutionContext::postTaskTo(contextIdentifier, [this, pendingPromiseIdentifier, registrationDatas = crossThreadCopy(registrationDatas)](ScriptExecutionContext&) mutable {
- this->didFinishGetRegistrationsRequest(pendingPromiseIdentifier, WTFMove(registrationDatas));
+ callOnMainThread([connection = makeRef(ensureSWClientConnection()), topOrigin = context->topOrigin().data().isolatedCopy(), contextURL = contextURL.isolatedCopy(), contextIdentifier, pendingPromiseIdentifier]() mutable {
+ connection->getRegistrations(WTFMove(topOrigin), contextURL, [contextIdentifier, pendingPromiseIdentifier] (auto&& registrationDatas) mutable {
+ ScriptExecutionContext::postTaskTo(contextIdentifier, [pendingPromiseIdentifier, registrationDatas = crossThreadCopy(registrationDatas)](auto& context) mutable {
+ auto* serviceWorkerContainer = context.serviceWorkerContainer();
+ if (!serviceWorkerContainer)
+ return;
+ if (serviceWorkerContainer->m_isStopped || !context.sessionID().isValid())
+ return;
+
+ serviceWorkerContainer->didFinishGetRegistrationsRequest(pendingPromiseIdentifier, WTFMove(registrationDatas));
});
});
});