Title: [239701] trunk/Source/WebKit
Revision
239701
Author
[email protected]
Date
2019-01-07 14:31:41 -0800 (Mon, 07 Jan 2019)

Log Message

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:

Modified Paths

Diff

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;
 };
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to