Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(223)

Side by Side Diff: third_party/WebKit/LayoutTests/usb/usbDevice.html

Issue 1754543003: Add WebUSB layout tests for device disconnection. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698