<!DOCTYPE html>
<meta charset=utf-8>
<title>NDEFReader.scan with an focused iframe</title>
<link rel="help" href="https://w3c.github.io/web-nfc/"/>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="resources/nfc-helpers.js"></script>
<body>
<script>

nfc_test(async (t, mockNFC) => {
  const ndef = new NDEFReader();
  const controller = new AbortController();
  const ndefWatcher = new EventWatcher(t, ndef, ["reading", "readingerror"]);

  const promise = ndefWatcher.wait_for("reading").then(event => {
    assert_true(event instanceof NDEFReadingEvent);
    controller.abort();
  });
  await ndef.scan({ signal: controller.signal });

  const iframe = document.createElement('iframe');
  iframe.src = 'resources/support-iframe.html';

  const iframeLoadWatcher = new EventWatcher(t, iframe, 'load');
  document.body.appendChild(iframe);
  await iframeLoadWatcher.wait_for('load');
  // Focus on iframe.
  iframe.contentWindow.document.getElementById('foo').focus();
  assert_true(iframe.contentDocument.hasFocus(), 'iframe gains the focus');
  // Suspend NFC operations is async in blink, use setTimeout as a workaround.
  // TODO(wanming.lin@intel.com): find a good way to eliminate this race
  // condition.
  await new Promise(resolve => t.step_timeout(resolve, 0));
  mockNFC.setReadingMessage(createMessage([createTextRecord(test_text_data)]));
  await promise;

  // Remove iframe from main document.
  iframe.parentNode.removeChild(iframe);
}, 'Test that NDEFReader.scan is not suspended if iframe gains focus.');

</script>
</body>
