Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Warnings

// META: script=/resources/test-only-api.js
// META: script=/webusb/resources/fake-devices.js
// META: script=/webusb/resources/usb-helpers.js
'use strict';
let usbDevice, devicesFirstTime, fakeDevice, removedDevice;
usb_test(() => getFakeDevice()
.then(_ => usbDevice = _.device)
.then(() => navigator.usb.getDevices())
.then(devices => {
assert_equals(devices.length, 1);
assert_equals(usbDevice, devices[0]);
assertDeviceInfoEquals(devices[0], fakeDeviceInit);
}), 'getDevices returns devices that are connected');
usb_test(() => getFakeDevice()
.then(() => navigator.usb.getDevices())
.then(_ => devicesFirstTime = _)
.then(() => assert_equals(devicesFirstTime.length, 1))
.then(() => navigator.usb.getDevices())
.then(devicesSecondTime => assert_array_equals(devicesSecondTime,
devicesFirstTime)),
'getDevices returns the same objects for each USB device');
usb_test(() => getFakeDevice()
.then(_ => usbDevice = _.device)
.then(() => assertDeviceInfoEquals(usbDevice, fakeDeviceInit))
.then(() => usbDevice.open())
.then(() => usbDevice.close()),
'onconnect event is trigged by adding a device');
usb_test(() => getFakeDevice()
.then(_ => {
usbDevice = _.device;
fakeDevice = _.fakeDevice;
})
.then(() => waitForDisconnect(fakeDevice))
.then(_ => removedDevice = _)
.then(() => {
assertDeviceInfoEquals(removedDevice, fakeDeviceInit);
assert_equals(removedDevice, usbDevice);
})
.then(() => removedDevice.open())
.then(() =>
assert_unreachable('should not be able to open a disconnected device'),
error => assert_equals(error.code, DOMException.NOT_FOUND_ERR)),
'ondisconnect event is triggered by removing a device');
done();