Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: a427fa53db759bf8b1ff595b346a781de07ca84d
https://github.com/WebKit/WebKit/commit/a427fa53db759bf8b1ff595b346a781de07ca84d
Author: Ben Nham <[email protected]>
Date: 2024-10-23 (Wed, 23 Oct 2024)
Changed paths:
M Source/WebKit/NetworkProcess/Notifications/WebPushDaemonConnection.h
M Source/WebKit/Shared/WebPushDaemonConstants.h
M Source/WebKit/webpushd/PushClientConnection.h
M Source/WebKit/webpushd/PushClientConnection.messages.in
M Source/WebKit/webpushd/PushClientConnection.mm
M Source/WebKit/webpushd/WebPushDaemon.h
M Source/WebKit/webpushd/WebPushDaemon.mm
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WebPushDaemon.mm
Log Message:
-----------
Raise exception when a webpushd connection error occurs
https://bugs.webkit.org/show_bug.cgi?id=281886
rdar://138358189
Reviewed by Sihui Liu.
In the past there have been some bugs which cause a WebKit client to try to
talk to webpushd with
mismatching IPC protocol versions (e.g. bug 281155). This causes webpushd to
terminate the IPC
connection, which then causes a default-constructed response object to be
returned to the caller in
the client process.
For most webpushd IPCs, the default-constructed response makes sense. For
instance, if the client
tries to send the GetPushPermissionState IPC and this type of IPC protocol
mismatch occurs, then a
default-constructed PushPermissionState is returned, which is
PushPermissionState::Denied. However,
for SubscribeToPushService, this does not make sense, as a default-constructed
PushSubscription
object is returned which has an empty endpoint URL and keys dictionary.
Fix this by making GetPushPermissionState raise an AbortError via an
AsyncReplyError if there is an
IPC protocol mismatch. I put this AsyncReplyError in the
WebPushDaemonConnection header since it's a
common header imported by both _WKWebPushDaemonConnection and
NetworkNotificationManager.
* Source/WebKit/NetworkProcess/Notifications/WebPushDaemonConnection.h:
* Source/WebKit/Shared/WebPushDaemonConstants.h:
* Source/WebKit/webpushd/PushClientConnection.h:
* Source/WebKit/webpushd/PushClientConnection.messages.in:
* Source/WebKit/webpushd/PushClientConnection.mm:
(WebPushD::PushClientConnection::setProtocolVersionForTesting):
* Source/WebKit/webpushd/WebPushDaemon.h:
* Source/WebKit/webpushd/WebPushDaemon.mm:
(WebPushD::WebPushDaemon::connectionEventHandler):
(WebPushD::WebPushDaemon::setProtocolVersionForTesting):
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WebPushDaemon.mm:
(TestWebKitAPI::(WebPushDTest, SubscribeWithBadIPCVersionRaisesExceptionTest)):
(TestWebKitAPI::(WebPushD,
WKWebPushDaemonConnectionSubscribeWithBadIPCVersionRaisesException)):
Canonical link: https://commits.webkit.org/285610@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