Index: third_party/WebKit/LayoutTests/usb/usb.html |
diff --git a/third_party/WebKit/LayoutTests/usb/usb.html b/third_party/WebKit/LayoutTests/usb/usb.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..4a2ca697eca0d95114dfbdaea326d1210136fe56 |
--- /dev/null |
+++ b/third_party/WebKit/LayoutTests/usb/usb.html |
@@ -0,0 +1,64 @@ |
+<!DOCTYPE html> |
+<script src="../resources/testharness.js"></script> |
+<script src="../resources/testharnessreport.js"></script> |
+<script src="../resources/mojo-helpers.js"></script> |
+<script src="resources/fake-devices.js"></script> |
+<script src="resources/usb-helpers.js"></script> |
+<script> |
+'use strict'; |
+ |
+usb_test(usb => { |
+ usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); |
+ |
+ return navigator.usb.getDevices().then(devices => { |
+ assert_equals(devices.length, 1); |
+ usb.assertDeviceInfoEquals(devices[0], usb.fakeDevices[0]); |
+ }); |
+}, 'getDevices returns devices exposed by the DeviceManager service.'); |
+ |
+usb_test(usb => { |
+ return callWithKeyDown(() => navigator.usb.requestDevice({ filters: [] }) |
+ .then(device => { |
+ assert_unreachable('requestDevice should reject when no device selected'); |
+ }) |
+ .catch(error => { |
+ assert_equals(error.code, DOMException.NOT_FOUND_ERR); |
+ return Promise.resolve(); |
+ }) |
+ ); |
+}, 'requestDevice rejects when no device is chosen'); |
+ |
+usb_test(usb => { |
+ usb.mockPermissionBubble.setChosenDevice(usb.fakeDevices[0]); |
+ return callWithKeyDown(() => navigator.usb.requestDevice({ filters: [] }) |
+ .then(device => { |
+ usb.assertDeviceInfoEquals(device, usb.fakeDevices[0]); |
+ }) |
+ ); |
+}, 'requestDevice returns the device chosen by the user'); |
+ |
+usb_test(usb => { |
+ let promise = new Promise((resolve, reject) => { |
+ navigator.usb.addEventListener('connect', e => { |
+ usb.assertDeviceInfoEquals(e.device, usb.fakeDevices[0]); |
+ resolve(); |
+ }); |
+ }); |
+ |
+ usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); |
+ return promise; |
+}, 'onconnect event is trigged by adding a device'); |
+ |
+usb_test(usb => { |
+ let promise = new Promise((resolve, reject) => { |
+ navigator.usb.addEventListener('disconnect', e => { |
+ usb.assertDeviceInfoEquals(e.device, usb.fakeDevices[0]); |
+ resolve(); |
+ }); |
+ }); |
+ |
+ usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); |
+ usb.mockDeviceManager.removeMockDevice(usb.fakeDevices[0]); |
+ return promise; |
+}, 'ondisconnect event is triggered by removing a device'); |
+</script> |