<!DOCTYPE html>
<meta charset=utf-8>
<title>Web NFC: prompt closes when page reloads</title>
<link rel="help" href="https://w3c.github.io/web-nfc/"/>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<p>
  This manual test checks that Web NFC prompt closes when page reloads.
</p>
<ol>
  <li>Make sure NFC is disabled at system level</li>
  <li>Click button to open Web NFC prompt</li>
  <li>Accept first Web NFC prompt if needed</li>
  <li>Wait 3 seconds when prompted about turning on the NFC adapter on the system level</li>
  <li>Page reloads, click button if Web NFC prompt closed</li>
</ol>
<script>

promise_test(async (t) => {
  if (window.location.search === "?didPromptClose") {
    const button = document.createElement("button");
    button.textContent = "Did Web NFC prompt close?";

    await new Promise((resolve) => {
      button.onclick = () => {
        document.body.removeChild(button);
        resolve();
      };
      document.body.appendChild(button);
    });
    return;
  }

  const button = document.createElement("button");
  button.textContent = "Click to open Web NFC prompt";

  await new Promise((resolve) => {
    button.onclick = () => {
      document.body.removeChild(button);
      resolve();
    };
    document.body.appendChild(button);
  });

  // Web NFC prompt shows up.
  const ndef = new NDEFReader();
  ndef.scan();

  // Wait 3 seconds to give time to user to accept first Web NFC prompt.
  await new Promise((resolve) => setTimeout(resolve, 3000));

  // Reload page and manually check that Web NFC prompt closes.
  window.location.search = "?didPromptClose";
}, "Web NFC prompt should close when page reloads.");

</script>
