Bug 248309
| Summary: | notification.close() not working | ||
|---|---|---|---|
| Product: | WebKit | Reporter: | Andy <andy> |
| Component: | Service Workers | Assignee: | youenn fablet <youennf> |
| Status: | RESOLVED FIXED | ||
| Severity: | Normal | CC: | beidson, cdumez, ik, webkit-bug-importer |
| Priority: | P2 | Keywords: | InRadar |
| Version: | Safari 16 | ||
| Hardware: | Unspecified | ||
| OS: | Unspecified | ||
Andy
Calling notification.close() (from both inside and outside a service worker) doesn't remove the notification(s)
Use case:
Removing notifications that no longer apply to user, for instance if they have visited a page the notification would take them to.
To replicate
- Have a notification in Notification Centre created by current site
- get all notifications, then call notification.close()
From a window:
navigator.serviceWorker.ready.then(function(registration) {
registration.getNotifications().then((notifications) => {
for (let notification of notifications) {
notification.close()
}
})
})
From within a service worker:
self.registration.getNotifications().then((notifications) => {
for (let notification of notifications) {
notification.close()
}
})
Expected results
The notification in notification is removed
Actual result
The notification remains
| Attachments | ||
|---|---|---|
| Add attachment proposed patch, testcase, etc. |
Radar WebKit Bug Importer
<rdar://problem/102683841>
youenn fablet
Pull request: https://github.com/WebKit/WebKit/pull/6856
EWS
Committed 257108@main (d02120f1bc06): <https://commits.webkit.org/257108@main>
Reviewed commits have been landed. Closing PR #6856 and removing active labels.
ik
I just stumbled upon this ticket because I was about to file a new bug for notification.close() not working.
This ticket is marked ad RESOLVED FIXED in 2022, but it's still not working on the latest iOS version (17.5 or so?)
AFAICT, it has never worked. I've been testing it with every new iOS release since 16.4.
ik
A recent iOS release (18.0?) fixed the issue. The close() method now actually dismisses the notification.