<!DOCTYPE html>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="resources/fake-devices.js"></script>
<script src="resources/usb-helpers.js"></script>
<script>
'use strict';

async function connectInIframe() {
  let iframe = document.createElement('iframe');
  let opened = false;

  iframe.src = 'resources/open-in-iframe.html';
  document.body.appendChild(iframe);

  await navigator.usb.test.attachToContext(iframe);
  function nextIFrameMessage() {
    return new Promise(resolve => window.addEventListener(
        'message', e => resolve(e.data)));
  }
  iframe.contentWindow.postMessage('Ready', '*');

  assert_equals('Ready', (await nextIFrameMessage()));
  let fakeDevice = navigator.usb.test.addFakeDevice(fakeDeviceInit);
  let closedPromise = new Promise(resolve => fakeDevice.onclose = resolve)
      .then(() => assert_true(opened));

  assert_equals('Success', (await nextIFrameMessage()));
  opened = true;
  return { iframe, closedPromise };
}

usb_test(async () => {
  let { iframe, closedPromise } = await connectInIframe();
  document.body.removeChild(iframe);
  await closedPromise;
}, 'detaching iframe disconnects device.');

usb_test(async () => {
  let { iframe, closedPromise } = await connectInIframe();
  iframe.src = 'about:blank';
  await closedPromise;
}, 'navigating iframe disconnects device.');
</script>
