| <!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> |