| <!DOCTYPE html> |
| <script src="../resources/testharness.js"></script> |
| <script src="../resources/testharnessreport.js"></script> |
| <script src="file:///gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script> |
| <script src="file:///gen/services/device/public/mojom/hid.mojom.js"></script> |
| <script src="file:///gen/third_party/blink/public/mojom/hid/hid.mojom.js"></script> |
| <script src="resources/hid-test-utils.js"></script> |
| <script> |
| |
| const kTestVendorId = 0x1234; |
| const kTestProductId = 0xabcd; |
| |
| promise_test(async () => { |
| let interceptor = |
| new MojoInterfaceInterceptor(blink.mojom.HidService.name, "context", true); |
| interceptor.oninterfacerequest = e => e.handle.close(); |
| interceptor.start(); |
| |
| let devices = await navigator.hid.getDevices(); |
| assert_equals(devices.length, 0); |
| |
| interceptor.stop(); |
| }, 'getDevices() returns empty list if Mojo service connection fails'); |
| |
| hid_test(async (t, fake) => { |
| fake.addDevice(fake.makeDevice(kTestVendorId, kTestProductId)); |
| fake.addDevice(fake.makeDevice(kTestVendorId, kTestProductId)); |
| |
| let devices = await navigator.hid.getDevices(); |
| assert_equals(devices.length, 2); |
| assert_true(devices[0] instanceof HIDDevice); |
| assert_true(devices[1] instanceof HIDDevice); |
| }, 'getDevices() returns the set of configured fake devices'); |
| |
| hid_test(async (t, fake) => { |
| fake.addDevice(fake.makeDevice(kTestVendorId, kTestProductId)); |
| |
| let devicesFirst = await navigator.hid.getDevices(); |
| assert_equals(devicesFirst.length, 1, 'first call returns one device'); |
| assert_true(devicesFirst[0] instanceof HIDDevice); |
| let devicesSecond = await navigator.hid.getDevices(); |
| assert_equals(devicesSecond.length, 1, 'second call returns one device'); |
| assert_true(devicesSecond[0] instanceof HIDDevice); |
| assert_true(devicesFirst[0] === devicesSecond[0]); |
| }, 'getDevices() returns the same device objects every time'); |
| |
| </script> |