Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: f6769c8fdb6efaf99bea4ab6caad1c8b13ae3292
https://github.com/WebKit/WebKit/commit/f6769c8fdb6efaf99bea4ab6caad1c8b13ae3292
Author: Ben Nham <[email protected]>
Date: 2026-05-18 (Mon, 18 May 2026)
Changed paths:
M Source/WebCore/Modules/push-api/PushDatabase.cpp
M Source/WebCore/Modules/push-api/PushDatabase.h
M Source/WebKit/NetworkProcess/NetworkProcess.cpp
M Source/WebKit/NetworkProcess/NetworkProcess.h
M Source/WebKit/NetworkProcess/NetworkSession.cpp
M Source/WebKit/NetworkProcess/NetworkSession.h
M Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.h
M
Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.serialization.in
M Source/WebKit/NetworkProcess/Notifications/NetworkNotificationManager.cpp
M Source/WebKit/NetworkProcess/Notifications/NetworkNotificationManager.h
M Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp
M Source/WebKit/NetworkProcess/storage/NetworkStorageManager.h
M Source/WebKit/Shared/WebPushDaemonConstants.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm
M Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp
M Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp
M Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h
M Source/WebKit/webpushd/PushClientConnection.h
M Source/WebKit/webpushd/PushClientConnection.messages.in
M Source/WebKit/webpushd/PushClientConnection.mm
M Source/WebKit/webpushd/PushService.h
M Source/WebKit/webpushd/PushService.mm
M Source/WebKit/webpushd/WebPushDaemon.h
M Source/WebKit/webpushd/WebPushDaemon.mm
M Tools/TestWebKitAPI/Tests/WebKit/WKWebView/WKWebsiteDatastore.mm
M Tools/TestWebKitAPI/Tests/WebKit/WKWebView/WebPushDaemon.mm
Log Message:
-----------
Exempt origins with push subscriptions from time-based website data eviction
https://bugs.webkit.org/show_bug.cgi?id=314872
rdar://176399178
Reviewed by Sihui Liu.
There are a number of websites whose only use of persisted website data is a
simple service worker
that processes push events for the purposes of Web Push, and who do no other
mutations to website
data. These websites could have their service workers (and therefore push
subscriptions) cleared by
the time-based eviction path added in 312741@main, which is not desirable.
This exempts all origins with an active push subscription from time-based
website data
eviction. This is handled through a new GetAllPushSubscriptionOrigins IPC from
NetworkProcess to
webpushd.
Tests: Tools/TestWebKitAPI/Tests/WebKit/WKWebView/WKWebsiteDatastore.mm
Tools/TestWebKitAPI/Tests/WebKit/WKWebView/WebPushDaemon.mm
* Source/WebCore/Modules/push-api/PushDatabase.cpp:
(WebCore::PushDatabase::getAllPushSubscriptionOrigins):
* Source/WebCore/Modules/push-api/PushDatabase.h:
* Source/WebKit/NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::getAllPushSubscriptionOrigins):
* Source/WebKit/NetworkProcess/NetworkProcess.h:
* Source/WebKit/NetworkProcess/NetworkSession.cpp:
* Source/WebKit/NetworkProcess/NetworkSession.h:
(WebKit::NetworkSession::mockPushSubscriptionOriginsForTesting const):
* Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.h:
*
Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.serialization.in:
* Source/WebKit/NetworkProcess/Notifications/NetworkNotificationManager.cpp:
(WebKit::NetworkNotificationManager::getAllPushSubscriptionOrigins):
* Source/WebKit/NetworkProcess/Notifications/NetworkNotificationManager.h:
* Source/WebKit/NetworkProcess/storage/NetworkStorageManager.cpp:
(WebKit::NetworkStorageManager::prepareForTimeBasedEviction):
(WebKit::NetworkStorageManager::donePrepareForTimeBasedEviction):
* Source/WebKit/NetworkProcess/storage/NetworkStorageManager.h:
* Source/WebKit/Shared/WebPushDaemonConstants.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm:
(-[_WKWebsiteDataStoreConfiguration mockPushSubscriptionOriginsForTesting]):
(-[_WKWebsiteDataStoreConfiguration setMockPushSubscriptionOriginsForTesting:]):
* Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::parameters):
* Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp:
(WebKit::WebsiteDataStoreConfiguration::copy const):
* Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h:
(WebKit::WebsiteDataStoreConfiguration::mockPushSubscriptionOriginsForTesting
const):
(WebKit::WebsiteDataStoreConfiguration::setMockPushSubscriptionOriginsForTesting):
* Source/WebKit/webpushd/PushClientConnection.h:
* Source/WebKit/webpushd/PushClientConnection.messages.in:
* Source/WebKit/webpushd/PushClientConnection.mm:
(WebPushD::PushClientConnection::getAllPushSubscriptionOrigins):
* Source/WebKit/webpushd/PushService.h:
* Source/WebKit/webpushd/PushService.mm:
(WebPushD::PushService::getAllPushSubscriptionOrigins):
* Source/WebKit/webpushd/WebPushDaemon.h:
* Source/WebKit/webpushd/WebPushDaemon.mm:
(WebPushD::WebPushDaemon::getAllPushSubscriptionOrigins):
* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/WKWebsiteDatastore.mm:
(TestWebKitAPI::(TimeBasedEviction, PushSubscriptionOriginNotEvicted)):
* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/WebPushDaemon.mm:
(TestWebKitAPI::TestArgumentCoder<WebCore::SecurityOriginData>::encode):
(TestWebKitAPI::TestArgumentCoder<WebCore::SecurityOriginData>::decode):
(TestWebKitAPI::(WebPushDTest, SubscribeTest)):
Canonical link: https://commits.webkit.org/313457@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications