usbDevice-worker.https.html (1223B)
1 <!DOCTYPE html> 2 <script src="/resources/testharness.js"></script> 3 <script src="/resources/testharnessreport.js"></script> 4 <script src="/resources/test-only-api.js"></script> 5 <script src="/webusb/resources/fake-devices.js"></script> 6 <script src="/webusb/resources/usb-helpers.js"></script> 7 <script> 8 'use strict'; 9 10 async function connectInWorker() { 11 let worker = new Worker('/webusb/resources/open-in-worker.js'); 12 let opened = false; 13 14 await navigator.usb.test.attachToContext(worker); 15 function nextWorkerMessage() { 16 return new Promise(resolve => worker.addEventListener( 17 'message', e => resolve(e.data))); 18 } 19 worker.postMessage({ type: 'ConnectEvent' }); 20 21 assert_equals('Ready', (await nextWorkerMessage()).type); 22 let fakeDevice = navigator.usb.test.addFakeDevice(fakeDeviceInit); 23 let closedPromise = new Promise(resolve => fakeDevice.onclose = resolve) 24 .then(() => assert_true(opened)); 25 26 assert_equals('Success', (await nextWorkerMessage()).type); 27 opened = true; 28 return { worker, closedPromise }; 29 } 30 31 usb_test(async () => { 32 let { worker, closedPromise } = await connectInWorker(); 33 worker.terminate(); 34 await closedPromise; 35 }, 'terminating worker disconnects device.'); 36 </script>