Title: [250957] trunk/Source
- Revision
- 250957
- Author
- [email protected]
- Date
- 2019-10-09 23:59:13 -0700 (Wed, 09 Oct 2019)
Log Message
A service worker process should not be created when enqueuing a service worker job
https://bugs.webkit.org/show_bug.cgi?id=202578
<rdar://problem/55979690>
Reviewed by Chris Dumez.
Source/WebCore:
Ask for a service worker context connection when planning to install or run a service worker.
This allows to not spin unnecessarily service worker processes for jobs that do not end up installing a service worker.
Covered by existing tests.
* workers/service/server/SWServer.cpp:
(WebCore::SWServer::tryInstallContextData):
(WebCore::SWServer::runServiceWorkerIfNecessary):
Source/WebKit:
Remove the calls to create service worker context connection.
They are now done at SWServer level when trying to either run a service worker or install one.
* NetworkProcess/ServiceWorker/WebSWServerConnection.cpp:
(WebKit::WebSWServerConnection::startFetch):
(WebKit::WebSWServerConnection::postMessageToServiceWorker):
(WebKit::WebSWServerConnection::scheduleJobInServer):
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (250956 => 250957)
--- trunk/Source/WebCore/ChangeLog 2019-10-10 05:28:18 UTC (rev 250956)
+++ trunk/Source/WebCore/ChangeLog 2019-10-10 06:59:13 UTC (rev 250957)
@@ -1,3 +1,20 @@
+2019-10-09 youenn fablet <[email protected]>
+
+ A service worker process should not be created when enqueuing a service worker job
+ https://bugs.webkit.org/show_bug.cgi?id=202578
+ <rdar://problem/55979690>
+
+ Reviewed by Chris Dumez.
+
+ Ask for a service worker context connection when planning to install or run a service worker.
+ This allows to not spin unnecessarily service worker processes for jobs that do not end up installing a service worker.
+
+ Covered by existing tests.
+
+ * workers/service/server/SWServer.cpp:
+ (WebCore::SWServer::tryInstallContextData):
+ (WebCore::SWServer::runServiceWorkerIfNecessary):
+
2019-10-09 Wenson Hsieh <[email protected]>
Unreviewed, fix the internal iOS build
Modified: trunk/Source/WebCore/workers/service/server/SWServer.cpp (250956 => 250957)
--- trunk/Source/WebCore/workers/service/server/SWServer.cpp 2019-10-10 05:28:18 UTC (rev 250956)
+++ trunk/Source/WebCore/workers/service/server/SWServer.cpp 2019-10-10 06:59:13 UTC (rev 250957)
@@ -540,9 +540,11 @@
RegistrableDomain registrableDomain(data.scriptURL);
auto* connection = contextConnectionForRegistrableDomain(registrableDomain);
if (!connection) {
- m_pendingContextDatas.ensure(WTFMove(registrableDomain), [] {
+ m_pendingContextDatas.ensure(registrableDomain, [] {
return Vector<ServiceWorkerContextData> { };
}).iterator->value.append(WTFMove(data));
+
+ createContextConnection(registrableDomain);
return;
}
@@ -619,6 +621,8 @@
serviceWorkerRunRequestsForOrigin.ensure(identifier, [&] {
return Vector<RunServiceWorkerCallback> { };
}).iterator->value.append(WTFMove(callback));
+
+ createContextConnection(worker->registrableDomain());
return;
}
Modified: trunk/Source/WebKit/ChangeLog (250956 => 250957)
--- trunk/Source/WebKit/ChangeLog 2019-10-10 05:28:18 UTC (rev 250956)
+++ trunk/Source/WebKit/ChangeLog 2019-10-10 06:59:13 UTC (rev 250957)
@@ -1,3 +1,19 @@
+2019-10-09 youenn fablet <[email protected]>
+
+ A service worker process should not be created when enqueuing a service worker job
+ https://bugs.webkit.org/show_bug.cgi?id=202578
+ <rdar://problem/55979690>
+
+ Reviewed by Chris Dumez.
+
+ Remove the calls to create service worker context connection.
+ They are now done at SWServer level when trying to either run a service worker or install one.
+
+ * NetworkProcess/ServiceWorker/WebSWServerConnection.cpp:
+ (WebKit::WebSWServerConnection::startFetch):
+ (WebKit::WebSWServerConnection::postMessageToServiceWorker):
+ (WebKit::WebSWServerConnection::scheduleJobInServer):
+
2019-10-09 Wenson Hsieh <[email protected]>
[Clipboard API] Refactor Pasteboard item reading functions to work on both iOS and macOS
Modified: trunk/Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerConnection.cpp (250956 => 250957)
--- trunk/Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerConnection.cpp 2019-10-10 05:28:18 UTC (rev 250956)
+++ trunk/Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerConnection.cpp 2019-10-10 06:59:13 UTC (rev 250957)
@@ -179,9 +179,6 @@
return;
}
- if (!worker->contextConnection())
- server().createContextConnection(worker->registrableDomain());
-
server().runServiceWorkerIfNecessary(serviceWorkerIdentifier, [weakThis = WTFMove(weakThis), this, fetchIdentifier, serviceWorkerIdentifier, request = WTFMove(request), options = WTFMove(options), formData = WTFMove(formData), referrer = WTFMove(referrer), shouldSkipFetchEvent = worker->shouldSkipFetchEvent()](auto* contextConnection) {
if (!weakThis)
return;
@@ -230,9 +227,6 @@
if (!sourceData)
return;
- if (!destinationWorker->contextConnection())
- server().createContextConnection(destinationWorker->registrableDomain());
-
// 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 {
if (contextConnection)
@@ -242,10 +236,6 @@
void WebSWServerConnection::scheduleJobInServer(ServiceWorkerJobData&& jobData)
{
- RegistrableDomain registrableDomain(jobData.scopeURL);
- if (!server().contextConnectionForRegistrableDomain(registrableDomain))
- server().createContextConnection(registrableDomain);
-
SWSERVERCONNECTION_RELEASE_LOG_IF_ALLOWED("Scheduling ServiceWorker job %s in server", jobData.identifier().loggingString().utf8().data());
ASSERT(identifier() == jobData.connectionIdentifier());
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes