50 lines
1.8 KiB
JavaScript
50 lines
1.8 KiB
JavaScript
// 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();
|