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