[webkit-changes] [WebKit/WebKit] 5f2a2a: Remove subscriptions associated with uninstalled w...
bnham
noreply at github.com
Wed Aug 14 15:07:34 PDT 2024
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 5f2a2afa9207ac4f567654e640d5edae3059c984
https://github.com/WebKit/WebKit/commit/5f2a2afa9207ac4f567654e640d5edae3059c984
Author: Ben Nham <nham at apple.com>
Date: 2024-08-14 (Wed, 14 Aug 2024)
Changed paths:
M Source/WebCore/Modules/push-api/PushDatabase.cpp
M Source/WebCore/Modules/push-api/PushDatabase.h
M Source/WebKit/Platform/spi/ios/UIKitSPI.h
M Source/WebKit/Resources/SandboxProfiles/ios/com.apple.WebKit.webpushd.sb.in
M Source/WebKit/webpushd/PushService.h
M Source/WebKit/webpushd/PushService.mm
M Tools/TestWebKitAPI/Tests/WebCore/PushDatabase.cpp
Log Message:
-----------
Remove subscriptions associated with uninstalled web clips at webpushd startup time
https://bugs.webkit.org/show_bug.cgi?id=277993
rdar://133725266
Reviewed by Brady Eidson.
On iOS, every web push subscription must be associated with a web clip. Enforce this with a check at
startup time by making sure that each subscription is associated with a web clip identifier, and
remove any subscriptions that are no longer associated with a web clip identifier.
The main logic changed here is in PushService::create. This now calls updateSubscriptionSetState,
which is what intersects the list of web clips with the list of push subscriptions, cleaning up as
necessary.
I also changed both PushService and PushServiceRequest so that we can make weak pointers out of them
and had various lambdas that capture those objects use weak pointers as necessary. This isn't
actually necessary because PushService is constructed and never destructed by the WebPushDaemon
singleton. But I think it makes it easier to review PushService code in isolation.
* Source/WebCore/Modules/push-api/PushDatabase.cpp:
(WebCore::PushSubscriptionSetRecord::isolatedCopy const):
(WebCore::PushSubscriptionSetRecord::isolatedCopy):
(WebCore::PushDatabase::getTopics):
(WebCore::PushDatabase::getPushSubscriptionSetRecords):
(WebCore::PushDatabase::setPushesEnabled):
(WebCore::PushDatabase::setPushesEnabledForOrigin):
* Source/WebCore/Modules/push-api/PushDatabase.h:
* Source/WebKit/Platform/spi/ios/UIKitSPI.h:
* Source/WebKit/webpushd/PushService.h:
* Source/WebKit/webpushd/PushService.mm:
(WebPushD::PushService::create):
(WebPushD::PushService::PushService):
(WebPushD::GetSubscriptionRequest::startInternal):
(WebPushD::SubscribeRequest::startImpl):
(WebPushD::SubscribeRequest::attemptToRecoverFromTopicAlreadyInFilterError):
(WebPushD::UnsubscribeRequest::startInternal):
(WebPushD::PushService::incrementSilentPushCount):
(WebPushD::PushService::setPushesEnabledForSubscriptionSetAndOrigin):
(WebPushD::PushService::removeRecordsImpl):
(WebPushD::PushService::updateSubscriptionSetState):
(WebPushD::PushService::updateTopicLists):
(WebPushD::PushService::didReceivePublicToken):
(WebPushD::PushService::didReceivePushMessage):
(WebPushD::updateTopicLists): Deleted.
* Tools/TestWebKitAPI/Tests/WebCore/PushDatabase.cpp:
(WebCore::operator==):
(TestWebKitAPI::getPushSubscriptionSetsSync):
(TestWebKitAPI::PushDatabaseTest::getPushSubscriptionSets):
(TestWebKitAPI::PushDatabaseTest::setPushesEnabled):
(TestWebKitAPI::TEST_F):
Canonical link: https://commits.webkit.org/282260@main
To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications
More information about the webkit-changes
mailing list