Diff
Modified: releases/WebKitGTK/webkit-2.28/Source/WebCore/ChangeLog (255797 => 255798)
--- releases/WebKitGTK/webkit-2.28/Source/WebCore/ChangeLog 2020-02-05 10:50:13 UTC (rev 255797)
+++ releases/WebKitGTK/webkit-2.28/Source/WebCore/ChangeLog 2020-02-05 10:50:24 UTC (rev 255798)
@@ -1,5 +1,30 @@
2020-02-04 youenn fablet <[email protected]>
+ NetworkProcess should be notified by UIProcess when its service worker process connection should be on
+ https://bugs.webkit.org/show_bug.cgi?id=207122
+ <rdar://problem/59089780>
+
+ Reviewed by Chris Dumez.
+
+ Add a completion handler to the create context connection callback.
+ This is called when the context connection should have been created.
+ In case there is a context connection, completion handler does nothing.
+ Otherwise, SWServer will retry creating a context connection if needed.
+
+ The pending connection map entry is now removed in the completion handler instead of addContextConnection.
+ This ensures that only one connection request is sent by network process at a time.
+
+ Add extra logging to monitor creation of a context connection.
+
+ * workers/service/context/SWContextManager.h:
+ * workers/service/server/SWServer.cpp:
+ (WebCore::SWServer::addContextConnection):
+ (WebCore::SWServer::removeContextConnection):
+ (WebCore::SWServer::createContextConnectionFinished):
+ * workers/service/server/SWServer.h:
+
+2020-02-04 youenn fablet <[email protected]>
+
Check for callback being null in Notification.requestPermission
https://bugs.webkit.org/show_bug.cgi?id=207192
<rdar://problem/59130804>
Modified: releases/WebKitGTK/webkit-2.28/Source/WebCore/workers/service/context/SWContextManager.h (255797 => 255798)
--- releases/WebKitGTK/webkit-2.28/Source/WebCore/workers/service/context/SWContextManager.h 2020-02-05 10:50:13 UTC (rev 255797)
+++ releases/WebKitGTK/webkit-2.28/Source/WebCore/workers/service/context/SWContextManager.h 2020-02-05 10:50:24 UTC (rev 255798)
@@ -49,6 +49,7 @@
public:
virtual ~Connection() { }
+ virtual void establishConnection(CompletionHandler<void()>&&) = 0;
virtual void postMessageToServiceWorkerClient(const ServiceWorkerClientIdentifier& destinationIdentifier, const MessageWithMessagePorts&, ServiceWorkerIdentifier source, const String& sourceOrigin) = 0;
virtual void serviceWorkerStarted(Optional<ServiceWorkerJobDataIdentifier>, ServiceWorkerIdentifier, bool doesHandleFetch) = 0;
virtual void serviceWorkerFailedToStart(Optional<ServiceWorkerJobDataIdentifier>, ServiceWorkerIdentifier, const String& message) = 0;
Modified: releases/WebKitGTK/webkit-2.28/Source/WebCore/workers/service/server/SWServer.cpp (255797 => 255798)
--- releases/WebKitGTK/webkit-2.28/Source/WebCore/workers/service/server/SWServer.cpp 2020-02-05 10:50:13 UTC (rev 255797)
+++ releases/WebKitGTK/webkit-2.28/Source/WebCore/workers/service/server/SWServer.cpp 2020-02-05 10:50:24 UTC (rev 255798)
@@ -1020,9 +1020,10 @@
void SWServer::addContextConnection(SWServerToContextConnection& connection)
{
+ RELEASE_LOG(ServiceWorker, "SWServer::addContextConnection");
+
ASSERT(!m_contextConnections.contains(connection.registrableDomain()));
- m_pendingConnectionDomains.remove(connection.registrableDomain());
m_contextConnections.add(connection.registrableDomain(), &connection);
contextConnectionCreated(connection);
@@ -1030,6 +1031,8 @@
void SWServer::removeContextConnection(SWServerToContextConnection& connection)
{
+ RELEASE_LOG(ServiceWorker, "SWServer::removeContextConnection");
+
auto& registrableDomain = connection.registrableDomain();
ASSERT(m_contextConnections.get(registrableDomain) == &connection);
@@ -1046,8 +1049,24 @@
if (m_pendingConnectionDomains.contains(registrableDomain))
return;
+ RELEASE_LOG(ServiceWorker, "SWServer::createContextConnection will create a connection");
+
m_pendingConnectionDomains.add(registrableDomain);
- m_createContextConnectionCallback(registrableDomain);
+ m_createContextConnectionCallback(registrableDomain, [this, weakThis = makeWeakPtr(this), registrableDomain] {
+ if (!weakThis)
+ return;
+
+ RELEASE_LOG(ServiceWorker, "SWServer::createContextConnection should now have created a connection");
+
+ ASSERT(m_pendingConnectionDomains.contains(registrableDomain));
+ m_pendingConnectionDomains.remove(registrableDomain);
+
+ if (m_contextConnections.contains(registrableDomain))
+ return;
+
+ if (needsContextConnectionForRegistrableDomain(registrableDomain))
+ createContextConnection(registrableDomain);
+ });
}
bool SWServer::canHandleScheme(StringView scheme) const
Modified: releases/WebKitGTK/webkit-2.28/Source/WebCore/workers/service/server/SWServer.h (255797 => 255798)
--- releases/WebKitGTK/webkit-2.28/Source/WebCore/workers/service/server/SWServer.h 2020-02-05 10:50:13 UTC (rev 255797)
+++ releases/WebKitGTK/webkit-2.28/Source/WebCore/workers/service/server/SWServer.h 2020-02-05 10:50:24 UTC (rev 255798)
@@ -125,7 +125,7 @@
};
using SoftUpdateCallback = Function<void(ServiceWorkerJobData&& jobData, bool shouldRefreshCache, ResourceRequest&&, CompletionHandler<void(const ServiceWorkerFetchResult&)>&&)>;
- using CreateContextConnectionCallback = Function<void(const WebCore::RegistrableDomain&)>;
+ using CreateContextConnectionCallback = Function<void(const WebCore::RegistrableDomain&, CompletionHandler<void()>&&)>;
WEBCORE_EXPORT SWServer(UniqueRef<SWOriginStore>&&, bool processTerminationDelayEnabled, String&& registrationDatabaseDirectory, PAL::SessionID, SoftUpdateCallback&&, CreateContextConnectionCallback&&);
WEBCORE_EXPORT ~SWServer();
Modified: releases/WebKitGTK/webkit-2.28/Source/WebKit/ChangeLog (255797 => 255798)
--- releases/WebKitGTK/webkit-2.28/Source/WebKit/ChangeLog 2020-02-05 10:50:13 UTC (rev 255797)
+++ releases/WebKitGTK/webkit-2.28/Source/WebKit/ChangeLog 2020-02-05 10:50:24 UTC (rev 255798)
@@ -1,3 +1,48 @@
+2020-02-04 youenn fablet <[email protected]>
+
+ NetworkProcess should be notified by UIProcess when its service worker process connection should be on
+ https://bugs.webkit.org/show_bug.cgi?id=207122
+ <rdar://problem/59089780>
+
+ Reviewed by Chris Dumez.
+
+ Add completion handlers to the messaging from NetworkProcess -> UIProcess -> WebProcess -> NetworkProcess
+ used to create a service worker context connection.
+
+ This allows NetworkProcess to ask again for a connection if the connection is still needed but NetworkProcess did not find the context connection.
+
+ This is difficult to test since we would need for the process selected to host service workers to exit between the
+ time it is selected and the time it sends the message to Networking process.
+
+ To ensure that the context connection is created by WebProcess, WebProcessProxy takes a background assertion until WebProcess finishes
+ creating the context connection to Network process.
+
+ * NetworkProcess/NetworkConnectionToWebProcess.cpp:
+ (WebKit::NetworkConnectionToWebProcess::establishSWContextConnection):
+ * NetworkProcess/NetworkConnectionToWebProcess.h:
+ * NetworkProcess/NetworkConnectionToWebProcess.messages.in:
+ * NetworkProcess/NetworkProcess.cpp:
+ (WebKit::NetworkProcess::swServerForSession):
+ * NetworkProcess/NetworkProcess.h:
+ * UIProcess/Network/NetworkProcessProxy.cpp:
+ (WebKit::NetworkProcessProxy::establishWorkerContextConnectionToNetworkProcess):
+ * UIProcess/Network/NetworkProcessProxy.h:
+ * UIProcess/Network/NetworkProcessProxy.messages.in:
+ * UIProcess/WebProcessPool.cpp:
+ (WebKit::WebProcessPool::establishWorkerContextConnectionToNetworkProcess):
+ * UIProcess/WebProcessPool.h:
+ * UIProcess/WebProcessProxy.cpp:
+ (WebKit::WebProcessProxy::establishServiceWorkerContext):
+ * UIProcess/WebProcessProxy.h:
+ * WebProcess/Storage/WebSWContextManagerConnection.cpp:
+ (WebKit::m_userAgent):
+ (WebKit::WebSWContextManagerConnection::establishConnection):
+ * WebProcess/Storage/WebSWContextManagerConnection.h:
+ * WebProcess/WebProcess.cpp:
+ (WebKit::WebProcess::establishWorkerContextConnectionToNetworkProcess):
+ * WebProcess/WebProcess.h:
+ * WebProcess/WebProcess.messages.in:
+
2020-02-04 Chris Dumez <[email protected]>
Unreviewed, follow-up assertion fix after r255662.
Modified: releases/WebKitGTK/webkit-2.28/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp (255797 => 255798)
--- releases/WebKitGTK/webkit-2.28/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp 2020-02-05 10:50:13 UTC (rev 255797)
+++ releases/WebKitGTK/webkit-2.28/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp 2020-02-05 10:50:24 UTC (rev 255798)
@@ -917,10 +917,11 @@
server.addConnection(WTFMove(connection));
}
-void NetworkConnectionToWebProcess::establishSWContextConnection(RegistrableDomain&& registrableDomain)
+void NetworkConnectionToWebProcess::establishSWContextConnection(RegistrableDomain&& registrableDomain, CompletionHandler<void()>&& completionHandler)
{
if (auto* server = m_networkProcess->swServerForSessionIfExists(m_sessionID))
m_swContextConnection = makeUnique<WebSWServerToContextConnection>(*this, WTFMove(registrableDomain), *server);
+ completionHandler();
}
void NetworkConnectionToWebProcess::closeSWContextConnection()
Modified: releases/WebKitGTK/webkit-2.28/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h (255797 => 255798)
--- releases/WebKitGTK/webkit-2.28/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h 2020-02-05 10:50:13 UTC (rev 255797)
+++ releases/WebKitGTK/webkit-2.28/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h 2020-02-05 10:50:24 UTC (rev 255798)
@@ -225,7 +225,7 @@
#if ENABLE(SERVICE_WORKER)
void establishSWServerConnection();
- void establishSWContextConnection(WebCore::RegistrableDomain&&);
+ void establishSWContextConnection(WebCore::RegistrableDomain&&, CompletionHandler<void()>&&);
void closeSWContextConnection();
void unregisterSWConnection();
#endif
Modified: releases/WebKitGTK/webkit-2.28/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.messages.in (255797 => 255798)
--- releases/WebKitGTK/webkit-2.28/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.messages.in 2020-02-05 10:50:13 UTC (rev 255797)
+++ releases/WebKitGTK/webkit-2.28/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.messages.in 2020-02-05 10:50:24 UTC (rev 255798)
@@ -74,7 +74,7 @@
TakeNetworkLoadInformationMetrics(uint64_t resourceLoadIdentifier) -> (WebCore::NetworkLoadMetrics networkMetrics) Synchronous
#if ENABLE(SERVICE_WORKER)
- EstablishSWContextConnection(WebCore::RegistrableDomain domain)
+ EstablishSWContextConnection(WebCore::RegistrableDomain domain) -> () Async
CloseSWContextConnection()
#endif
Modified: releases/WebKitGTK/webkit-2.28/Source/WebKit/NetworkProcess/NetworkProcess.cpp (255797 => 255798)
--- releases/WebKitGTK/webkit-2.28/Source/WebKit/NetworkProcess/NetworkProcess.cpp 2020-02-05 10:50:13 UTC (rev 255797)
+++ releases/WebKitGTK/webkit-2.28/Source/WebKit/NetworkProcess/NetworkProcess.cpp 2020-02-05 10:50:24 UTC (rev 255798)
@@ -2401,9 +2401,9 @@
return makeUnique<SWServer>(makeUniqueRef<WebSWOriginStore>(), info.processTerminationDelayEnabled, WTFMove(path), sessionID, [this, sessionID](auto&& jobData, bool shouldRefreshCache, auto&& request, auto&& completionHandler) mutable {
ServiceWorkerSoftUpdateLoader::start(networkSession(sessionID), WTFMove(jobData), shouldRefreshCache, WTFMove(request), WTFMove(completionHandler));
- }, [this, sessionID](auto& registrableDomain) {
+ }, [this, sessionID](auto& registrableDomain, auto&& completionHandler) {
ASSERT(!registrableDomain.isEmpty());
- parentProcessConnection()->send(Messages::NetworkProcessProxy::EstablishWorkerContextConnectionToNetworkProcess { registrableDomain, sessionID }, 0);
+ parentProcessConnection()->sendWithAsyncReply(Messages::NetworkProcessProxy::EstablishWorkerContextConnectionToNetworkProcess { registrableDomain, sessionID }, WTFMove(completionHandler), 0);
});
});
return *result.iterator->value;
Modified: releases/WebKitGTK/webkit-2.28/Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp (255797 => 255798)
--- releases/WebKitGTK/webkit-2.28/Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp 2020-02-05 10:50:13 UTC (rev 255797)
+++ releases/WebKitGTK/webkit-2.28/Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp 2020-02-05 10:50:24 UTC (rev 255798)
@@ -1299,9 +1299,9 @@
#endif
#if ENABLE(SERVICE_WORKER)
-void NetworkProcessProxy::establishWorkerContextConnectionToNetworkProcess(RegistrableDomain&& registrableDomain, PAL::SessionID sessionID)
+void NetworkProcessProxy::establishWorkerContextConnectionToNetworkProcess(RegistrableDomain&& registrableDomain, PAL::SessionID sessionID, CompletionHandler<void()>&& completionHandler)
{
- m_processPool.establishWorkerContextConnectionToNetworkProcess(*this, WTFMove(registrableDomain), sessionID);
+ m_processPool.establishWorkerContextConnectionToNetworkProcess(*this, WTFMove(registrableDomain), sessionID, WTFMove(completionHandler));
}
void NetworkProcessProxy::workerContextConnectionNoLongerNeeded(WebCore::ProcessIdentifier identifier)
Modified: releases/WebKitGTK/webkit-2.28/Source/WebKit/UIProcess/Network/NetworkProcessProxy.h (255797 => 255798)
--- releases/WebKitGTK/webkit-2.28/Source/WebKit/UIProcess/Network/NetworkProcessProxy.h 2020-02-05 10:50:13 UTC (rev 255797)
+++ releases/WebKitGTK/webkit-2.28/Source/WebKit/UIProcess/Network/NetworkProcessProxy.h 2020-02-05 10:50:24 UTC (rev 255798)
@@ -262,7 +262,7 @@
#endif
#if ENABLE(SERVICE_WORKER)
- void establishWorkerContextConnectionToNetworkProcess(WebCore::RegistrableDomain&&, PAL::SessionID);
+ void establishWorkerContextConnectionToNetworkProcess(WebCore::RegistrableDomain&&, PAL::SessionID, CompletionHandler<void()>&&);
void workerContextConnectionNoLongerNeeded(WebCore::ProcessIdentifier);
void registerServiceWorkerClientProcess(WebCore::ProcessIdentifier webProcessIdentifier, WebCore::ProcessIdentifier serviceWorkerProcessIdentifier);
void unregisterServiceWorkerClientProcess(WebCore::ProcessIdentifier webProcessIdentifier, WebCore::ProcessIdentifier serviceWorkerProcessIdentifier);
Modified: releases/WebKitGTK/webkit-2.28/Source/WebKit/UIProcess/Network/NetworkProcessProxy.messages.in (255797 => 255798)
--- releases/WebKitGTK/webkit-2.28/Source/WebKit/UIProcess/Network/NetworkProcessProxy.messages.in 2020-02-05 10:50:13 UTC (rev 255797)
+++ releases/WebKitGTK/webkit-2.28/Source/WebKit/UIProcess/Network/NetworkProcessProxy.messages.in 2020-02-05 10:50:24 UTC (rev 255798)
@@ -62,7 +62,7 @@
#endif
#if ENABLE(SERVICE_WORKER)
- EstablishWorkerContextConnectionToNetworkProcess(WebCore::RegistrableDomain registrableDomain, PAL::SessionID sessionID)
+ EstablishWorkerContextConnectionToNetworkProcess(WebCore::RegistrableDomain registrableDomain, PAL::SessionID sessionID) -> () Async
WorkerContextConnectionNoLongerNeeded(WebCore::ProcessIdentifier identifier)
RegisterServiceWorkerClientProcess(WebCore::ProcessIdentifier webProcessIdentifier, WebCore::ProcessIdentifier serviceWorkerProcessIdentifier)
UnregisterServiceWorkerClientProcess(WebCore::ProcessIdentifier webProcessIdentifier, WebCore::ProcessIdentifier serviceWorkerProcessIdentifier)
Modified: releases/WebKitGTK/webkit-2.28/Source/WebKit/UIProcess/WebProcessPool.cpp (255797 => 255798)
--- releases/WebKitGTK/webkit-2.28/Source/WebKit/UIProcess/WebProcessPool.cpp 2020-02-05 10:50:13 UTC (rev 255797)
+++ releases/WebKitGTK/webkit-2.28/Source/WebKit/UIProcess/WebProcessPool.cpp 2020-02-05 10:50:24 UTC (rev 255798)
@@ -737,7 +737,7 @@
#endif
#if ENABLE(SERVICE_WORKER)
-void WebProcessPool::establishWorkerContextConnectionToNetworkProcess(NetworkProcessProxy& proxy, RegistrableDomain&& registrableDomain, PAL::SessionID sessionID)
+void WebProcessPool::establishWorkerContextConnectionToNetworkProcess(NetworkProcessProxy& proxy, RegistrableDomain&& registrableDomain, PAL::SessionID sessionID, CompletionHandler<void()>&& completionHandler)
{
ASSERT_UNUSED(proxy, &proxy == m_networkProcess.get());
@@ -752,6 +752,7 @@
RegistrableDomainWithSessionID registrableDomainWithSessionID { RegistrableDomain { registrableDomain }, sessionID };
if (m_serviceWorkerProcesses.contains(registrableDomainWithSessionID)) {
WEBPROCESSPOOL_RELEASE_LOG_IF_ALLOWED(ServiceWorker, "establishWorkerContextConnectionToNetworkProcess process already created");
+ completionHandler();
return;
}
@@ -789,7 +790,7 @@
ASSERT(!m_serviceWorkerProcesses.contains(registrableDomainWithSessionID));
m_serviceWorkerProcesses.add(WTFMove(registrableDomainWithSessionID), makeWeakPtr(serviceWorkerProcessProxy));
- serviceWorkerProcessProxy->establishServiceWorkerContext(m_serviceWorkerPreferences ? m_serviceWorkerPreferences.value() : m_defaultPageGroup->preferences().store());
+ serviceWorkerProcessProxy->establishServiceWorkerContext(m_serviceWorkerPreferences ? m_serviceWorkerPreferences.value() : m_defaultPageGroup->preferences().store(), WTFMove(completionHandler));
if (!m_serviceWorkerUserAgent.isNull())
serviceWorkerProcessProxy->setServiceWorkerUserAgent(m_serviceWorkerUserAgent);
}
Modified: releases/WebKitGTK/webkit-2.28/Source/WebKit/UIProcess/WebProcessPool.h (255797 => 255798)
--- releases/WebKitGTK/webkit-2.28/Source/WebKit/UIProcess/WebProcessPool.h 2020-02-05 10:50:13 UTC (rev 255797)
+++ releases/WebKitGTK/webkit-2.28/Source/WebKit/UIProcess/WebProcessPool.h 2020-02-05 10:50:24 UTC (rev 255798)
@@ -398,7 +398,7 @@
bool isServiceWorkerPageID(WebPageProxyIdentifier) const;
#if ENABLE(SERVICE_WORKER)
- void establishWorkerContextConnectionToNetworkProcess(NetworkProcessProxy&, WebCore::RegistrableDomain&&, PAL::SessionID);
+ void establishWorkerContextConnectionToNetworkProcess(NetworkProcessProxy&, WebCore::RegistrableDomain&&, PAL::SessionID, CompletionHandler<void()>&&);
void removeFromServiceWorkerProcesses(WebProcessProxy&);
size_t serviceWorkerProxiesCount() const { return m_serviceWorkerProcesses.size(); }
void setAllowsAnySSLCertificateForServiceWorker(bool allows) { m_allowsAnySSLCertificateForServiceWorker = allows; }
Modified: releases/WebKitGTK/webkit-2.28/Source/WebKit/UIProcess/WebProcessProxy.cpp (255797 => 255798)
--- releases/WebKitGTK/webkit-2.28/Source/WebKit/UIProcess/WebProcessProxy.cpp 2020-02-05 10:50:13 UTC (rev 255797)
+++ releases/WebKitGTK/webkit-2.28/Source/WebKit/UIProcess/WebProcessProxy.cpp 2020-02-05 10:50:24 UTC (rev 255798)
@@ -1605,9 +1605,12 @@
#endif
#if ENABLE(SERVICE_WORKER)
-void WebProcessProxy::establishServiceWorkerContext(const WebPreferencesStore& store)
+void WebProcessProxy::establishServiceWorkerContext(const WebPreferencesStore& store, CompletionHandler<void()>&& completionHandler)
{
- send(Messages::WebProcess::EstablishWorkerContextConnectionToNetworkProcess { processPool().defaultPageGroup().pageGroupID(), m_serviceWorkerInformation->serviceWorkerPageProxyID, m_serviceWorkerInformation->serviceWorkerPageID, store, *m_registrableDomain, m_serviceWorkerInformation->initializationData }, 0);
+ sendWithAsyncReply(Messages::WebProcess::EstablishWorkerContextConnectionToNetworkProcess { processPool().defaultPageGroup().pageGroupID(), m_serviceWorkerInformation->serviceWorkerPageProxyID, m_serviceWorkerInformation->serviceWorkerPageID, store, *m_registrableDomain, m_serviceWorkerInformation->initializationData }, [activity = m_throttler.backgroundActivity("Establish Service Worker"_s), completionHandler = WTFMove(completionHandler)]() mutable {
+ RELEASE_LOG(Loading, "WebProcessProxy::establishServiceWorkerContext finished");
+ completionHandler();
+ }, 0);
}
void WebProcessProxy::setServiceWorkerUserAgent(const String& userAgent)
Modified: releases/WebKitGTK/webkit-2.28/Source/WebKit/UIProcess/WebProcessProxy.h (255797 => 255798)
--- releases/WebKitGTK/webkit-2.28/Source/WebKit/UIProcess/WebProcessProxy.h 2020-02-05 10:50:13 UTC (rev 255797)
+++ releases/WebKitGTK/webkit-2.28/Source/WebKit/UIProcess/WebProcessProxy.h 2020-02-05 10:50:24 UTC (rev 255798)
@@ -339,7 +339,7 @@
void deref() final { ThreadSafeRefCounted::deref(); }
#if ENABLE(SERVICE_WORKER)
- void establishServiceWorkerContext(const WebPreferencesStore&);
+ void establishServiceWorkerContext(const WebPreferencesStore&, CompletionHandler<void()>&&);
void setServiceWorkerUserAgent(const String&);
void updateServiceWorkerPreferencesStore(const WebPreferencesStore&);
bool hasServiceWorkerPageProxy(WebPageProxyIdentifier pageProxyID) { return m_serviceWorkerInformation && m_serviceWorkerInformation->serviceWorkerPageProxyID == pageProxyID; }
Modified: releases/WebKitGTK/webkit-2.28/Source/WebKit/WebProcess/Storage/WebSWContextManagerConnection.cpp (255797 => 255798)
--- releases/WebKitGTK/webkit-2.28/Source/WebKit/WebProcess/Storage/WebSWContextManagerConnection.cpp 2020-02-05 10:50:13 UTC (rev 255797)
+++ releases/WebKitGTK/webkit-2.28/Source/WebKit/WebProcess/Storage/WebSWContextManagerConnection.cpp 2020-02-05 10:50:24 UTC (rev 255798)
@@ -106,12 +106,16 @@
}
updatePreferencesStore(store);
- m_connectionToNetworkProcess->send(Messages::NetworkConnectionToWebProcess::EstablishSWContextConnection { m_registrableDomain }, 0);
WebProcess::singleton().disableTermination();
}
WebSWContextManagerConnection::~WebSWContextManagerConnection() = default;
+void WebSWContextManagerConnection::establishConnection(CompletionHandler<void()>&& completionHandler)
+{
+ m_connectionToNetworkProcess->sendWithAsyncReply(Messages::NetworkConnectionToWebProcess::EstablishSWContextConnection { m_registrableDomain }, WTFMove(completionHandler), 0);
+}
+
void WebSWContextManagerConnection::updatePreferencesStore(const WebPreferencesStore& store)
{
RuntimeEnabledFeatures::sharedFeatures().setServiceWorkerEnabled(true);
Modified: releases/WebKitGTK/webkit-2.28/Source/WebKit/WebProcess/Storage/WebSWContextManagerConnection.h (255797 => 255798)
--- releases/WebKitGTK/webkit-2.28/Source/WebKit/WebProcess/Storage/WebSWContextManagerConnection.h 2020-02-05 10:50:13 UTC (rev 255797)
+++ releases/WebKitGTK/webkit-2.28/Source/WebKit/WebProcess/Storage/WebSWContextManagerConnection.h 2020-02-05 10:50:24 UTC (rev 255798)
@@ -68,6 +68,7 @@
void updatePreferencesStore(const WebPreferencesStore&);
// WebCore::SWContextManager::Connection.
+ void establishConnection(CompletionHandler<void()>&&) final;
void postMessageToServiceWorkerClient(const WebCore::ServiceWorkerClientIdentifier& destinationIdentifier, const WebCore::MessageWithMessagePorts&, WebCore::ServiceWorkerIdentifier sourceIdentifier, const String& sourceOrigin) final;
void didFinishInstall(Optional<WebCore::ServiceWorkerJobDataIdentifier>, WebCore::ServiceWorkerIdentifier, bool wasSuccessful) final;
void didFinishActivation(WebCore::ServiceWorkerIdentifier) final;
Modified: releases/WebKitGTK/webkit-2.28/Source/WebKit/WebProcess/WebProcess.cpp (255797 => 255798)
--- releases/WebKitGTK/webkit-2.28/Source/WebKit/WebProcess/WebProcess.cpp 2020-02-05 10:50:13 UTC (rev 255797)
+++ releases/WebKitGTK/webkit-2.28/Source/WebKit/WebProcess/WebProcess.cpp 2020-02-05 10:50:24 UTC (rev 255798)
@@ -1850,7 +1850,7 @@
}
#if ENABLE(SERVICE_WORKER)
-void WebProcess::establishWorkerContextConnectionToNetworkProcess(uint64_t pageGroupID, WebPageProxyIdentifier webPageProxyID, PageIdentifier pageID, const WebPreferencesStore& store, RegistrableDomain&& registrableDomain, ServiceWorkerInitializationData&& initializationData)
+void WebProcess::establishWorkerContextConnectionToNetworkProcess(uint64_t pageGroupID, WebPageProxyIdentifier webPageProxyID, PageIdentifier pageID, const WebPreferencesStore& store, RegistrableDomain&& registrableDomain, ServiceWorkerInitializationData&& initializationData, CompletionHandler<void()>&& completionHandler)
{
// We are in the Service Worker context process and the call below establishes our connection to the Network Process
// by calling ensureNetworkProcessConnection. SWContextManager needs to use the same underlying IPC::Connection as the
@@ -1857,6 +1857,7 @@
// NetworkProcessConnection for synchronization purposes.
auto& ipcConnection = ensureNetworkProcessConnection().connection();
SWContextManager::singleton().setConnection(makeUnique<WebSWContextManagerConnection>(ipcConnection, WTFMove(registrableDomain), pageGroupID, webPageProxyID, pageID, store, WTFMove(initializationData)));
+ SWContextManager::singleton().connection()->establishConnection(WTFMove(completionHandler));
}
void WebProcess::registerServiceWorkerClients()
Modified: releases/WebKitGTK/webkit-2.28/Source/WebKit/WebProcess/WebProcess.h (255797 => 255798)
--- releases/WebKitGTK/webkit-2.28/Source/WebKit/WebProcess/WebProcess.h 2020-02-05 10:50:13 UTC (rev 255797)
+++ releases/WebKitGTK/webkit-2.28/Source/WebKit/WebProcess/WebProcess.h 2020-02-05 10:50:24 UTC (rev 255798)
@@ -400,7 +400,7 @@
#endif
#if ENABLE(SERVICE_WORKER)
- void establishWorkerContextConnectionToNetworkProcess(uint64_t pageGroupID, WebPageProxyIdentifier, WebCore::PageIdentifier, const WebPreferencesStore&, WebCore::RegistrableDomain&&, ServiceWorkerInitializationData&&);
+ void establishWorkerContextConnectionToNetworkProcess(uint64_t pageGroupID, WebPageProxyIdentifier, WebCore::PageIdentifier, const WebPreferencesStore&, WebCore::RegistrableDomain&&, ServiceWorkerInitializationData&&, CompletionHandler<void()>&&);
void registerServiceWorkerClients();
#endif
Modified: releases/WebKitGTK/webkit-2.28/Source/WebKit/WebProcess/WebProcess.messages.in (255797 => 255798)
--- releases/WebKitGTK/webkit-2.28/Source/WebKit/WebProcess/WebProcess.messages.in 2020-02-05 10:50:13 UTC (rev 255797)
+++ releases/WebKitGTK/webkit-2.28/Source/WebKit/WebProcess/WebProcess.messages.in 2020-02-05 10:50:24 UTC (rev 255798)
@@ -106,7 +106,7 @@
#endif
#if ENABLE(SERVICE_WORKER)
- EstablishWorkerContextConnectionToNetworkProcess(uint64_t pageGroupID, WebKit::WebPageProxyIdentifier webPageProxyID, WebCore::PageIdentifier pageID, struct WebKit::WebPreferencesStore store, WebCore::RegistrableDomain domain, struct WebKit::ServiceWorkerInitializationData initializationData)
+ EstablishWorkerContextConnectionToNetworkProcess(uint64_t pageGroupID, WebKit::WebPageProxyIdentifier webPageProxyID, WebCore::PageIdentifier pageID, struct WebKit::WebPreferencesStore store, WebCore::RegistrableDomain domain, struct WebKit::ServiceWorkerInitializationData initializationData) -> () Async
RegisterServiceWorkerClients()
#endif