| OLD | NEW |
| 1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
| 2 <script src="../resources/testharness.js"></script> | 2 <script src="/resources/testharness.js"></script> |
| 3 <script src="../resources/testharnessreport.js"></script> | 3 <script src="/resources/testharnessreport.js"></script> |
| 4 <script src="resources/fake-devices.js"></script> | 4 <script src="resources/fake-devices.js"></script> |
| 5 <script src="resources/usb-helpers.js"></script> | 5 <script src="resources/usb-helpers.js"></script> |
| 6 <script src="resources/webusb-test.js"></script> | |
| 7 <script> | 6 <script> |
| 8 'use strict'; | 7 'use strict'; |
| 9 | 8 |
| 10 usb_test(() => { | 9 usb_test(() => { |
| 11 return getFakeDevice().then(({ device }) => { | 10 return getFakeDevice().then(({ device }) => { |
| 12 return navigator.usb.getDevices().then(devices => { | 11 return navigator.usb.getDevices().then(devices => { |
| 13 assert_equals(devices.length, 1); | 12 assert_equals(devices.length, 1); |
| 14 assert_equals(device, devices[0]); | 13 assert_equals(device, devices[0]); |
| 15 assertDeviceInfoEquals(devices[0], fakeDeviceInit); | 14 assertDeviceInfoEquals(devices[0], fakeDeviceInit); |
| 16 }); | 15 }); |
| (...skipping 15 matching lines...) Expand all Loading... |
| 32 return navigator.usb.requestDevice({ filters: [] }) | 31 return navigator.usb.requestDevice({ filters: [] }) |
| 33 .then(device => { | 32 .then(device => { |
| 34 assert_unreachable('requestDevice should reject without a user gesture'); | 33 assert_unreachable('requestDevice should reject without a user gesture'); |
| 35 }) | 34 }) |
| 36 .catch(error => { | 35 .catch(error => { |
| 37 assert_equals(error.code, DOMException.SECURITY_ERR); | 36 assert_equals(error.code, DOMException.SECURITY_ERR); |
| 38 }); | 37 }); |
| 39 }, 'requestDevice rejects when called without a user gesture'); | 38 }, 'requestDevice rejects when called without a user gesture'); |
| 40 | 39 |
| 41 usb_test(() => { | 40 usb_test(() => { |
| 42 return callWithKeyDown(() => navigator.usb.requestDevice({ filters: [] }) | 41 return callWithTrustedClick(() => navigator.usb.requestDevice({ filters: [] }) |
| 43 .then(device => { | 42 .then(device => { |
| 44 assert_unreachable('requestDevice should reject when no device selected'); | 43 assert_unreachable('requestDevice should reject when no device selected'); |
| 45 }) | 44 }) |
| 46 .catch(error => { | 45 .catch(error => { |
| 47 assert_equals(error.code, DOMException.NOT_FOUND_ERR); | 46 assert_equals(error.code, DOMException.NOT_FOUND_ERR); |
| 48 }) | 47 }) |
| 49 ); | 48 ); |
| 50 }, 'requestDevice rejects when no device is chosen'); | 49 }, 'requestDevice rejects when no device is chosen'); |
| 51 | 50 |
| 52 usb_test(() => { | 51 usb_test(() => { |
| 53 return getFakeDevice().then(({ device, fakeDevice }) => { | 52 return getFakeDevice().then(({ device, fakeDevice }) => { |
| 54 navigator.usb.test.chosenDevice = fakeDevice; | 53 navigator.usb.test.chosenDevice = fakeDevice; |
| 55 return callWithKeyDown(() => { | 54 return callWithTrustedClick(() => { |
| 56 return navigator.usb.requestDevice({ filters: [] }).then(chosenDevice => { | 55 return navigator.usb.requestDevice({ filters: [] }).then(chosenDevice => { |
| 57 assert_equals(chosenDevice, device); | 56 assert_equals(chosenDevice, device); |
| 58 }); | 57 }); |
| 59 }); | 58 }); |
| 60 }); | 59 }); |
| 61 }, 'requestDevice returns the device chosen by the user'); | 60 }, 'requestDevice returns the device chosen by the user'); |
| 62 | 61 |
| 63 usb_test(() => { | 62 usb_test(() => { |
| 64 return getFakeDevice().then(({ device, fakeDevice }) => { | 63 return getFakeDevice().then(({ device, fakeDevice }) => { |
| 65 navigator.usb.test.chosenDevice = fakeDevice; | 64 navigator.usb.test.chosenDevice = fakeDevice; |
| 66 return callWithKeyDown(() => { | 65 return callWithTrustedClick(() => { |
| 67 return navigator.usb.requestDevice({ filters: [] }).then(chosenDevice => { | 66 return navigator.usb.requestDevice({ filters: [] }).then(chosenDevice => { |
| 68 assert_equals(chosenDevice, device); | 67 assert_equals(chosenDevice, device); |
| 69 return navigator.usb.getDevices().then(devices => { | 68 return navigator.usb.getDevices().then(devices => { |
| 70 assert_equals(devices.length, 1); | 69 assert_equals(devices.length, 1); |
| 71 assert_equals(devices[0], chosenDevice); | 70 assert_equals(devices[0], chosenDevice); |
| 72 }); | 71 }); |
| 73 }); | 72 }); |
| 74 }); | 73 }); |
| 75 }); | 74 }); |
| 76 }, 'getDevices returns the same object as requestDevice'); | 75 }, 'getDevices returns the same object as requestDevice'); |
| 77 | 76 |
| 78 usb_test(() => { | 77 usb_test(() => { |
| 79 const expectedFilters = [ | 78 const expectedFilters = [ |
| 80 { vendorId: 1234, classCode: 0xFF, serialNumber: "123ABC" }, | 79 { vendorId: 1234, classCode: 0xFF, serialNumber: "123ABC" }, |
| 81 { vendorId: 5678, productId: 0xF00F } | 80 { vendorId: 5678, productId: 0xF00F } |
| 82 ]; | 81 ]; |
| 83 | 82 |
| 84 return callWithKeyDown(() => navigator.usb.requestDevice({ filters: expectedFi
lters }) | 83 return callWithTrustedClick(() => { |
| 85 .then(device => { | 84 return navigator.usb.requestDevice({ filters: expectedFilters }) |
| 86 assert_unreachable('requestDevice should reject because no device selected
'); | 85 .then(device => { |
| 87 }) | 86 assert_unreachable('requestDevice should reject because no device select
ed'); |
| 88 .catch(error => { | 87 }) |
| 89 assert_equals(error.code, DOMException.NOT_FOUND_ERR); | 88 .catch(error => { |
| 90 let actualFilters = navigator.usb.test.lastFilters; | 89 assert_equals(error.code, DOMException.NOT_FOUND_ERR); |
| 91 assert_equals(actualFilters.length, expectedFilters.length); | 90 let actualFilters = navigator.usb.test.lastFilters; |
| 92 for (var i = 0; i < actualFilters.length; ++i) | 91 assert_equals(actualFilters.length, expectedFilters.length); |
| 93 assert_object_equals(actualFilters[i], expectedFilters[i]); | 92 for (var i = 0; i < actualFilters.length; ++i) |
| 94 }) | 93 assert_object_equals(actualFilters[i], expectedFilters[i]); |
| 95 ); | 94 }); |
| 95 }); |
| 96 }, 'filters are sent correctly'); | 96 }, 'filters are sent correctly'); |
| 97 | 97 |
| 98 usb_test(() => { | 98 usb_test(() => { |
| 99 return getFakeDevice().then(({ device }) => { | 99 return getFakeDevice().then(({ device }) => { |
| 100 assertDeviceInfoEquals(device, fakeDeviceInit); | 100 assertDeviceInfoEquals(device, fakeDeviceInit); |
| 101 return device.open().then(() => device.close()); | 101 return device.open().then(() => device.close()); |
| 102 }); | 102 }); |
| 103 }, 'onconnect event is trigged by adding a device'); | 103 }, 'onconnect event is trigged by adding a device'); |
| 104 | 104 |
| 105 usb_test(usb => { | 105 usb_test(usb => { |
| 106 return getFakeDevice().then(({ device, fakeDevice }) => { | 106 return getFakeDevice().then(({ device, fakeDevice }) => { |
| 107 return waitForDisconnect(fakeDevice).then(removedDevice => { | 107 return waitForDisconnect(fakeDevice).then(removedDevice => { |
| 108 assertDeviceInfoEquals(removedDevice, fakeDeviceInit); | 108 assertDeviceInfoEquals(removedDevice, fakeDeviceInit); |
| 109 assert_equals(removedDevice, device); | 109 assert_equals(removedDevice, device); |
| 110 return removedDevice.open().then(() => { | 110 return removedDevice.open().then(() => { |
| 111 assert_unreachable('should not be able to open a disconnected device'); | 111 assert_unreachable('should not be able to open a disconnected device'); |
| 112 }, error => { | 112 }, error => { |
| 113 assert_equals(error.code, DOMException.NOT_FOUND_ERR); | 113 assert_equals(error.code, DOMException.NOT_FOUND_ERR); |
| 114 }); | 114 }); |
| 115 }); | 115 }); |
| 116 }); | 116 }); |
| 117 }, 'ondisconnect event is triggered by removing a device'); | 117 }, 'ondisconnect event is triggered by removing a device'); |
| 118 </script> | 118 </script> |
| OLD | NEW |