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

async function connectInWorker() {
  let worker = new Worker('/webusb/resources/open-in-worker.js');
  let opened = false;

  await navigator.usb.test.attachToContext(worker);
  function nextWorkerMessage() {
    return new Promise(resolve => worker.addEventListener(
        'message', e => resolve(e.data)));
  }
  worker.postMessage({ type: 'Ready' });

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

  assert_equals('Success', (await nextWorkerMessage()).type);
  opened = true;
  return { worker, closedPromise };
}

usb_test(async () => {
  let { worker, closedPromise } = await connectInWorker();
  worker.terminate();
  await closedPromise;
}, 'terminating worker disconnects device.');
</script>
