WebKit Bugzilla
Attachment 358525 Details for
Bug 193209
: Remove use of NetworkProcess::singleton in ServiceWorker code
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-193209-20190107135050.patch (text/plain), 6.92 KB, created by
Alex Christensen
on 2019-01-07 13:50:50 PST
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Alex Christensen
Created:
2019-01-07 13:50:50 PST
Size:
6.92 KB
patch
obsolete
>Index: Source/WebKit/ChangeLog >=================================================================== >--- Source/WebKit/ChangeLog (revision 239694) >+++ Source/WebKit/ChangeLog (working copy) >@@ -1,3 +1,22 @@ >+2019-01-07 Alex Christensen <achristensen@webkit.org> >+ >+ Remove use of NetworkProcess::singleton in ServiceWorker code >+ https://bugs.webkit.org/show_bug.cgi?id=193209 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ 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 Eric Carlson <eric.carlson@apple.com> > > Deactivate audio session whenever possible >Index: Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp >=================================================================== >--- Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp (revision 239680) >+++ Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp (working copy) >@@ -727,7 +727,7 @@ void NetworkConnectionToWebProcess::unre > 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()); >Index: Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerConnection.cpp >=================================================================== >--- Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerConnection.cpp (revision 239670) >+++ Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerConnection.cpp (working copy) >@@ -60,17 +60,18 @@ using namespace WebCore; > #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 @@ void WebSWServerConnection::startFetch(S > } > > 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 @@ void WebSWServerConnection::postMessageT > 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::postMessageT > 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()); >Index: Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerConnection.h >=================================================================== >--- Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerConnection.h (revision 239670) >+++ Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerConnection.h (working copy) >@@ -48,9 +48,11 @@ struct ServiceWorkerClientData; > > 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 @@ private: > > PAL::SessionID m_sessionID; > Ref<IPC::Connection> m_contentConnection; >+ Ref<NetworkProcess> m_networkProcess; > HashMap<WebCore::ServiceWorkerClientIdentifier, WebCore::ClientOrigin> m_clientOrigins; > }; >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Flags:
megan_gardner
:
review+
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 193209
: 358525