<!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>
const kGetDescriptorRequest = 0x06;
const kDeviceDescriptorType = 0x01;
const kDeviceDescriptorLength = 18;
manual_usb_test(async (t, device) => {
await device.open();
t.add_cleanup(async () => {
await device.close();
});
// This test exercises the behavior that the device remains open when it
// is reset. If the device changes its properties too drastically when
// reset it may appear to disconnect instead.
await device.reset();
// Read the device descriptor in order to validate that communication
// with the device is still possible after a reset.
const result = await device.controlTransferIn({
requestType: 'standard',
recipient: 'device',
request: kGetDescriptorRequest,
value: kDeviceDescriptorType << 8,
index: 0,
}, kDeviceDescriptorLength);
assert_equals(result.status, 'ok', 'transfer status');
assert_equals(
result.data.byteLength, kDeviceDescriptorLength, 'transfer length');
}, 'reset() does not disconnect the device');
</script>
</body>
</html>