| 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 | 
|---|