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/mojo-helpers.js"></script> | 4 <script src="../resources/mojo-helpers.js"></script> |
5 <script src="resources/fake-devices.js"></script> | 5 <script src="resources/fake-devices.js"></script> |
6 <script src="resources/usb-helpers.js"></script> | 6 <script src="resources/usb-helpers.js"></script> |
7 <script> | 7 <script> |
8 'use strict'; | 8 'use strict'; |
9 | 9 |
| 10 function assertRejectsWithNotFoundError(promise) { |
| 11 return promise.then(() => { |
| 12 assert_unreached('promise should reject'); |
| 13 }, error => { |
| 14 assert_equals(error.code, DOMException.NOT_FOUND_ERR); |
| 15 }); |
| 16 } |
| 17 |
10 usb_test(usb => { | 18 usb_test(usb => { |
11 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); | 19 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); |
12 return navigator.usb.getDevices().then(devices => { | 20 return navigator.usb.getDevices().then(devices => { |
| 21 assert_equals(1, devices.length); |
| 22 usb.mockDeviceManager.removeMockDevice(usb.fakeDevices[0]); |
| 23 return assertRejectsWithNotFoundError(devices[0].open()); |
| 24 }); |
| 25 }, 'open rejects when called on a disconnected device'); |
| 26 |
| 27 usb_test(usb => { |
| 28 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); |
| 29 return navigator.usb.getDevices().then(devices => { |
13 assert_equals(1, devices.length); | 30 assert_equals(1, devices.length); |
14 let device = devices[0]; | 31 let device = devices[0]; |
15 return device.open().then(() => device.close()); | 32 return device.open().then(() => device.close()); |
16 }); | 33 }); |
17 }, 'a device can be opened and closed'); | 34 }, 'a device can be opened and closed'); |
18 | 35 |
19 usb_test(usb => { | 36 usb_test(usb => { |
20 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); | 37 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); |
21 return navigator.usb.getDevices().then(devices => { | 38 return navigator.usb.getDevices().then(devices => { |
22 assert_equals(1, devices.length); | 39 assert_equals(1, devices.length); |
23 let device = devices[0]; | 40 let device = devices[0]; |
| 41 return device.open().then(() => { |
| 42 usb.mockDeviceManager.removeMockDevice(usb.fakeDevices[0]); |
| 43 return assertRejectsWithNotFoundError(device.close()); |
| 44 }); |
| 45 }); |
| 46 }, 'close rejects when called on a disconnected device'); |
| 47 |
| 48 usb_test(usb => { |
| 49 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); |
| 50 return navigator.usb.getDevices().then(devices => { |
| 51 assert_equals(1, devices.length); |
| 52 var device = devices[0]; |
| 53 return device.open() |
| 54 .then(() => { |
| 55 usb.mockDeviceManager.removeMockDevice(usb.fakeDevices[0]); |
| 56 return assertRejectsWithNotFoundError(device.setConfiguration(1)); |
| 57 }); |
| 58 }); |
| 59 }, 'setConfiguration rejects when called on a disconnected device'); |
| 60 |
| 61 usb_test(usb => { |
| 62 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); |
| 63 return navigator.usb.getDevices().then(devices => { |
| 64 assert_equals(1, devices.length); |
| 65 let device = devices[0]; |
24 return device.open() | 66 return device.open() |
25 .then(() => device.setConfiguration(1)) | 67 .then(() => device.setConfiguration(1)) |
26 .then(() => device.getConfiguration()) | 68 .then(() => device.getConfiguration()) |
27 .then(config => { | 69 .then(config => { |
28 usb.assertConfigurationInfoEquals( | 70 usb.assertConfigurationInfoEquals( |
29 config, usb.fakeDevices[0].configurations[0]); | 71 config, usb.fakeDevices[0].configurations[0]); |
30 }) | 72 }) |
31 .then(() => device.close()); | 73 .then(() => device.close()); |
32 }); | 74 }); |
33 }, 'device configuration can be set and queried'); | 75 }, 'device configuration can be set and queried'); |
34 | 76 |
35 usb_test(usb => { | 77 usb_test(usb => { |
36 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); | 78 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); |
37 return navigator.usb.getDevices().then(devices => { | 79 return navigator.usb.getDevices().then(devices => { |
| 80 assert_equals(1, devices.length); |
| 81 var device = devices[0]; |
| 82 return device.open() |
| 83 .then(() => device.setConfiguration(1)) |
| 84 .then(() => device.getConfiguration()) |
| 85 .then(config => { |
| 86 usb.assertConfigurationInfoEquals( |
| 87 config, usb.fakeDevices[0].configurations[0]); |
| 88 usb.mockDeviceManager.removeMockDevice(usb.fakeDevices[0]); |
| 89 return assertRejectsWithNotFoundError(device.getConfiguration()); |
| 90 }); |
| 91 }); |
| 92 }, 'getConfiguration rejects when called on a disconnected device'); |
| 93 |
| 94 usb_test(usb => { |
| 95 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); |
| 96 return navigator.usb.getDevices().then(devices => { |
38 assert_equals(devices.length, 1); | 97 assert_equals(devices.length, 1); |
39 let device = devices[0]; | 98 let device = devices[0]; |
40 return device.open() | 99 return device.open() |
41 .then(() => device.getConfiguration() | 100 .then(() => device.getConfiguration() |
42 .then(() => { | 101 .then(() => { |
43 assert_unreached('getConfiguration should reject'); | 102 assert_unreached('getConfiguration should reject'); |
44 }) | 103 }) |
45 .catch(error => { | 104 .catch(error => { |
46 assert_equals(error.code, DOMException.NOT_FOUND_ERR); | 105 assert_equals(error.code, DOMException.NOT_FOUND_ERR); |
47 return Promise.resolve(); | 106 return Promise.resolve(); |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
79 return Promise.resolve(); | 138 return Promise.resolve(); |
80 })) | 139 })) |
81 .then(() => device.close()); | 140 .then(() => device.close()); |
82 }); | 141 }); |
83 }, 'claiming an interface fails without an active configuration'); | 142 }, 'claiming an interface fails without an active configuration'); |
84 | 143 |
85 usb_test(usb => { | 144 usb_test(usb => { |
86 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); | 145 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); |
87 return navigator.usb.getDevices().then(devices => { | 146 return navigator.usb.getDevices().then(devices => { |
88 assert_equals(1, devices.length); | 147 assert_equals(1, devices.length); |
| 148 var device = devices[0]; |
| 149 return device.open() |
| 150 .then(() => device.setConfiguration(1)) |
| 151 .then(() => { |
| 152 usb.mockDeviceManager.removeMockDevice(usb.fakeDevices[0]); |
| 153 return assertRejectsWithNotFoundError(device.claimInterface(0)); |
| 154 }); |
| 155 }); |
| 156 }, 'claimInterface rejects when called on a disconnected device'); |
| 157 |
| 158 usb_test(usb => { |
| 159 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); |
| 160 return navigator.usb.getDevices().then(devices => { |
| 161 assert_equals(1, devices.length); |
| 162 var device = devices[0]; |
| 163 return device.open() |
| 164 .then(() => device.setConfiguration(1)) |
| 165 .then(() => device.claimInterface(0)) |
| 166 .then(() => { |
| 167 usb.mockDeviceManager.removeMockDevice(usb.fakeDevices[0]); |
| 168 return assertRejectsWithNotFoundError(device.releaseInterface(0)); |
| 169 }); |
| 170 }); |
| 171 }, 'releaseInterface rejects when called on a disconnected device'); |
| 172 |
| 173 usb_test(usb => { |
| 174 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); |
| 175 return navigator.usb.getDevices().then(devices => { |
| 176 assert_equals(1, devices.length); |
89 let device = devices[0]; | 177 let device = devices[0]; |
90 return device.open() | 178 return device.open() |
91 .then(() => device.setConfiguration(2)) | 179 .then(() => device.setConfiguration(2)) |
92 .then(() => device.claimInterface(0)) | 180 .then(() => device.claimInterface(0)) |
93 .then(() => device.setInterface(0, 1)) | 181 .then(() => device.setInterface(0, 1)) |
94 .then(() => device.close()); | 182 .then(() => device.close()); |
95 }); | 183 }); |
96 }, 'can select an alternate interface'); | 184 }, 'can select an alternate interface'); |
97 | 185 |
98 usb_test(usb => { | 186 usb_test(usb => { |
99 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); | 187 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); |
100 return navigator.usb.getDevices().then(devices => { | 188 return navigator.usb.getDevices().then(devices => { |
101 assert_equals(1, devices.length); | 189 assert_equals(1, devices.length); |
| 190 var device = devices[0]; |
| 191 return device.open() |
| 192 .then(() => device.setConfiguration(2)) |
| 193 .then(() => device.claimInterface(0)) |
| 194 .then(() => { |
| 195 usb.mockDeviceManager.removeMockDevice(usb.fakeDevices[0]); |
| 196 return assertRejectsWithNotFoundError(device.setInterface(0, 1)); |
| 197 }); |
| 198 }); |
| 199 }, 'setInterface rejects when called on a disconnected device'); |
| 200 |
| 201 usb_test(usb => { |
| 202 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); |
| 203 return navigator.usb.getDevices().then(devices => { |
| 204 assert_equals(1, devices.length); |
102 let device = devices[0]; | 205 let device = devices[0]; |
103 return device.open() | 206 return device.open() |
104 .then(() => device.controlTransferIn({ | 207 .then(() => device.controlTransferIn({ |
105 requestType: 'vendor', | 208 requestType: 'vendor', |
106 recipient: 'device', | 209 recipient: 'device', |
107 request: 0x42, | 210 request: 0x42, |
108 value: 0x1234, | 211 value: 0x1234, |
109 index: 0x5678 | 212 index: 0x5678 |
110 }, 7)) | 213 }, 7)) |
111 .then(result => { | 214 .then(result => { |
112 assert_true(result instanceof USBInTransferResult); | 215 assert_true(result instanceof USBInTransferResult); |
113 assert_equals(result.status, 'ok'); | 216 assert_equals(result.status, 'ok'); |
114 assert_equals(result.data.byteLength, 7); | 217 assert_equals(result.data.byteLength, 7); |
115 assert_equals(result.data.getUint16(0), 0x07); | 218 assert_equals(result.data.getUint16(0), 0x07); |
116 assert_equals(result.data.getUint8(2), 0x42); | 219 assert_equals(result.data.getUint8(2), 0x42); |
117 assert_equals(result.data.getUint16(3), 0x1234); | 220 assert_equals(result.data.getUint16(3), 0x1234); |
118 assert_equals(result.data.getUint16(5), 0x5678); | 221 assert_equals(result.data.getUint16(5), 0x5678); |
119 return device.close(); | 222 return device.close(); |
120 }); | 223 }); |
121 }); | 224 }); |
122 }, 'can issue IN control transfer'); | 225 }, 'can issue IN control transfer'); |
123 | 226 |
124 usb_test(usb => { | 227 usb_test(usb => { |
125 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); | 228 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); |
126 return navigator.usb.getDevices().then(devices => { | 229 return navigator.usb.getDevices().then(devices => { |
127 assert_equals(1, devices.length); | 230 assert_equals(1, devices.length); |
128 let device = devices[0]; | 231 let device = devices[0]; |
129 return device.open() | 232 return device.open() |
| 233 .then(() => { |
| 234 usb.mockDeviceManager.removeMockDevice(usb.fakeDevices[0]); |
| 235 return assertRejectsWithNotFoundError(device.controlTransferIn({ |
| 236 requestType: 'vendor', |
| 237 recipient: 'device', |
| 238 request: 0x42, |
| 239 value: 0x1234, |
| 240 index: 0x5678 |
| 241 }, 7)); |
| 242 }); |
| 243 }); |
| 244 }, 'controlTransferIn rejects when called on a disconnected device'); |
| 245 |
| 246 usb_test(usb => { |
| 247 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); |
| 248 return navigator.usb.getDevices().then(devices => { |
| 249 assert_equals(1, devices.length); |
| 250 let device = devices[0]; |
| 251 return device.open() |
130 .then(() => device.controlTransferOut({ | 252 .then(() => device.controlTransferOut({ |
131 requestType: 'vendor', | 253 requestType: 'vendor', |
132 recipient: 'device', | 254 recipient: 'device', |
133 request: 0x42, | 255 request: 0x42, |
134 value: 0x1234, | 256 value: 0x1234, |
135 index: 0x5678 | 257 index: 0x5678 |
136 }, new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8]))) | 258 }, new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8]))) |
137 .then(result => { | 259 .then(result => { |
138 assert_true(result instanceof USBOutTransferResult); | 260 assert_true(result instanceof USBOutTransferResult); |
139 assert_equals(result.status, 'ok'); | 261 assert_equals(result.status, 'ok'); |
140 assert_equals(result.bytesWritten, 8); | 262 assert_equals(result.bytesWritten, 8); |
141 return device.close(); | 263 return device.close(); |
142 }) | 264 }) |
143 }); | 265 }); |
144 }, 'can issue OUT control transfer'); | 266 }, 'can issue OUT control transfer'); |
145 | 267 |
146 usb_test(usb => { | 268 usb_test(usb => { |
147 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); | 269 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); |
148 return navigator.usb.getDevices().then(devices => { | 270 return navigator.usb.getDevices().then(devices => { |
| 271 assert_equals(1, devices.length); |
| 272 let device = devices[0]; |
| 273 return device.open() |
| 274 .then(() => { |
| 275 usb.mockDeviceManager.removeMockDevice(usb.fakeDevices[0]); |
| 276 return assertRejectsWithNotFoundError(device.controlTransferOut({ |
| 277 requestType: 'vendor', |
| 278 recipient: 'device', |
| 279 request: 0x42, |
| 280 value: 0x1234, |
| 281 index: 0x5678 |
| 282 }, new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8]))); |
| 283 }); |
| 284 }); |
| 285 }, 'controlTransferOut rejects when called on a disconnected device'); |
| 286 |
| 287 usb_test(usb => { |
| 288 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); |
| 289 return navigator.usb.getDevices().then(devices => { |
149 assert_equals(devices.length, 1); | 290 assert_equals(devices.length, 1); |
150 let device = devices[0]; | 291 let device = devices[0]; |
151 return device.open() | 292 return device.open() |
152 .then(() => device.setConfiguration(1)) | 293 .then(() => device.setConfiguration(1)) |
153 .then(() => device.claimInterface(0)) | 294 .then(() => device.claimInterface(0)) |
154 .then(() => device.clearHalt(1)) | 295 .then(() => device.clearHalt(1)) |
155 .then(() => device.close()); | 296 .then(() => device.close()); |
156 }); | 297 }); |
157 }, 'can clear a halt condition'); | 298 }, 'can clear a halt condition'); |
158 | 299 |
159 usb_test(usb => { | 300 usb_test(usb => { |
160 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); | 301 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); |
161 return navigator.usb.getDevices().then(devices => { | 302 return navigator.usb.getDevices().then(devices => { |
162 assert_equals(devices.length, 1); | 303 assert_equals(devices.length, 1); |
163 let device = devices[0]; | 304 let device = devices[0]; |
164 return device.open() | 305 return device.open() |
165 .then(() => device.setConfiguration(1)) | 306 .then(() => device.setConfiguration(1)) |
166 .then(() => device.claimInterface(0)) | 307 .then(() => device.claimInterface(0)) |
| 308 .then(() => { |
| 309 usb.mockDeviceManager.removeMockDevice(usb.fakeDevices[0]); |
| 310 return assertRejectsWithNotFoundError(device.clearHalt(1)); |
| 311 }); |
| 312 }); |
| 313 }, 'clearHalt rejects when called on a disconnected device'); |
| 314 |
| 315 usb_test(usb => { |
| 316 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); |
| 317 return navigator.usb.getDevices().then(devices => { |
| 318 assert_equals(devices.length, 1); |
| 319 let device = devices[0]; |
| 320 return device.open() |
| 321 .then(() => device.setConfiguration(1)) |
| 322 .then(() => device.claimInterface(0)) |
167 .then(() => device.transferIn(1, 8)) | 323 .then(() => device.transferIn(1, 8)) |
168 .then(result => { | 324 .then(result => { |
169 assert_true(result instanceof USBInTransferResult); | 325 assert_true(result instanceof USBInTransferResult); |
170 assert_equals(result.status, 'ok'); | 326 assert_equals(result.status, 'ok'); |
171 assert_equals(result.data.byteLength, 8); | 327 assert_equals(result.data.byteLength, 8); |
172 for (let i = 0; i < 8; ++i) | 328 for (let i = 0; i < 8; ++i) |
173 assert_equals(result.data.getUint8(i), i, 'mismatch at byte ' + i); | 329 assert_equals(result.data.getUint8(i), i, 'mismatch at byte ' + i); |
174 return device.close(); | 330 return device.close(); |
175 }); | 331 }); |
176 }); | 332 }); |
(...skipping 22 matching lines...) Expand all Loading... |
199 | 355 |
200 usb_test(usb => { | 356 usb_test(usb => { |
201 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); | 357 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); |
202 return navigator.usb.getDevices().then(devices => { | 358 return navigator.usb.getDevices().then(devices => { |
203 assert_equals(devices.length, 1); | 359 assert_equals(devices.length, 1); |
204 let device = devices[0]; | 360 let device = devices[0]; |
205 return device.open() | 361 return device.open() |
206 .then(() => device.setConfiguration(1)) | 362 .then(() => device.setConfiguration(1)) |
207 .then(() => device.claimInterface(1)) | 363 .then(() => device.claimInterface(1)) |
208 .then(() => { | 364 .then(() => { |
| 365 usb.mockDeviceManager.removeMockDevice(usb.fakeDevices[0]); |
| 366 return assertRejectsWithNotFoundError(device.transferIn(2, 1024)); |
| 367 }); |
| 368 }); |
| 369 }, 'transferIn rejects if called on a disconnected device'); |
| 370 |
| 371 usb_test(usb => { |
| 372 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); |
| 373 return navigator.usb.getDevices().then(devices => { |
| 374 assert_equals(devices.length, 1); |
| 375 let device = devices[0]; |
| 376 return device.open() |
| 377 .then(() => device.setConfiguration(1)) |
| 378 .then(() => device.claimInterface(1)) |
| 379 .then(() => { |
209 let data = new DataView(new ArrayBuffer(1024)); | 380 let data = new DataView(new ArrayBuffer(1024)); |
210 for (let i = 0; i < 1024; ++i) | 381 for (let i = 0; i < 1024; ++i) |
211 data.setUint8(i, i & 0xff); | 382 data.setUint8(i, i & 0xff); |
212 return device.transferOut(2, data); | 383 return device.transferOut(2, data); |
213 }) | 384 }) |
214 .then(result => { | 385 .then(result => { |
215 assert_true(result instanceof USBOutTransferResult); | 386 assert_true(result instanceof USBOutTransferResult); |
216 assert_equals(result.status, 'ok'); | 387 assert_equals(result.status, 'ok'); |
217 assert_equals(result.bytesWritten, 1024); | 388 assert_equals(result.bytesWritten, 1024); |
218 return device.close(); | 389 return device.close(); |
219 }); | 390 }); |
220 }); | 391 }); |
221 }, 'can issue OUT bulk transfer'); | 392 }, 'can issue OUT bulk transfer'); |
222 | 393 |
223 usb_test(usb => { | 394 usb_test(usb => { |
224 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); | 395 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); |
225 return navigator.usb.getDevices().then(devices => { | 396 return navigator.usb.getDevices().then(devices => { |
226 assert_equals(devices.length, 1); | 397 assert_equals(devices.length, 1); |
227 let device = devices[0]; | 398 let device = devices[0]; |
228 return device.open() | 399 return device.open() |
| 400 .then(() => device.setConfiguration(1)) |
| 401 .then(() => device.claimInterface(1)) |
| 402 .then(() => { |
| 403 let data = new DataView(new ArrayBuffer(1024)); |
| 404 for (let i = 0; i < 1024; ++i) |
| 405 data.setUint8(i, i & 0xff); |
| 406 usb.mockDeviceManager.removeMockDevice(usb.fakeDevices[0]); |
| 407 return assertRejectsWithNotFoundError(device.transferOut(2, data)); |
| 408 }); |
| 409 }); |
| 410 }, 'transferOut rejects if called on a disconnected device'); |
| 411 |
| 412 usb_test(usb => { |
| 413 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); |
| 414 return navigator.usb.getDevices().then(devices => { |
| 415 assert_equals(devices.length, 1); |
| 416 let device = devices[0]; |
| 417 return device.open() |
229 .then(() => device.setConfiguration(2)) | 418 .then(() => device.setConfiguration(2)) |
230 .then(() => device.claimInterface(0)) | 419 .then(() => device.claimInterface(0)) |
231 .then(() => device.setInterface(0, 1)) | 420 .then(() => device.setInterface(0, 1)) |
232 .then(() => device.isochronousTransferIn( | 421 .then(() => device.isochronousTransferIn( |
233 1, [64, 64, 64, 64, 64, 64, 64, 64])) | 422 1, [64, 64, 64, 64, 64, 64, 64, 64])) |
234 .then(result => { | 423 .then(result => { |
235 assert_true(result instanceof USBIsochronousInTransferResult); | 424 assert_true(result instanceof USBIsochronousInTransferResult); |
236 assert_equals(result.data.byteLength, 64 * 8, 'buffer size'); | 425 assert_equals(result.data.byteLength, 64 * 8, 'buffer size'); |
237 assert_equals(result.packets.length, 8, 'number of packets'); | 426 assert_equals(result.packets.length, 8, 'number of packets'); |
238 let byteOffset = 0; | 427 let byteOffset = 0; |
(...skipping 17 matching lines...) Expand all Loading... |
256 usb_test(usb => { | 445 usb_test(usb => { |
257 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); | 446 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); |
258 return navigator.usb.getDevices().then(devices => { | 447 return navigator.usb.getDevices().then(devices => { |
259 assert_equals(devices.length, 1); | 448 assert_equals(devices.length, 1); |
260 let device = devices[0]; | 449 let device = devices[0]; |
261 return device.open() | 450 return device.open() |
262 .then(() => device.setConfiguration(2)) | 451 .then(() => device.setConfiguration(2)) |
263 .then(() => device.claimInterface(0)) | 452 .then(() => device.claimInterface(0)) |
264 .then(() => device.setInterface(0, 1)) | 453 .then(() => device.setInterface(0, 1)) |
265 .then(() => { | 454 .then(() => { |
| 455 usb.mockDeviceManager.removeMockDevice(usb.fakeDevices[0]); |
| 456 return assertRejectsWithNotFoundError(device.isochronousTransferIn( |
| 457 1, [64, 64, 64, 64, 64, 64, 64, 64])); |
| 458 }); |
| 459 }); |
| 460 }, 'isochronousTransferIn rejects when called on a disconnected device'); |
| 461 |
| 462 usb_test(usb => { |
| 463 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); |
| 464 return navigator.usb.getDevices().then(devices => { |
| 465 assert_equals(devices.length, 1); |
| 466 let device = devices[0]; |
| 467 return device.open() |
| 468 .then(() => device.setConfiguration(2)) |
| 469 .then(() => device.claimInterface(0)) |
| 470 .then(() => device.setInterface(0, 1)) |
| 471 .then(() => { |
266 let data = new DataView(new ArrayBuffer(64 * 8)); | 472 let data = new DataView(new ArrayBuffer(64 * 8)); |
267 for (let i = 0; i < 8; ++i) { | 473 for (let i = 0; i < 8; ++i) { |
268 for (let j = 0; j < 64; ++j) | 474 for (let j = 0; j < 64; ++j) |
269 data.setUint8(i * j, j & 0xff); | 475 data.setUint8(i * j, j & 0xff); |
270 } | 476 } |
271 return device.isochronousTransferOut( | 477 return device.isochronousTransferOut( |
272 1, data, [64, 64, 64, 64, 64, 64, 64, 64]); | 478 1, data, [64, 64, 64, 64, 64, 64, 64, 64]); |
273 }) | 479 }) |
274 .then(result => { | 480 .then(result => { |
275 assert_true(result instanceof USBIsochronousOutTransferResult); | 481 assert_true(result instanceof USBIsochronousOutTransferResult); |
276 assert_equals(result.packets.length, 8, 'number of packets'); | 482 assert_equals(result.packets.length, 8, 'number of packets'); |
277 let byteOffset = 0; | 483 let byteOffset = 0; |
278 for (let i = 0; i < result.packets.length; ++i) { | 484 for (let i = 0; i < result.packets.length; ++i) { |
279 assert_true( | 485 assert_true( |
280 result.packets[i] instanceof USBIsochronousOutTransferPacket); | 486 result.packets[i] instanceof USBIsochronousOutTransferPacket); |
281 assert_equals(result.packets[i].status, 'ok'); | 487 assert_equals(result.packets[i].status, 'ok'); |
282 assert_equals(result.packets[i].bytesWritten, 64); | 488 assert_equals(result.packets[i].bytesWritten, 64); |
283 } | 489 } |
284 return device.close(); | 490 return device.close(); |
285 }); | 491 }); |
286 }); | 492 }); |
287 }, 'can issue OUT isochronous transfer'); | 493 }, 'can issue OUT isochronous transfer'); |
288 | 494 |
289 usb_test(usb => { | 495 usb_test(usb => { |
290 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); | 496 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); |
291 return navigator.usb.getDevices().then(devices => { | 497 return navigator.usb.getDevices().then(devices => { |
| 498 assert_equals(devices.length, 1); |
| 499 let device = devices[0]; |
| 500 return device.open() |
| 501 .then(() => device.setConfiguration(2)) |
| 502 .then(() => device.claimInterface(0)) |
| 503 .then(() => device.setInterface(0, 1)) |
| 504 .then(() => { |
| 505 let data = new DataView(new ArrayBuffer(64 * 8)); |
| 506 for (let i = 0; i < 8; ++i) { |
| 507 for (let j = 0; j < 64; ++j) |
| 508 data.setUint8(i * j, j & 0xff); |
| 509 } |
| 510 usb.mockDeviceManager.removeMockDevice(usb.fakeDevices[0]); |
| 511 return assertRejectsWithNotFoundError(device.isochronousTransferOut( |
| 512 1, data, [64, 64, 64, 64, 64, 64, 64, 64])); |
| 513 }); |
| 514 }); |
| 515 }, 'isochronousTransferOut rejects when called on a disconnected device'); |
| 516 |
| 517 usb_test(usb => { |
| 518 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); |
| 519 return navigator.usb.getDevices().then(devices => { |
292 assert_equals(1, devices.length); | 520 assert_equals(1, devices.length); |
293 let device = devices[0]; | 521 let device = devices[0]; |
294 return device.open().then(() => device.reset()).then(() => device.close()); | 522 return device.open().then(() => device.reset()).then(() => device.close()); |
295 }); | 523 }); |
296 }, 'can reset the device'); | 524 }, 'can reset the device'); |
| 525 |
| 526 usb_test(usb => { |
| 527 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); |
| 528 return navigator.usb.getDevices().then(devices => { |
| 529 assert_equals(1, devices.length); |
| 530 let device = devices[0]; |
| 531 return device.open().then(() => { |
| 532 usb.mockDeviceManager.removeMockDevice(usb.fakeDevices[0]); |
| 533 return assertRejectsWithNotFoundError(device.reset()); |
| 534 }); |
| 535 }); |
| 536 }, 'resetDevice rejects when called on a disconnected device'); |
297 </script> | 537 </script> |
OLD | NEW |