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