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 }, 'getConfiguration 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'); | |
Ken Rockot(use gerrit already)
2016/03/02 01:54:19
This test description is identical to the one on l
Reilly Grant (use Gerrit)
2016/03/02 19:13:27
Oops, the first one should be "setConfiguration" a
| |
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 |