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

Reply via email to