| <!DOCTYPE html> | |
| <html> | |
| <head> | |
| <meta charset="utf-8"> | |
| <title></title> | |
| <script src="/resources/testharness.js"></script> | |
| <script src="/resources/testharnessreport.js"></script> | |
| <script src="resources/manual.js"></script> | |
| </head> | |
| <body> | |
| <p> | |
| These tests require a USB device to be connected. | |
| </p> | |
| <script> | |
| manual_usb_test(async (t, device) => { | |
| await device.open(); | |
| const interfacesClaimed = []; | |
| t.add_cleanup(async () => { | |
| for (const iface of interfacesClaimed) { | |
| await device.releaseInterface(iface.interfaceNumber); | |
| } | |
| await device.close(); | |
| }); | |
| await device.selectConfiguration(1); | |
| const promises = []; | |
| for (const iface of device.configuration.interfaces) { | |
| const promise = device.claimInterface(iface.interfaceNumber); | |
| promises.push(promise); | |
| // Create a subtest for each interface so that success or failure to | |
| // claim the interface is visible but does not affect the result of | |
| // the overall test. | |
| promise_test(async (t) => { | |
| await promise; | |
| interfacesClaimed.push(iface); | |
| }, `Can claim interface ${iface.interfaceNumber}`); | |
| } | |
| await Promise.allSettled(promises); | |
| }, 'claimInterface() resolves or rejects for all interfaces'); | |
| </script> | |
| </body> | |
| </html> |