Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: a731a535977cd31c73b433d99f4a1b24a8449c3f
https://github.com/WebKit/WebKit/commit/a731a535977cd31c73b433d99f4a1b24a8449c3f
Author: Youenn Fablet <[email protected]>
Date: 2024-11-08 (Fri, 08 Nov 2024)
Changed paths:
M Source/WebCore/workers/service/server/SWServer.cpp
M Source/WebCore/workers/service/server/SWServer.h
M Source/WebCore/workers/service/server/SWServerWorker.cpp
M Source/WebCore/workers/service/server/SWServerWorker.h
M Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp
M Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h
M Source/WebKit/NetworkProcess/NetworkProcess.cpp
M Source/WebKit/NetworkProcess/NetworkProcess.h
M Source/WebKit/NetworkProcess/NetworkProcess.messages.in
M
Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp
M
Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerToContextConnection.h
M Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivateForTesting.h
M Source/WebKit/UIProcess/API/Cocoa/WKWebViewTesting.mm
M Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp
M Source/WebKit/UIProcess/Network/NetworkProcessProxy.h
M Source/WebKit/UIProcess/WebProcessPool.cpp
M Tools/TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm
Log Message:
-----------
Service workers should react to memory signals
https://bugs.webkit.org/show_bug.cgi?id=282171
rdar://problem/138768575
Reviewed by Ben Nham.
This patch allows notifying the network process that a web process containing
service workers is under memory pressure.
In this case, the SWServer will check whether there are idle service workers
and terminate them.
A service worker is considered idle if:
- The service worker's state is activated
- The service worker did not process any event for 10 seconds
- The service worker has no pending service worker events
This aligns with https://w3c.github.io/ServiceWorker/#service-worker-lifetime.
We make sure to keep an assertion on the WebProcess so that it does not get
suspended while we try to terminate service workers.
Covered by API test.
* Source/WebCore/workers/service/server/SWServer.cpp:
(WebCore::SWServer::runServiceWorkerIfNecessary):
(WebCore::SWServer::terminateIdleServiceWorkers):
* Source/WebCore/workers/service/server/SWServer.h:
* Source/WebCore/workers/service/server/SWServerWorker.cpp:
(WebCore::SWServerWorker::isIdle const):
(WebCore::SWServerWorker::setState):
* Source/WebCore/workers/service/server/SWServerWorker.h:
(WebCore::SWServerWorker::needsdRunning):
* Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::terminateIdleServiceWorkers):
* Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h:
* Source/WebKit/NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::terminateIdleServiceWorkers):
* Source/WebKit/NetworkProcess/NetworkProcess.h:
* Source/WebKit/NetworkProcess/NetworkProcess.messages.in:
* Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp:
(WebKit::WebSWServerToContextConnection::terminateIdleServiceWorkers):
* Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerToContextConnection.h:
* Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivateForTesting.h:
* Source/WebKit/UIProcess/API/Cocoa/WKWebViewTesting.mm:
(-[WKWebView _terminateIdleServiceWorkersForTesting]):
* Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::terminateIdleServiceWorkers):
* Source/WebKit/UIProcess/Network/NetworkProcessProxy.h:
* Source/WebKit/UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::memoryPressureStatusChangedForProcess):
* Tools/TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:
((ServiceWorker, ServiceWorkerIdleOnMemoryPressure)):
Canonical link: https://commits.webkit.org/286327@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes