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

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

Issue 2775323003: Refactor WebUSB LayoutTests to separate out the Mojo service mocks (Closed)
Patch Set: Created 3 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>
5 <script src="resources/fake-devices.js"></script> 4 <script src="resources/fake-devices.js"></script>
6 <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> 7 <script>
8 'use strict'; 8 'use strict';
9 9
10 function assertRejectsWithNotFoundError(promise) { 10 function assertRejectsWithNotFoundError(promise) {
11 return assertRejectsWithError(promise, 'NotFoundError'); 11 return assertRejectsWithError(promise, 'NotFoundError');
12 } 12 }
13 13
14 function assertRejectsWithNotOpenError(promise) { 14 function assertRejectsWithNotOpenError(promise) {
15 return assertRejectsWithError( 15 return assertRejectsWithError(
16 promise, 'InvalidStateError', 'The device must be opened first.') 16 promise, 'InvalidStateError', 'The device must be opened first.')
17 } 17 }
18 18
19 function assertRejectsWithNotConfiguredError(promise) { 19 function assertRejectsWithNotConfiguredError(promise) {
20 return assertRejectsWithError( 20 return assertRejectsWithError(
21 promise, 'InvalidStateError', 21 promise, 'InvalidStateError',
22 'The device must have a configuration selected.'); 22 'The device must have a configuration selected.');
23 } 23 }
24 24
25 usb_test(usb => { 25 usb_test(() => {
26 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); 26 let guid = navigator.usb.test.addFakeDevice(fakeDeviceInit);
27
27 return navigator.usb.getDevices().then(devices => { 28 return navigator.usb.getDevices().then(devices => {
28 assert_equals(1, devices.length); 29 assert_equals(1, devices.length);
29 usb.mockDeviceManager.removeMockDevice(usb.fakeDevices[0]); 30 navigator.usb.test.removeFakeDevice(guid);
30 return assertRejectsWithNotFoundError(devices[0].open()); 31 return assertRejectsWithNotFoundError(devices[0].open());
31 }); 32 });
32 }, 'open rejects when called on a disconnected device'); 33 }, 'open rejects when called on a disconnected device');
33 34
34 usb_test(usb => { 35 usb_test(() => {
35 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); 36 let guid = navigator.usb.test.addFakeDevice(fakeDeviceInit);
37
36 return navigator.usb.getDevices().then(devices => { 38 return navigator.usb.getDevices().then(devices => {
37 assert_equals(1, devices.length); 39 assert_equals(1, devices.length);
38 let promise = devices[0].open(); 40 let promise = devices[0].open();
39 usb.mockDeviceManager.removeMockDevice(usb.fakeDevices[0]); 41 navigator.usb.test.removeFakeDevice(guid);
40 return assertRejectsWithNotFoundError(promise) 42 return assertRejectsWithNotFoundError(promise)
41 .then(() => runGarbageCollection()); 43 .then(() => runGarbageCollection());
42 }); 44 });
43 }, 'open rejects when device disconnected during call'); 45 }, 'open rejects when device disconnected during call');
44 46
45 usb_test(usb => { 47 usb_test(() => {
46 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); 48 navigator.usb.test.addFakeDevice(fakeDeviceInit);
49
47 return navigator.usb.getDevices().then(devices => { 50 return navigator.usb.getDevices().then(devices => {
48 assert_equals(1, devices.length); 51 assert_equals(1, devices.length);
49 let device = devices[0]; 52 let device = devices[0];
50 assert_false(device.opened); 53 assert_false(device.opened);
51 return device.open().then(() => { 54 return device.open().then(() => {
52 assert_true(device.opened); 55 assert_true(device.opened);
53 return device.close().then(() => { 56 return device.close().then(() => {
54 assert_false(device.opened); 57 assert_false(device.opened);
55 }); 58 });
56 }); 59 });
57 }).then(() => runGarbageCollection()); 60 }).then(() => runGarbageCollection());
58 }, 'a device can be opened and closed'); 61 }, 'a device can be opened and closed');
59 62
60 usb_test(usb => { 63 usb_test(() => {
61 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); 64 navigator.usb.test.addFakeDevice(fakeDeviceInit);
65
62 return navigator.usb.getDevices().then(devices => { 66 return navigator.usb.getDevices().then(devices => {
63 assert_equals(1, devices.length); 67 assert_equals(1, devices.length);
64 let device = devices[0]; 68 let device = devices[0];
65 return device.open() 69 return device.open()
66 .then(() => device.open()) 70 .then(() => device.open())
67 .then(() => device.open()) 71 .then(() => device.open())
68 .then(() => device.open()) 72 .then(() => device.open())
69 .then(() => device.close()) 73 .then(() => device.close())
70 .then(() => device.close()) 74 .then(() => device.close())
71 .then(() => device.close()) 75 .then(() => device.close())
72 .then(() => device.close()); 76 .then(() => device.close());
73 }); 77 });
74 }, 'open and close can be called multiple times'); 78 }, 'open and close can be called multiple times');
75 79
76 usb_test(usb => { 80 usb_test(() => {
77 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); 81 navigator.usb.test.addFakeDevice(fakeDeviceInit);
82
78 return navigator.usb.getDevices().then(devices => { 83 return navigator.usb.getDevices().then(devices => {
79 assert_equals(1, devices.length); 84 assert_equals(1, devices.length);
80 let device = devices[0]; 85 let device = devices[0];
81 const message = 86 const message =
82 'An operation that changes the device state is in progress.'; 87 'An operation that changes the device state is in progress.';
83 return Promise.all([ 88 return Promise.all([
84 device.open(), 89 device.open(),
85 assertRejectsWithError(device.open(), 'InvalidStateError', message), 90 assertRejectsWithError(device.open(), 'InvalidStateError', message),
86 assertRejectsWithError(device.close(), 'InvalidStateError', message), 91 assertRejectsWithError(device.close(), 'InvalidStateError', message),
87 ]).then(() => Promise.all([ 92 ]).then(() => Promise.all([
88 device.close(), 93 device.close(),
89 assertRejectsWithError(device.open(), 'InvalidStateError', message), 94 assertRejectsWithError(device.open(), 'InvalidStateError', message),
90 assertRejectsWithError(device.close(), 'InvalidStateError', message), 95 assertRejectsWithError(device.close(), 'InvalidStateError', message),
91 ])); 96 ]));
92 }); 97 });
93 }, 'open and close cannot be called again while open or close are in progress'); 98 }, 'open and close cannot be called again while open or close are in progress');
94 99
95 usb_test(usb => { 100 usb_test(() => {
96 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); 101 let guid = navigator.usb.test.addFakeDevice(fakeDeviceInit);
102
97 return navigator.usb.getDevices().then(devices => { 103 return navigator.usb.getDevices().then(devices => {
98 assert_equals(1, devices.length); 104 assert_equals(1, devices.length);
99 let device = devices[0]; 105 let device = devices[0];
100 return device.open().then(() => { 106 return device.open().then(() => {
101 usb.mockDeviceManager.removeMockDevice(usb.fakeDevices[0]); 107 navigator.usb.test.removeFakeDevice(guid);
102 return assertRejectsWithNotFoundError(device.close()); 108 return assertRejectsWithNotFoundError(device.close());
103 }); 109 });
104 }); 110 });
105 }, 'close rejects when called on a disconnected device'); 111 }, 'close rejects when called on a disconnected device');
106 112
107 usb_test(usb => { 113 usb_test(() => {
108 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); 114 let guid = navigator.usb.test.addFakeDevice(fakeDeviceInit);
115
109 return navigator.usb.getDevices().then(devices => { 116 return navigator.usb.getDevices().then(devices => {
110 assert_equals(1, devices.length); 117 assert_equals(1, devices.length);
111 var device = devices[0]; 118 let device = devices[0];
112 return device.open() 119 return device.open()
113 .then(() => { 120 .then(() => {
114 usb.mockDeviceManager.removeMockDevice(usb.fakeDevices[0]); 121 navigator.usb.test.removeFakeDevice(guid);
115 return assertRejectsWithNotFoundError(device.selectConfiguration(1)); 122 return assertRejectsWithNotFoundError(device.selectConfiguration(1));
116 }); 123 });
117 }); 124 });
118 }, 'selectConfiguration rejects when called on a disconnected device'); 125 }, 'selectConfiguration rejects when called on a disconnected device');
119 126
120 usb_test(usb => { 127 usb_test(() => {
121 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); 128 navigator.usb.test.addFakeDevice(fakeDeviceInit);
129
122 return navigator.usb.getDevices().then(devices => { 130 return navigator.usb.getDevices().then(devices => {
123 assert_equals(1, devices.length); 131 assert_equals(1, devices.length);
124 var device = devices[0]; 132 let device = devices[0];
125 return Promise.all([ 133 return Promise.all([
126 assertRejectsWithNotOpenError(device.selectConfiguration(1)), 134 assertRejectsWithNotOpenError(device.selectConfiguration(1)),
127 assertRejectsWithNotOpenError(device.claimInterface(0)), 135 assertRejectsWithNotOpenError(device.claimInterface(0)),
128 assertRejectsWithNotOpenError(device.releaseInterface(0)), 136 assertRejectsWithNotOpenError(device.releaseInterface(0)),
129 assertRejectsWithNotOpenError(device.selectAlternateInterface(0, 1)), 137 assertRejectsWithNotOpenError(device.selectAlternateInterface(0, 1)),
130 assertRejectsWithNotOpenError(device.controlTransferIn({ 138 assertRejectsWithNotOpenError(device.controlTransferIn({
131 requestType: 'vendor', 139 requestType: 'vendor',
132 recipient: 'device', 140 recipient: 'device',
133 request: 0x42, 141 request: 0x42,
134 value: 0x1234, 142 value: 0x1234,
(...skipping 11 matching lines...) Expand all
146 assertRejectsWithNotOpenError( 154 assertRejectsWithNotOpenError(
147 device.transferOut(1, new ArrayBuffer(8))), 155 device.transferOut(1, new ArrayBuffer(8))),
148 assertRejectsWithNotOpenError(device.isochronousTransferIn(1, [8])), 156 assertRejectsWithNotOpenError(device.isochronousTransferIn(1, [8])),
149 assertRejectsWithNotOpenError( 157 assertRejectsWithNotOpenError(
150 device.isochronousTransferOut(1, new ArrayBuffer(8), [8])), 158 device.isochronousTransferOut(1, new ArrayBuffer(8), [8])),
151 assertRejectsWithNotOpenError(device.reset()) 159 assertRejectsWithNotOpenError(device.reset())
152 ]); 160 ]);
153 }); 161 });
154 }, 'methods requiring it reject when the device is not open'); 162 }, 'methods requiring it reject when the device is not open');
155 163
156 usb_test(usb => { 164 usb_test(() => {
157 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); 165 navigator.usb.test.addFakeDevice(fakeDeviceInit);
166
158 return navigator.usb.getDevices().then(devices => { 167 return navigator.usb.getDevices().then(devices => {
159 assert_equals(1, devices.length); 168 assert_equals(1, devices.length);
160 let device = devices[0]; 169 let device = devices[0];
161 assert_equals(device.configuration, null); 170 assert_equals(device.configuration, null);
162 return device.open() 171 return device.open()
163 .then(() => { 172 .then(() => {
164 assert_equals(device.configuration, null); 173 assert_equals(device.configuration, null);
165 return device.selectConfiguration(1); 174 return device.selectConfiguration(1);
166 }) 175 })
167 .then(() => { 176 .then(() => {
168 usb.assertConfigurationInfoEquals( 177 assertDeviceInfoEquals(
169 device.configuration, usb.fakeDevices[0].configurations[0]); 178 device.configuration, fakeDeviceInit.configurations[0]);
170 }) 179 })
171 .then(() => device.close()); 180 .then(() => device.close());
172 }); 181 });
173 }, 'device configuration can be set and queried'); 182 }, 'device configuration can be set and queried');
174 183
175 usb_test(usb => { 184 usb_test(() => {
176 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); 185 navigator.usb.test.addFakeDevice(fakeDeviceInit);
186
177 return navigator.usb.getDevices().then(devices => { 187 return navigator.usb.getDevices().then(devices => {
178 assert_equals(1, devices.length); 188 assert_equals(1, devices.length);
179 let device = devices[0]; 189 let device = devices[0];
180 assert_equals(device.configuration, null); 190 assert_equals(device.configuration, null);
181 return device.open() 191 return device.open()
182 .then(() => assertRejectsWithError( 192 .then(() => assertRejectsWithError(
183 device.selectConfiguration(3), 'NotFoundError', 193 device.selectConfiguration(3), 'NotFoundError',
184 'The configuration value provided is not supported by the device.')) 194 'The configuration value provided is not supported by the device.'))
185 .then(() => device.close()); 195 .then(() => device.close());
186 }); 196 });
187 }, 'selectConfiguration rejects on invalid configurations'); 197 }, 'selectConfiguration rejects on invalid configurations');
188 198
199 usb_test(() => {
200 navigator.usb.test.addFakeDevice(fakeDeviceInit);
189 201
190 usb_test(usb => {
191 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]);
192 return navigator.usb.getDevices().then(devices => { 202 return navigator.usb.getDevices().then(devices => {
193 assert_equals(1, devices.length); 203 assert_equals(1, devices.length);
194 let device = devices[0]; 204 let device = devices[0];
195 assert_equals(device.configuration, null); 205 assert_equals(device.configuration, null);
196 return device.open().then(() => Promise.all([ 206 return device.open().then(() => Promise.all([
197 assertRejectsWithNotConfiguredError(device.claimInterface(0)), 207 assertRejectsWithNotConfiguredError(device.claimInterface(0)),
198 assertRejectsWithNotConfiguredError(device.releaseInterface(0)), 208 assertRejectsWithNotConfiguredError(device.releaseInterface(0)),
199 assertRejectsWithNotConfiguredError(device.selectAlternateInterface(0, 1 )), 209 assertRejectsWithNotConfiguredError(device.selectAlternateInterface(0, 1 )),
200 assertRejectsWithNotConfiguredError(device.controlTransferIn({ 210 assertRejectsWithNotConfiguredError(device.controlTransferIn({
201 requestType: 'vendor', 211 requestType: 'vendor',
(...skipping 14 matching lines...) Expand all
216 assertRejectsWithNotConfiguredError( 226 assertRejectsWithNotConfiguredError(
217 device.transferOut(1, new ArrayBuffer(8))), 227 device.transferOut(1, new ArrayBuffer(8))),
218 assertRejectsWithNotConfiguredError( 228 assertRejectsWithNotConfiguredError(
219 device.isochronousTransferIn(1, [8])), 229 device.isochronousTransferIn(1, [8])),
220 assertRejectsWithNotConfiguredError( 230 assertRejectsWithNotConfiguredError(
221 device.isochronousTransferOut(1, new ArrayBuffer(8), [8])), 231 device.isochronousTransferOut(1, new ArrayBuffer(8), [8])),
222 ])).then(() => device.close()); 232 ])).then(() => device.close());
223 }); 233 });
224 }, 'methods requiring it reject when the device is unconfigured'); 234 }, 'methods requiring it reject when the device is unconfigured');
225 235
226 usb_test(usb => { 236 usb_test(() => {
227 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); 237 navigator.usb.test.addFakeDevice(fakeDeviceInit);
238
228 return navigator.usb.getDevices().then(devices => { 239 return navigator.usb.getDevices().then(devices => {
229 assert_equals(1, devices.length); 240 assert_equals(1, devices.length);
230 let device = devices[0]; 241 let device = devices[0];
231 return device.open() 242 return device.open()
232 .then(() => device.selectConfiguration(1)) 243 .then(() => device.selectConfiguration(1))
233 .then(() => device.claimInterface(0)) 244 .then(() => device.claimInterface(0))
234 .then(() => { 245 .then(() => {
235 assert_true(device.configuration.interfaces[0].claimed); 246 assert_true(device.configuration.interfaces[0].claimed);
236 return device.releaseInterface(0); 247 return device.releaseInterface(0);
237 }) 248 })
238 .then(() => { 249 .then(() => {
239 assert_false(device.configuration.interfaces[0].claimed); 250 assert_false(device.configuration.interfaces[0].claimed);
240 return device.close(); 251 return device.close();
241 }); 252 });
242 }); 253 });
243 }, 'an interface can be claimed and released'); 254 }, 'an interface can be claimed and released');
244 255
245 usb_test(usb => { 256 usb_test(() => {
246 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); 257 navigator.usb.test.addFakeDevice(fakeDeviceInit);
258
247 return navigator.usb.getDevices().then(devices => { 259 return navigator.usb.getDevices().then(devices => {
248 assert_equals(1, devices.length); 260 assert_equals(1, devices.length);
249 let device = devices[0]; 261 let device = devices[0];
250 return device.open() 262 return device.open()
251 .then(() => device.selectConfiguration(1)) 263 .then(() => device.selectConfiguration(1))
252 .then(() => device.claimInterface(0)) 264 .then(() => device.claimInterface(0))
253 .then(() => { 265 .then(() => {
254 assert_true(device.configuration.interfaces[0].claimed); 266 assert_true(device.configuration.interfaces[0].claimed);
255 return device.close(0); 267 return device.close(0);
256 }) 268 })
257 .then(() => { 269 .then(() => {
258 assert_false(device.configuration.interfaces[0].claimed); 270 assert_false(device.configuration.interfaces[0].claimed);
259 }); 271 });
260 }); 272 });
261 }, 'interfaces are released on close'); 273 }, 'interfaces are released on close');
262 274
263 usb_test(usb => { 275 usb_test(() => {
264 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); 276 navigator.usb.test.addFakeDevice(fakeDeviceInit);
277
265 return navigator.usb.getDevices().then(devices => { 278 return navigator.usb.getDevices().then(devices => {
266 assert_equals(1, devices.length); 279 assert_equals(1, devices.length);
267 let device = devices[0]; 280 let device = devices[0];
268 const message = 'The interface number provided is not supported by the ' + 281 const message = 'The interface number provided is not supported by the ' +
269 'device in its current configuration.'; 282 'device in its current configuration.';
270 return device.open() 283 return device.open()
271 .then(() => device.selectConfiguration(1)) 284 .then(() => device.selectConfiguration(1))
272 .then(() => Promise.all([ 285 .then(() => Promise.all([
273 assertRejectsWithError( 286 assertRejectsWithError(
274 device.claimInterface(2), 'NotFoundError', message), 287 device.claimInterface(2), 'NotFoundError', message),
275 assertRejectsWithError( 288 assertRejectsWithError(
276 device.releaseInterface(2), 'NotFoundError', message), 289 device.releaseInterface(2), 'NotFoundError', message),
277 ])) 290 ]))
278 .then(() => device.close()); 291 .then(() => device.close());
279 }); 292 });
280 }, 'a non-existent interface cannot be claimed or released'); 293 }, 'a non-existent interface cannot be claimed or released');
281 294
282 usb_test(usb => { 295 usb_test(() => {
283 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); 296 let guid = navigator.usb.test.addFakeDevice(fakeDeviceInit);
297
284 return navigator.usb.getDevices().then(devices => { 298 return navigator.usb.getDevices().then(devices => {
285 assert_equals(1, devices.length); 299 assert_equals(1, devices.length);
286 var device = devices[0]; 300 var device = devices[0];
287 return device.open() 301 return device.open()
288 .then(() => device.selectConfiguration(1)) 302 .then(() => device.selectConfiguration(1))
289 .then(() => { 303 .then(() => {
290 usb.mockDeviceManager.removeMockDevice(usb.fakeDevices[0]); 304 navigator.usb.test.removeFakeDevice(guid);
291 return assertRejectsWithNotFoundError(device.claimInterface(0)); 305 return assertRejectsWithNotFoundError(device.claimInterface(0));
292 }); 306 });
293 }); 307 });
294 }, 'claimInterface rejects when called on a disconnected device'); 308 }, 'claimInterface rejects when called on a disconnected device');
295 309
296 usb_test(usb => { 310 usb_test(() => {
297 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); 311 let guid = navigator.usb.test.addFakeDevice(fakeDeviceInit);
312
298 return navigator.usb.getDevices().then(devices => { 313 return navigator.usb.getDevices().then(devices => {
299 assert_equals(1, devices.length); 314 assert_equals(1, devices.length);
300 var device = devices[0]; 315 var device = devices[0];
301 return device.open() 316 return device.open()
302 .then(() => device.selectConfiguration(1)) 317 .then(() => device.selectConfiguration(1))
303 .then(() => device.claimInterface(0)) 318 .then(() => device.claimInterface(0))
304 .then(() => { 319 .then(() => {
305 usb.mockDeviceManager.removeMockDevice(usb.fakeDevices[0]); 320 navigator.usb.test.removeFakeDevice(guid);
306 return assertRejectsWithNotFoundError(device.releaseInterface(0)); 321 return assertRejectsWithNotFoundError(device.releaseInterface(0));
307 }); 322 });
308 }); 323 });
309 }, 'releaseInterface rejects when called on a disconnected device'); 324 }, 'releaseInterface rejects when called on a disconnected device');
310 325
311 usb_test(usb => { 326 usb_test(() => {
312 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); 327 navigator.usb.test.addFakeDevice(fakeDeviceInit);
328
313 return navigator.usb.getDevices().then(devices => { 329 return navigator.usb.getDevices().then(devices => {
314 assert_equals(1, devices.length); 330 assert_equals(1, devices.length);
315 let device = devices[0]; 331 let device = devices[0];
316 return device.open() 332 return device.open()
317 .then(() => device.selectConfiguration(2)) 333 .then(() => device.selectConfiguration(2))
318 .then(() => device.claimInterface(0)) 334 .then(() => device.claimInterface(0))
319 .then(() => device.selectAlternateInterface(0, 1)) 335 .then(() => device.selectAlternateInterface(0, 1))
320 .then(() => device.close()); 336 .then(() => device.close());
321 }); 337 });
322 }, 'can select an alternate interface'); 338 }, 'can select an alternate interface');
323 339
324 usb_test(usb => { 340 usb_test(() => {
325 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); 341 navigator.usb.test.addFakeDevice(fakeDeviceInit);
342
326 return navigator.usb.getDevices().then(devices => { 343 return navigator.usb.getDevices().then(devices => {
327 assert_equals(1, devices.length); 344 assert_equals(1, devices.length);
328 let device = devices[0]; 345 let device = devices[0];
329 return device.open() 346 return device.open()
330 .then(() => device.selectConfiguration(2)) 347 .then(() => device.selectConfiguration(2))
331 .then(() => device.claimInterface(0)) 348 .then(() => device.claimInterface(0))
332 .then(() => assertRejectsWithError( 349 .then(() => assertRejectsWithError(
333 device.selectAlternateInterface(0, 2), 'NotFoundError', 350 device.selectAlternateInterface(0, 2), 'NotFoundError',
334 'The alternate setting provided is not supported by the device in ' + 351 'The alternate setting provided is not supported by the device in ' +
335 'its current configuration.')) 352 'its current configuration.'))
336 .then(() => device.close()); 353 .then(() => device.close());
337 }); 354 });
338 }, 'cannot select a non-existent alternate interface'); 355 }, 'cannot select a non-existent alternate interface');
339 356
340 usb_test(usb => { 357 usb_test(() => {
341 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); 358 let guid = navigator.usb.test.addFakeDevice(fakeDeviceInit);
359
342 return navigator.usb.getDevices().then(devices => { 360 return navigator.usb.getDevices().then(devices => {
343 assert_equals(1, devices.length); 361 assert_equals(1, devices.length);
344 var device = devices[0]; 362 var device = devices[0];
345 return device.open() 363 return device.open()
346 .then(() => device.selectConfiguration(2)) 364 .then(() => device.selectConfiguration(2))
347 .then(() => device.claimInterface(0)) 365 .then(() => device.claimInterface(0))
348 .then(() => { 366 .then(() => {
349 usb.mockDeviceManager.removeMockDevice(usb.fakeDevices[0]); 367 navigator.usb.test.removeFakeDevice(guid);
350 return assertRejectsWithNotFoundError(device.selectAlternateInterface(0, 1)); 368 return assertRejectsWithNotFoundError(device.selectAlternateInterface(0, 1));
351 }); 369 });
352 }); 370 });
353 }, 'selectAlternateInterface rejects when called on a disconnected device'); 371 }, 'selectAlternateInterface rejects when called on a disconnected device');
354 372
355 usb_test(usb => { 373 usb_test(() => {
356 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); 374 navigator.usb.test.addFakeDevice(fakeDeviceInit);
375
357 return navigator.usb.getDevices().then(devices => { 376 return navigator.usb.getDevices().then(devices => {
358 assert_equals(1, devices.length); 377 assert_equals(1, devices.length);
359 let device = devices[0]; 378 let device = devices[0];
360 return device.open() 379 return device.open()
361 .then(() => device.selectConfiguration(1)) 380 .then(() => device.selectConfiguration(1))
362 .then(() => device.controlTransferIn({ 381 .then(() => device.controlTransferIn({
363 requestType: 'vendor', 382 requestType: 'vendor',
364 recipient: 'device', 383 recipient: 'device',
365 request: 0x42, 384 request: 0x42,
366 value: 0x1234, 385 value: 0x1234,
367 index: 0x5678 386 index: 0x5678
368 }, 7)) 387 }, 7))
369 .then(result => { 388 .then(result => {
370 assert_true(result instanceof USBInTransferResult); 389 assert_true(result instanceof USBInTransferResult);
371 assert_equals(result.status, 'ok'); 390 assert_equals(result.status, 'ok');
372 assert_equals(result.data.byteLength, 7); 391 assert_equals(result.data.byteLength, 7);
373 assert_equals(result.data.getUint16(0), 0x07); 392 assert_equals(result.data.getUint16(0), 0x07);
374 assert_equals(result.data.getUint8(2), 0x42); 393 assert_equals(result.data.getUint8(2), 0x42);
375 assert_equals(result.data.getUint16(3), 0x1234); 394 assert_equals(result.data.getUint16(3), 0x1234);
376 assert_equals(result.data.getUint16(5), 0x5678); 395 assert_equals(result.data.getUint16(5), 0x5678);
377 return device.close(); 396 return device.close();
378 }); 397 });
379 }); 398 });
380 }, 'can issue IN control transfer'); 399 }, 'can issue IN control transfer');
381 400
382 usb_test(usb => { 401 usb_test(() => {
383 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); 402 let guid = navigator.usb.test.addFakeDevice(fakeDeviceInit);
403
384 return navigator.usb.getDevices().then(devices => { 404 return navigator.usb.getDevices().then(devices => {
385 assert_equals(1, devices.length); 405 assert_equals(1, devices.length);
386 let device = devices[0]; 406 let device = devices[0];
387 return device.open() 407 return device.open()
388 .then(() => device.selectConfiguration(1)) 408 .then(() => device.selectConfiguration(1))
389 .then(() => { 409 .then(() => {
390 usb.mockDeviceManager.removeMockDevice(usb.fakeDevices[0]); 410 navigator.usb.test.removeFakeDevice(guid);
391 return assertRejectsWithNotFoundError(device.controlTransferIn({ 411 return assertRejectsWithNotFoundError(device.controlTransferIn({
392 requestType: 'vendor', 412 requestType: 'vendor',
393 recipient: 'device', 413 recipient: 'device',
394 request: 0x42, 414 request: 0x42,
395 value: 0x1234, 415 value: 0x1234,
396 index: 0x5678 416 index: 0x5678
397 }, 7)); 417 }, 7));
398 }); 418 });
399 }); 419 });
400 }, 'controlTransferIn rejects when called on a disconnected device'); 420 }, 'controlTransferIn rejects when called on a disconnected device');
401 421
402 usb_test(usb => { 422 usb_test(() => {
403 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); 423 navigator.usb.test.addFakeDevice(fakeDeviceInit);
424
404 return navigator.usb.getDevices().then(devices => { 425 return navigator.usb.getDevices().then(devices => {
405 assert_equals(1, devices.length); 426 assert_equals(1, devices.length);
406 let device = devices[0]; 427 let device = devices[0];
407 return device.open() 428 return device.open()
408 .then(() => device.selectConfiguration(1)) 429 .then(() => device.selectConfiguration(1))
409 .then(() => device.controlTransferOut({ 430 .then(() => device.controlTransferOut({
410 requestType: 'vendor', 431 requestType: 'vendor',
411 recipient: 'device', 432 recipient: 'device',
412 request: 0x42, 433 request: 0x42,
413 value: 0x1234, 434 value: 0x1234,
414 index: 0x5678 435 index: 0x5678
415 }, new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8]))) 436 }, new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8])))
416 .then(result => { 437 .then(result => {
417 assert_true(result instanceof USBOutTransferResult); 438 assert_true(result instanceof USBOutTransferResult);
418 assert_equals(result.status, 'ok'); 439 assert_equals(result.status, 'ok');
419 assert_equals(result.bytesWritten, 8); 440 assert_equals(result.bytesWritten, 8);
420 return device.close(); 441 return device.close();
421 }) 442 })
422 }); 443 });
423 }, 'can issue OUT control transfer'); 444 }, 'can issue OUT control transfer');
424 445
425 usb_test(usb => { 446 usb_test(() => {
426 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); 447 let guid = navigator.usb.test.addFakeDevice(fakeDeviceInit);
448
427 return navigator.usb.getDevices().then(devices => { 449 return navigator.usb.getDevices().then(devices => {
428 assert_equals(1, devices.length); 450 assert_equals(1, devices.length);
429 let device = devices[0]; 451 let device = devices[0];
430 return device.open() 452 return device.open()
431 .then(() => device.selectConfiguration(1)) 453 .then(() => device.selectConfiguration(1))
432 .then(() => { 454 .then(() => {
433 usb.mockDeviceManager.removeMockDevice(usb.fakeDevices[0]); 455 navigator.usb.test.removeFakeDevice(guid);
434 return assertRejectsWithNotFoundError(device.controlTransferOut({ 456 return assertRejectsWithNotFoundError(device.controlTransferOut({
435 requestType: 'vendor', 457 requestType: 'vendor',
436 recipient: 'device', 458 recipient: 'device',
437 request: 0x42, 459 request: 0x42,
438 value: 0x1234, 460 value: 0x1234,
439 index: 0x5678 461 index: 0x5678
440 }, new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8]))); 462 }, new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8])));
441 }); 463 });
442 }); 464 });
443 }, 'controlTransferOut rejects when called on a disconnected device'); 465 }, 'controlTransferOut rejects when called on a disconnected device');
444 466
445 usb_test(usb => { 467 usb_test(() => {
446 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); 468 navigator.usb.test.addFakeDevice(fakeDeviceInit);
469
447 return navigator.usb.getDevices().then(devices => { 470 return navigator.usb.getDevices().then(devices => {
448 assert_equals(1, devices.length); 471 assert_equals(1, devices.length);
449 let device = devices[0]; 472 let device = devices[0];
450 let interfaceRequest = { 473 let interfaceRequest = {
451 requestType: 'vendor', 474 requestType: 'vendor',
452 recipient: 'interface', 475 recipient: 'interface',
453 request: 0x42, 476 request: 0x42,
454 value: 0x1234, 477 value: 0x1234,
455 index: 0x5600 // Last byte of index is interface number. 478 index: 0x5600 // Last byte of index is interface number.
456 }; 479 };
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
498 assert_equals(result.data.getUint16(3), 0x1234); 521 assert_equals(result.data.getUint16(3), 0x1234);
499 assert_equals(result.data.getUint16(5), 0x5681); 522 assert_equals(result.data.getUint16(5), 0x5681);
500 }), 523 }),
501 device.controlTransferOut(interfaceRequest, data), 524 device.controlTransferOut(interfaceRequest, data),
502 device.controlTransferOut(endpointRequest, data), 525 device.controlTransferOut(endpointRequest, data),
503 ])) 526 ]))
504 .then(() => device.close()); 527 .then(() => device.close());
505 }); 528 });
506 }, 'requests to interfaces and endpoint require an interface claim'); 529 }, 'requests to interfaces and endpoint require an interface claim');
507 530
508 usb_test(usb => { 531 usb_test(() => {
509 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); 532 navigator.usb.test.addFakeDevice(fakeDeviceInit);
533
510 return navigator.usb.getDevices().then(devices => { 534 return navigator.usb.getDevices().then(devices => {
511 assert_equals(devices.length, 1); 535 assert_equals(devices.length, 1);
512 let device = devices[0]; 536 let device = devices[0];
513 return device.open() 537 return device.open()
514 .then(() => device.selectConfiguration(1)) 538 .then(() => device.selectConfiguration(1))
515 .then(() => device.claimInterface(0)) 539 .then(() => device.claimInterface(0))
516 .then(() => device.clearHalt('in', 1)) 540 .then(() => device.clearHalt('in', 1))
517 .then(() => device.close()); 541 .then(() => device.close());
518 }); 542 });
519 }, 'can clear a halt condition'); 543 }, 'can clear a halt condition');
520 544
521 usb_test(usb => { 545 usb_test(() => {
522 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); 546 let guid = navigator.usb.test.addFakeDevice(fakeDeviceInit);
547
523 return navigator.usb.getDevices().then(devices => { 548 return navigator.usb.getDevices().then(devices => {
524 assert_equals(devices.length, 1); 549 assert_equals(devices.length, 1);
525 let device = devices[0]; 550 let device = devices[0];
526 return device.open() 551 return device.open()
527 .then(() => device.selectConfiguration(1)) 552 .then(() => device.selectConfiguration(1))
528 .then(() => device.claimInterface(0)) 553 .then(() => device.claimInterface(0))
529 .then(() => { 554 .then(() => {
530 usb.mockDeviceManager.removeMockDevice(usb.fakeDevices[0]); 555 navigator.usb.test.removeFakeDevice(guid);
531 return assertRejectsWithNotFoundError(device.clearHalt('in', 1)); 556 return assertRejectsWithNotFoundError(device.clearHalt('in', 1));
532 }); 557 });
533 }); 558 });
534 }, 'clearHalt rejects when called on a disconnected device'); 559 }, 'clearHalt rejects when called on a disconnected device');
535 560
536 usb_test(usb => { 561 usb_test(() => {
537 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); 562 navigator.usb.test.addFakeDevice(fakeDeviceInit);
563
538 return navigator.usb.getDevices().then(devices => { 564 return navigator.usb.getDevices().then(devices => {
539 assert_equals(devices.length, 1); 565 assert_equals(devices.length, 1);
540 let device = devices[0]; 566 let device = devices[0];
541 let data = new DataView(new ArrayBuffer(1024)); 567 let data = new DataView(new ArrayBuffer(1024));
542 for (let i = 0; i < 1024; ++i) 568 for (let i = 0; i < 1024; ++i)
543 data.setUint8(i, i & 0xff); 569 data.setUint8(i, i & 0xff);
544 const notFoundMessage = 'The specified endpoint is not part of a claimed ' + 570 const notFoundMessage = 'The specified endpoint is not part of a claimed ' +
545 'and selected alternate interface.'; 571 'and selected alternate interface.';
546 const rangeError = 'The specified endpoint number is out of range.'; 572 const rangeError = 'The specified endpoint number is out of range.';
547 return device.open() 573 return device.open()
548 .then(() => device.selectConfiguration(1)) 574 .then(() => device.selectConfiguration(1))
549 .then(() => device.claimInterface(0)) 575 .then(() => device.claimInterface(0))
550 .then(() => Promise.all([ 576 .then(() => Promise.all([
551 assertRejectsWithError(device.transferIn(2, 8), 577 assertRejectsWithError(device.transferIn(2, 8),
552 'NotFoundError', notFoundMessage), // Unclaimed 578 'NotFoundError', notFoundMessage), // Unclaimed
553 assertRejectsWithError(device.transferIn(3, 8), 'NotFoundError', 579 assertRejectsWithError(device.transferIn(3, 8), 'NotFoundError',
554 notFoundMessage), // Non-existent 580 notFoundMessage), // Non-existent
555 assertRejectsWithError( 581 assertRejectsWithError(
556 device.transferIn(16, 8), 'IndexSizeError', rangeError), 582 device.transferIn(16, 8), 'IndexSizeError', rangeError),
557 assertRejectsWithError(device.transferOut(2, data), 583 assertRejectsWithError(device.transferOut(2, data),
558 'NotFoundError', notFoundMessage), // Unclaimed 584 'NotFoundError', notFoundMessage), // Unclaimed
559 assertRejectsWithError(device.transferOut(3, data), 'NotFoundError', 585 assertRejectsWithError(device.transferOut(3, data), 'NotFoundError',
560 notFoundMessage), // Non-existent 586 notFoundMessage), // Non-existent
561 assertRejectsWithError( 587 assertRejectsWithError(
562 device.transferOut(16, data), 'IndexSizeError', rangeError), 588 device.transferOut(16, data), 'IndexSizeError', rangeError),
563 ])); 589 ]));
564 }); 590 });
565 }, 'transfers to unavailable endpoints are rejected'); 591 }, 'transfers to unavailable endpoints are rejected');
566 592
567 usb_test(usb => { 593 usb_test(() => {
568 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); 594 navigator.usb.test.addFakeDevice(fakeDeviceInit);
595
569 return navigator.usb.getDevices().then(devices => { 596 return navigator.usb.getDevices().then(devices => {
570 assert_equals(devices.length, 1); 597 assert_equals(devices.length, 1);
571 let device = devices[0]; 598 let device = devices[0];
572 return device.open() 599 return device.open()
573 .then(() => device.selectConfiguration(1)) 600 .then(() => device.selectConfiguration(1))
574 .then(() => device.claimInterface(0)) 601 .then(() => device.claimInterface(0))
575 .then(() => device.transferIn(1, 8)) 602 .then(() => device.transferIn(1, 8))
576 .then(result => { 603 .then(result => {
577 assert_true(result instanceof USBInTransferResult); 604 assert_true(result instanceof USBInTransferResult);
578 assert_equals(result.status, 'ok'); 605 assert_equals(result.status, 'ok');
579 assert_equals(result.data.byteLength, 8); 606 assert_equals(result.data.byteLength, 8);
580 for (let i = 0; i < 8; ++i) 607 for (let i = 0; i < 8; ++i)
581 assert_equals(result.data.getUint8(i), i, 'mismatch at byte ' + i); 608 assert_equals(result.data.getUint8(i), i, 'mismatch at byte ' + i);
582 return device.close(); 609 return device.close();
583 }); 610 });
584 }); 611 });
585 }, 'can issue IN interrupt transfer'); 612 }, 'can issue IN interrupt transfer');
586 613
587 usb_test(usb => { 614 usb_test(() => {
588 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); 615 navigator.usb.test.addFakeDevice(fakeDeviceInit);
616
589 return navigator.usb.getDevices().then(devices => { 617 return navigator.usb.getDevices().then(devices => {
590 assert_equals(devices.length, 1); 618 assert_equals(devices.length, 1);
591 let device = devices[0]; 619 let device = devices[0];
592 return device.open() 620 return device.open()
593 .then(() => device.selectConfiguration(1)) 621 .then(() => device.selectConfiguration(1))
594 .then(() => device.claimInterface(1)) 622 .then(() => device.claimInterface(1))
595 .then(() => device.transferIn(2, 1024)) 623 .then(() => device.transferIn(2, 1024))
596 .then(result => { 624 .then(result => {
597 assert_true(result instanceof USBInTransferResult); 625 assert_true(result instanceof USBInTransferResult);
598 assert_equals(result.status, 'ok'); 626 assert_equals(result.status, 'ok');
599 assert_equals(result.data.byteLength, 1024); 627 assert_equals(result.data.byteLength, 1024);
600 for (let i = 0; i < 1024; ++i) 628 for (let i = 0; i < 1024; ++i)
601 assert_equals(result.data.getUint8(i), i & 0xff, 629 assert_equals(result.data.getUint8(i), i & 0xff,
602 'mismatch at byte ' + i); 630 'mismatch at byte ' + i);
603 return device.close(); 631 return device.close();
604 }); 632 });
605 }); 633 });
606 }, 'can issue IN bulk transfer'); 634 }, 'can issue IN bulk transfer');
607 635
608 usb_test(usb => { 636 usb_test(() => {
609 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); 637 let guid = navigator.usb.test.addFakeDevice(fakeDeviceInit);
638
610 return navigator.usb.getDevices().then(devices => { 639 return navigator.usb.getDevices().then(devices => {
611 assert_equals(devices.length, 1); 640 assert_equals(devices.length, 1);
612 let device = devices[0]; 641 let device = devices[0];
613 return device.open() 642 return device.open()
614 .then(() => device.selectConfiguration(1)) 643 .then(() => device.selectConfiguration(1))
615 .then(() => device.claimInterface(1)) 644 .then(() => device.claimInterface(1))
616 .then(() => { 645 .then(() => {
617 usb.mockDeviceManager.removeMockDevice(usb.fakeDevices[0]); 646 navigator.usb.test.removeFakeDevice(guid);
618 return assertRejectsWithNotFoundError(device.transferIn(2, 1024)); 647 return assertRejectsWithNotFoundError(device.transferIn(2, 1024));
619 }); 648 });
620 }); 649 });
621 }, 'transferIn rejects if called on a disconnected device'); 650 }, 'transferIn rejects if called on a disconnected device');
622 651
623 usb_test(usb => { 652 usb_test(() => {
624 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); 653 navigator.usb.test.addFakeDevice(fakeDeviceInit);
654
625 return navigator.usb.getDevices().then(devices => { 655 return navigator.usb.getDevices().then(devices => {
626 assert_equals(devices.length, 1); 656 assert_equals(devices.length, 1);
627 let device = devices[0]; 657 let device = devices[0];
628 return device.open() 658 return device.open()
629 .then(() => device.selectConfiguration(1)) 659 .then(() => device.selectConfiguration(1))
630 .then(() => device.claimInterface(1)) 660 .then(() => device.claimInterface(1))
631 .then(() => { 661 .then(() => {
632 let data = new DataView(new ArrayBuffer(1024)); 662 let data = new DataView(new ArrayBuffer(1024));
633 for (let i = 0; i < 1024; ++i) 663 for (let i = 0; i < 1024; ++i)
634 data.setUint8(i, i & 0xff); 664 data.setUint8(i, i & 0xff);
635 return device.transferOut(2, data); 665 return device.transferOut(2, data);
636 }) 666 })
637 .then(result => { 667 .then(result => {
638 assert_true(result instanceof USBOutTransferResult); 668 assert_true(result instanceof USBOutTransferResult);
639 assert_equals(result.status, 'ok'); 669 assert_equals(result.status, 'ok');
640 assert_equals(result.bytesWritten, 1024); 670 assert_equals(result.bytesWritten, 1024);
641 return device.close(); 671 return device.close();
642 }); 672 });
643 }); 673 });
644 }, 'can issue OUT bulk transfer'); 674 }, 'can issue OUT bulk transfer');
645 675
646 usb_test(usb => { 676 usb_test(() => {
647 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); 677 let guid = navigator.usb.test.addFakeDevice(fakeDeviceInit);
678
648 return navigator.usb.getDevices().then(devices => { 679 return navigator.usb.getDevices().then(devices => {
649 assert_equals(devices.length, 1); 680 assert_equals(devices.length, 1);
650 let device = devices[0]; 681 let device = devices[0];
651 return device.open() 682 return device.open()
652 .then(() => device.selectConfiguration(1)) 683 .then(() => device.selectConfiguration(1))
653 .then(() => device.claimInterface(1)) 684 .then(() => device.claimInterface(1))
654 .then(() => { 685 .then(() => {
655 let data = new DataView(new ArrayBuffer(1024)); 686 let data = new DataView(new ArrayBuffer(1024));
656 for (let i = 0; i < 1024; ++i) 687 for (let i = 0; i < 1024; ++i)
657 data.setUint8(i, i & 0xff); 688 data.setUint8(i, i & 0xff);
658 usb.mockDeviceManager.removeMockDevice(usb.fakeDevices[0]); 689 navigator.usb.test.removeFakeDevice(guid);
659 return assertRejectsWithNotFoundError(device.transferOut(2, data)); 690 return assertRejectsWithNotFoundError(device.transferOut(2, data));
660 }); 691 });
661 }); 692 });
662 }, 'transferOut rejects if called on a disconnected device'); 693 }, 'transferOut rejects if called on a disconnected device');
663 694
664 usb_test(usb => { 695 usb_test(() => {
665 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); 696 navigator.usb.test.addFakeDevice(fakeDeviceInit);
697
666 return navigator.usb.getDevices().then(devices => { 698 return navigator.usb.getDevices().then(devices => {
667 assert_equals(devices.length, 1); 699 assert_equals(devices.length, 1);
668 let device = devices[0]; 700 let device = devices[0];
669 return device.open() 701 return device.open()
670 .then(() => device.selectConfiguration(2)) 702 .then(() => device.selectConfiguration(2))
671 .then(() => device.claimInterface(0)) 703 .then(() => device.claimInterface(0))
672 .then(() => device.selectAlternateInterface(0, 1)) 704 .then(() => device.selectAlternateInterface(0, 1))
673 .then(() => device.isochronousTransferIn( 705 .then(() => device.isochronousTransferIn(
674 1, [64, 64, 64, 64, 64, 64, 64, 64])) 706 1, [64, 64, 64, 64, 64, 64, 64, 64]))
675 .then(result => { 707 .then(result => {
(...skipping 11 matching lines...) Expand all
687 for (let j = 0; j < 64; ++j) 719 for (let j = 0; j < 64; ++j)
688 assert_equals(result.packets[i].data.getUint8(j), j & 0xff, 720 assert_equals(result.packets[i].data.getUint8(j), j & 0xff,
689 'mismatch at byte ' + j + ' of packet ' + i); 721 'mismatch at byte ' + j + ' of packet ' + i);
690 byteOffset += result.packets[i].data.byteLength; 722 byteOffset += result.packets[i].data.byteLength;
691 } 723 }
692 return device.close(); 724 return device.close();
693 }); 725 });
694 }); 726 });
695 }, 'can issue IN isochronous transfer'); 727 }, 'can issue IN isochronous transfer');
696 728
697 usb_test(usb => { 729 usb_test(() => {
698 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); 730 let guid = navigator.usb.test.addFakeDevice(fakeDeviceInit);
731
699 return navigator.usb.getDevices().then(devices => { 732 return navigator.usb.getDevices().then(devices => {
700 assert_equals(devices.length, 1); 733 assert_equals(devices.length, 1);
701 let device = devices[0]; 734 let device = devices[0];
702 return device.open() 735 return device.open()
703 .then(() => device.selectConfiguration(2)) 736 .then(() => device.selectConfiguration(2))
704 .then(() => device.claimInterface(0)) 737 .then(() => device.claimInterface(0))
705 .then(() => device.selectAlternateInterface(0, 1)) 738 .then(() => device.selectAlternateInterface(0, 1))
706 .then(() => { 739 .then(() => {
707 usb.mockDeviceManager.removeMockDevice(usb.fakeDevices[0]); 740 navigator.usb.test.removeFakeDevice(guid);
708 return assertRejectsWithNotFoundError(device.isochronousTransferIn( 741 return assertRejectsWithNotFoundError(device.isochronousTransferIn(
709 1, [64, 64, 64, 64, 64, 64, 64, 64])); 742 1, [64, 64, 64, 64, 64, 64, 64, 64]));
710 }); 743 });
711 }); 744 });
712 }, 'isochronousTransferIn rejects when called on a disconnected device'); 745 }, 'isochronousTransferIn rejects when called on a disconnected device');
713 746
714 usb_test(usb => { 747 usb_test(() => {
715 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); 748 navigator.usb.test.addFakeDevice(fakeDeviceInit);
749
716 return navigator.usb.getDevices().then(devices => { 750 return navigator.usb.getDevices().then(devices => {
717 assert_equals(devices.length, 1); 751 assert_equals(devices.length, 1);
718 let device = devices[0]; 752 let device = devices[0];
719 return device.open() 753 return device.open()
720 .then(() => device.selectConfiguration(2)) 754 .then(() => device.selectConfiguration(2))
721 .then(() => device.claimInterface(0)) 755 .then(() => device.claimInterface(0))
722 .then(() => device.selectAlternateInterface(0, 1)) 756 .then(() => device.selectAlternateInterface(0, 1))
723 .then(() => { 757 .then(() => {
724 let data = new DataView(new ArrayBuffer(64 * 8)); 758 let data = new DataView(new ArrayBuffer(64 * 8));
725 for (let i = 0; i < 8; ++i) { 759 for (let i = 0; i < 8; ++i) {
(...skipping 11 matching lines...) Expand all
737 assert_true( 771 assert_true(
738 result.packets[i] instanceof USBIsochronousOutTransferPacket); 772 result.packets[i] instanceof USBIsochronousOutTransferPacket);
739 assert_equals(result.packets[i].status, 'ok'); 773 assert_equals(result.packets[i].status, 'ok');
740 assert_equals(result.packets[i].bytesWritten, 64); 774 assert_equals(result.packets[i].bytesWritten, 64);
741 } 775 }
742 return device.close(); 776 return device.close();
743 }); 777 });
744 }); 778 });
745 }, 'can issue OUT isochronous transfer'); 779 }, 'can issue OUT isochronous transfer');
746 780
747 usb_test(usb => { 781 usb_test(() => {
748 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); 782 let guid = navigator.usb.test.addFakeDevice(fakeDeviceInit);
783
749 return navigator.usb.getDevices().then(devices => { 784 return navigator.usb.getDevices().then(devices => {
750 assert_equals(devices.length, 1); 785 assert_equals(devices.length, 1);
751 let device = devices[0]; 786 let device = devices[0];
752 return device.open() 787 return device.open()
753 .then(() => device.selectConfiguration(2)) 788 .then(() => device.selectConfiguration(2))
754 .then(() => device.claimInterface(0)) 789 .then(() => device.claimInterface(0))
755 .then(() => device.selectAlternateInterface(0, 1)) 790 .then(() => device.selectAlternateInterface(0, 1))
756 .then(() => { 791 .then(() => {
757 let data = new DataView(new ArrayBuffer(64 * 8)); 792 let data = new DataView(new ArrayBuffer(64 * 8));
758 for (let i = 0; i < 8; ++i) { 793 for (let i = 0; i < 8; ++i) {
759 for (let j = 0; j < 64; ++j) 794 for (let j = 0; j < 64; ++j)
760 data.setUint8(i * j, j & 0xff); 795 data.setUint8(i * j, j & 0xff);
761 } 796 }
762 usb.mockDeviceManager.removeMockDevice(usb.fakeDevices[0]); 797 navigator.usb.test.removeFakeDevice(guid);
763 return assertRejectsWithNotFoundError(device.isochronousTransferOut( 798 return assertRejectsWithNotFoundError(device.isochronousTransferOut(
764 1, data, [64, 64, 64, 64, 64, 64, 64, 64])); 799 1, data, [64, 64, 64, 64, 64, 64, 64, 64]));
765 }); 800 });
766 }); 801 });
767 }, 'isochronousTransferOut rejects when called on a disconnected device'); 802 }, 'isochronousTransferOut rejects when called on a disconnected device');
768 803
769 usb_test(usb => { 804 usb_test(() => {
770 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); 805 navigator.usb.test.addFakeDevice(fakeDeviceInit);
806
771 return navigator.usb.getDevices().then(devices => { 807 return navigator.usb.getDevices().then(devices => {
772 assert_equals(1, devices.length); 808 assert_equals(1, devices.length);
773 let device = devices[0]; 809 let device = devices[0];
774 return device.open().then(() => device.reset()).then(() => device.close()); 810 return device.open().then(() => device.reset()).then(() => device.close());
775 }); 811 });
776 }, 'can reset the device'); 812 }, 'can reset the device');
777 813
778 usb_test(usb => { 814 usb_test(() => {
779 usb.mockDeviceManager.addMockDevice(usb.fakeDevices[0]); 815 let guid = navigator.usb.test.addFakeDevice(fakeDeviceInit);
816
780 return navigator.usb.getDevices().then(devices => { 817 return navigator.usb.getDevices().then(devices => {
781 assert_equals(1, devices.length); 818 assert_equals(1, devices.length);
782 let device = devices[0]; 819 let device = devices[0];
783 return device.open().then(() => { 820 return device.open().then(() => {
784 usb.mockDeviceManager.removeMockDevice(usb.fakeDevices[0]); 821 navigator.usb.test.removeFakeDevice(guid);
785 return assertRejectsWithNotFoundError(device.reset()); 822 return assertRejectsWithNotFoundError(device.reset());
786 }); 823 });
787 }); 824 });
788 }, 'resetDevice rejects when called on a disconnected device'); 825 }, 'resetDevice rejects when called on a disconnected device');
789 </script> 826 </script>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698