Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 8215882c058aae4e34f2975820fe63de77f5d8cb
https://github.com/WebKit/WebKit/commit/8215882c058aae4e34f2975820fe63de77f5d8cb
Author: Elijah Sawyers <[email protected]>
Date: 2026-10-01 (Thu, 01 Oct 2026)
Changed paths:
M Source/WebKit/Shared/Extensions/WebExtensionEventListenerType.h
M
Source/WebKit/Shared/Extensions/WebExtensionEventListenerType.serialization.in
M Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionContext.mm
M Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionContextPrivate.h
M
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPINotificationsCocoa.mm
M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm
M Source/WebKit/UIProcess/Extensions/WebExtensionContext.h
M Source/WebKit/UIProcess/Extensions/glib/WebExtensionContextGLib.cpp
M
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPINotificationsCocoa.mm
M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPINotifications.h
M
Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPINotifications.idl
M Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.h
M Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.messages.in
M
Tools/TestWebKitAPI/Tests/WebKit/WKWebView/WKWebExtensionAPINotifications.mm
Log Message:
-----------
Implement browser.notifications notification event routing
https://bugs.webkit.org/show_bug.cgi?id=325839
rdar://70014754
Reviewed by Timothy Hatcher.
This patch implements the browser.notifications.onClicked, onButtonClicked, and
onClosed events, and adds SPI for the browser to report the user's interaction
with a notification back to WebKit.
Notifications are presented by the browser through the delegate methods, so the
browser is also the only one that learns when the user activates, dismisses, or
presses a button on one. WKWebExtensionContext gains three SPI methods for the
browser to call when those events happen.
Events only fire for notifications WebKit is still tracking for the extension,
unknown identifiers and out-of-range button indices are ignored.
currentBackgroundContentListenerStateVersion is bumped for the new
NotificationsOnClosed listener type.
Tests are included.
Test:
Tools/TestWebKitAPI/Tests/WebKit/WKWebView/WKWebExtensionAPINotifications.mm
* Source/WebKit/Shared/Extensions/WebExtensionEventListenerType.h:
(WebKit::toAPIString):
*
Source/WebKit/Shared/Extensions/WebExtensionEventListenerType.serialization.in:
* Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionContext.mm:
(-[WKWebExtensionContext _didClickNotificationWithIdentifier:]):
(-[WKWebExtensionContext
_didClickButtonAtIndex:forNotificationWithIdentifier:]):
(-[WKWebExtensionContext _didCloseNotificationWithIdentifier:byUser:]):
* Source/WebKit/UIProcess/API/Cocoa/WKWebExtensionContextPrivate.h:
*
Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPINotificationsCocoa.mm:
(WebKit::WebExtensionContext::fireNotificationsClickedEventIfNeeded):
(WebKit::WebExtensionContext::fireNotificationsButtonClickedEventIfNeeded):
(WebKit::WebExtensionContext::fireNotificationsClosedEventIfNeeded):
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm:
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.h:
* Source/WebKit/UIProcess/Extensions/glib/WebExtensionContextGLib.cpp:
*
Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPINotificationsCocoa.mm:
(WebKit::WebExtensionAPINotifications::onClosed):
(WebKit::WebExtensionContextProxy::dispatchNotificationsClickedEvent):
(WebKit::WebExtensionContextProxy::dispatchNotificationsButtonClickedEvent):
(WebKit::WebExtensionContextProxy::dispatchNotificationsClosedEvent):
* Source/WebKit/WebProcess/Extensions/API/WebExtensionAPINotifications.h:
*
Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPINotifications.idl:
* Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.h:
* Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.messages.in:
* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/WKWebExtensionAPINotifications.mm:
(TestWebKitAPI::TEST_F(WKWebExtensionAPINotifications,
APIsAvailableWhenPermissionGranted)):
(TestWebKitAPI::TEST_F(WKWebExtensionAPINotifications, ClickedEvent)):
(TestWebKitAPI::TEST_F(WKWebExtensionAPINotifications, ButtonClickedEvent)):
(TestWebKitAPI::TEST_F(WKWebExtensionAPINotifications,
ClosedEventRemovesNotification)):
(TestWebKitAPI::TEST_F(WKWebExtensionAPINotifications,
EventsIgnoreUntrackedNotifications)):
(TestWebKitAPI::TEST_F(WKWebExtensionAPINotifications,
ClickedEventWakesBackgroundContent)):
Canonical link: https://commits.webkit.org/322444@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications