| <!DOCTYPE html> |
| <meta charset="utf-8"> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script src="/resources/testdriver.js"></script> |
| <script src="/resources/testdriver-vendor.js"></script> |
| <script src="resources/helpers.js"></script> |
| <iframe id="iframe" src="resources/shownotification-window-iframe.html"></iframe> |
| <script> |
| /** @type {ServiceWorkerRegistration} */ |
| let registration; |
| |
| promise_setup(async (t) => { |
| await trySettingPermission("granted"); |
| registration = await prepareActiveServiceWorker("noop-sw.js"); |
| await closeAllNotifications(); |
| }); |
| |
| promise_test(async (t) => { |
| t.add_cleanup(closeAllNotifications); |
| |
| if (iframe.contentDocument.readyState !== "complete") { |
| await new Promise(resolve => iframe.onload = resolve); |
| } |
| |
| await iframe.contentWindow.showNotification(); |
| let notifications = await registration.getNotifications(); |
| assert_equals(notifications.length, 1, "Should persist the notification"); |
| |
| iframe.contentWindow.location.reload(); |
| // Wait for some time for potential notification close requests to be sent |
| await new Promise(resolve => iframe.onload = resolve); |
| notifications = await registration.getNotifications(); |
| assert_equals(notifications.length, 1, "Should keep the notification"); |
| }, 'Refreshing window does not clear persistent notifications'); |
| </script> |
| </body> |