Modified: trunk/Source/WebKit/ChangeLog (239700 => 239701)
--- trunk/Source/WebKit/ChangeLog 2019-01-07 22:30:05 UTC (rev 239700)
+++ trunk/Source/WebKit/ChangeLog 2019-01-07 22:31:41 UTC (rev 239701)
@@ -1,5 +1,24 @@
2019-01-07 Alex Christensen <[email protected]>
+ Remove use of NetworkProcess::singleton in ServiceWorker code
+ https://bugs.webkit.org/show_bug.cgi?id=193209
+
+ Reviewed by Megan Gardner.
+
+ Use a member Ref<NetworkProcess> instead to avoid global singleton use.
+
+ * NetworkProcess/NetworkConnectionToWebProcess.cpp:
+ (WebKit::NetworkConnectionToWebProcess::establishSWServerConnection):
+ * NetworkProcess/ServiceWorker/WebSWServerConnection.cpp:
+ (WebKit::WebSWServerConnection::WebSWServerConnection):
+ (WebKit::WebSWServerConnection::~WebSWServerConnection):
+ (WebKit::WebSWServerConnection::startFetch):
+ (WebKit::WebSWServerConnection::postMessageToServiceWorker):
+ (WebKit::WebSWServerConnection::scheduleJobInServer):
+ * NetworkProcess/ServiceWorker/WebSWServerConnection.h:
+
+2019-01-07 Alex Christensen <[email protected]>
+
Remove use of NetworkProcess::singleton in NetworkLoad/NetworkDataTask code
https://bugs.webkit.org/show_bug.cgi?id=193212
Modified: trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp (239700 => 239701)
--- trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp 2019-01-07 22:30:05 UTC (rev 239700)
+++ trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp 2019-01-07 22:31:41 UTC (rev 239701)
@@ -727,7 +727,7 @@
void NetworkConnectionToWebProcess::establishSWServerConnection(PAL::SessionID sessionID, SWServerConnectionIdentifier& serverConnectionIdentifier)
{
auto& server = m_networkProcess->swServerForSession(sessionID);
- auto connection = std::make_unique<WebSWServerConnection>(server, m_connection.get(), sessionID);
+ auto connection = std::make_unique<WebSWServerConnection>(m_networkProcess, server, m_connection.get(), sessionID);
serverConnectionIdentifier = connection->identifier();
LOG(ServiceWorker, "NetworkConnectionToWebProcess::establishSWServerConnection - %s", serverConnectionIdentifier.loggingString().utf8().data());
Modified: trunk/Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerConnection.cpp (239700 => 239701)
--- trunk/Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerConnection.cpp 2019-01-07 22:30:05 UTC (rev 239700)
+++ trunk/Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerConnection.cpp 2019-01-07 22:31:41 UTC (rev 239701)
@@ -60,17 +60,18 @@
#define SWSERVERCONNECTION_RELEASE_LOG_IF_ALLOWED(fmt, ...) RELEASE_LOG_IF(m_sessionID.isAlwaysOnLoggingAllowed(), ServiceWorker, "%p - WebSWServerConnection::" fmt, this, ##__VA_ARGS__)
#define SWSERVERCONNECTION_RELEASE_LOG_ERROR_IF_ALLOWED(fmt, ...) RELEASE_LOG_ERROR_IF(m_sessionID.isAlwaysOnLoggingAllowed(), ServiceWorker, "%p - WebSWServerConnection::" fmt, this, ##__VA_ARGS__)
-WebSWServerConnection::WebSWServerConnection(SWServer& server, IPC::Connection& connection, SessionID sessionID)
+WebSWServerConnection::WebSWServerConnection(NetworkProcess& networkProcess, SWServer& server, IPC::Connection& connection, SessionID sessionID)
: SWServer::Connection(server)
, m_sessionID(sessionID)
, m_contentConnection(connection)
+ , m_networkProcess(networkProcess)
{
- NetworkProcess::singleton().registerSWServerConnection(*this);
+ networkProcess.registerSWServerConnection(*this);
}
WebSWServerConnection::~WebSWServerConnection()
{
- NetworkProcess::singleton().unregisterSWServerConnection(*this);
+ m_networkProcess->unregisterSWServerConnection(*this);
for (const auto& keyValue : m_clientOrigins)
server().unregisterServiceWorkerClient(keyValue.value, keyValue.key);
}
@@ -165,7 +166,7 @@
}
if (!worker->contextConnection())
- NetworkProcess::singleton().createServerToContextConnection(worker->securityOrigin(), server().sessionID());
+ m_networkProcess->createServerToContextConnection(worker->securityOrigin(), server().sessionID());
server().runServiceWorkerIfNecessary(serviceWorkerIdentifier, [weakThis = WTFMove(weakThis), this, fetchIdentifier, serviceWorkerIdentifier, request = WTFMove(request), options = WTFMove(options), formData = WTFMove(formData), referrer = WTFMove(referrer)](auto* contextConnection) {
if (!weakThis)
@@ -208,7 +209,7 @@
return;
if (!destinationWorker->contextConnection())
- NetworkProcess::singleton().createServerToContextConnection(destinationWorker->securityOrigin(), server().sessionID());
+ m_networkProcess->createServerToContextConnection(destinationWorker->securityOrigin(), server().sessionID());
// It's possible this specific worker cannot be re-run (e.g. its registration has been removed)
server().runServiceWorkerIfNecessary(destinationIdentifier, [destinationIdentifier, message = WTFMove(message), sourceData = WTFMove(*sourceData)](auto* contextConnection) mutable {
@@ -220,8 +221,8 @@
void WebSWServerConnection::scheduleJobInServer(ServiceWorkerJobData&& jobData)
{
auto securityOrigin = SecurityOriginData::fromURL(jobData.scriptURL);
- if (!NetworkProcess::singleton().serverToContextConnectionForOrigin(securityOrigin))
- NetworkProcess::singleton().createServerToContextConnection(securityOrigin, server().sessionID());
+ if (!m_networkProcess->serverToContextConnectionForOrigin(securityOrigin))
+ m_networkProcess->createServerToContextConnection(securityOrigin, server().sessionID());
SWSERVERCONNECTION_RELEASE_LOG_IF_ALLOWED("Scheduling ServiceWorker job %s in server", jobData.identifier().loggingString().utf8().data());
ASSERT(identifier() == jobData.connectionIdentifier());
Modified: trunk/Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerConnection.h (239700 => 239701)
--- trunk/Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerConnection.h 2019-01-07 22:30:05 UTC (rev 239700)
+++ trunk/Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerConnection.h 2019-01-07 22:31:41 UTC (rev 239701)
@@ -48,9 +48,11 @@
namespace WebKit {
+class NetworkProcess;
+
class WebSWServerConnection : public WebCore::SWServer::Connection, public IPC::MessageSender, public IPC::MessageReceiver {
public:
- WebSWServerConnection(WebCore::SWServer&, IPC::Connection&, PAL::SessionID);
+ WebSWServerConnection(NetworkProcess&, WebCore::SWServer&, IPC::Connection&, PAL::SessionID);
WebSWServerConnection(const WebSWServerConnection&) = delete;
~WebSWServerConnection() final;
@@ -103,6 +105,7 @@
PAL::SessionID m_sessionID;
Ref<IPC::Connection> m_contentConnection;
+ Ref<NetworkProcess> m_networkProcess;
HashMap<WebCore::ServiceWorkerClientIdentifier, WebCore::ClientOrigin> m_clientOrigins;
};