usbDevice_claimInterface-manual.https.html (1427B)
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title></title> 6 <script src="/resources/testharness.js"></script> 7 <script src="/resources/testharnessreport.js"></script> 8 <script src="resources/manual.js"></script> 9 </head> 10 <body> 11 <p> 12 These tests require a USB device to be connected. 13 </p> 14 <script> 15 manual_usb_test(async (t, device) => { 16 await device.open(); 17 const interfacesClaimed = []; 18 t.add_cleanup(async () => { 19 for (const iface of interfacesClaimed) { 20 await device.releaseInterface(iface.interfaceNumber); 21 } 22 await device.close(); 23 }); 24 25 await device.selectConfiguration(1); 26 27 const promises = []; 28 for (const iface of device.configuration.interfaces) { 29 const promise = device.claimInterface(iface.interfaceNumber); 30 promises.push(promise); 31 32 // Create a subtest for each interface so that success or failure to 33 // claim the interface is visible but does not affect the result of 34 // the overall test. 35 promise_test(async (t) => { 36 await promise; 37 38 interfacesClaimed.push(iface); 39 }, `Can claim interface ${iface.interfaceNumber}`); 40 } 41 42 await Promise.allSettled(promises); 43 }, 'claimInterface() resolves or rejects for all interfaces'); 44 </script> 45 </body> 46 </html>