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

Side by Side Diff: third_party/WebKit/LayoutTests/usb/resources/usb-helpers.js

Issue 2594213002: Mojo JS bindings: change usb layout tests to use the new "bindings" module. (Closed)
Patch Set: . Created 3 years, 12 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
« no previous file with comments | « no previous file | third_party/WebKit/LayoutTests/usb/usbDevice-iframe.html » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 'use strict'; 1 'use strict';
2 2
3 function assertRejectsWithError(promise, name, message) { 3 function assertRejectsWithError(promise, name, message) {
4 return promise.then(() => { 4 return promise.then(() => {
5 assert_unreached('expected promise to reject with ' + name); 5 assert_unreached('expected promise to reject with ' + name);
6 }, error => { 6 }, error => {
7 assert_equals(error.name, name); 7 assert_equals(error.name, name);
8 if (message !== undefined) 8 if (message !== undefined)
9 assert_equals(error.message, message); 9 assert_equals(error.message, message);
10 }); 10 });
(...skipping 17 matching lines...) Expand all
28 // Run gc() as a promise. 28 // Run gc() as a promise.
29 return new Promise((resolve, reject) => { 29 return new Promise((resolve, reject) => {
30 GCController.collect(); 30 GCController.collect();
31 setTimeout(resolve, 0); 31 setTimeout(resolve, 0);
32 }); 32 });
33 } 33 }
34 34
35 function usbMocks(mojo) { 35 function usbMocks(mojo) {
36 return define('USB Mocks', [ 36 return define('USB Mocks', [
37 'mojo/public/js/bindings', 37 'mojo/public/js/bindings',
38 'mojo/public/js/connection',
39 'device/usb/public/interfaces/chooser_service.mojom', 38 'device/usb/public/interfaces/chooser_service.mojom',
40 'device/usb/public/interfaces/device_manager.mojom', 39 'device/usb/public/interfaces/device_manager.mojom',
41 'device/usb/public/interfaces/device.mojom', 40 'device/usb/public/interfaces/device.mojom',
42 ], (bindings, connection, chooserService, deviceManager, device) => { 41 ], (bindings, chooserService, deviceManager, device) => {
43 function assertDeviceInfoEquals(device, info) { 42 function assertDeviceInfoEquals(device, info) {
44 assert_equals(device.usbVersionMajor, info.usb_version_major); 43 assert_equals(device.usbVersionMajor, info.usb_version_major);
45 assert_equals(device.usbVersionMinor, info.usb_version_minor); 44 assert_equals(device.usbVersionMinor, info.usb_version_minor);
46 assert_equals(device.usbVersionSubminor, info.usb_version_subminor); 45 assert_equals(device.usbVersionSubminor, info.usb_version_subminor);
47 assert_equals(device.deviceClass, info.class_code); 46 assert_equals(device.deviceClass, info.class_code);
48 assert_equals(device.deviceSubclass, info.subclass_code); 47 assert_equals(device.deviceSubclass, info.subclass_code);
49 assert_equals(device.deviceProtocol, info.protocol_code); 48 assert_equals(device.deviceProtocol, info.protocol_code);
50 assert_equals(device.vendorId, info.vendor_id); 49 assert_equals(device.vendorId, info.vendor_id);
51 assert_equals(device.productId, info.product_id); 50 assert_equals(device.productId, info.product_id);
52 assert_equals(device.deviceVersionMajor, info.device_version_major); 51 assert_equals(device.deviceVersionMajor, info.device_version_major);
(...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after
316 transferred_length: packetLengths[i], 315 transferred_length: packetLengths[i],
317 status: device.TransferStatus.OK 316 status: device.TransferStatus.OK
318 }; 317 };
319 } 318 }
320 return Promise.resolve({ packets: packets }); 319 return Promise.resolve({ packets: packets });
321 } 320 }
322 }; 321 };
323 322
324 class MockDeviceManager { 323 class MockDeviceManager {
325 constructor() { 324 constructor() {
325 this.bindingSet = new bindings.BindingSet(deviceManager.DeviceManager);
326
326 this.mockDevices_ = new Map(); 327 this.mockDevices_ = new Map();
327 this.deviceCloseHandler_ = null; 328 this.deviceCloseHandler_ = null;
328 this.client_ = null; 329 this.client_ = null;
329 } 330 }
330 331
331 bindToPipe(pipe) {
332 this.stub_ = connection.bindHandleToStub(
333 pipe, deviceManager.DeviceManager);
334 bindings.StubBindings(this.stub_).delegate = this;
335 }
336
337 reset() { 332 reset() {
338 this.mockDevices_.forEach(device => { 333 this.mockDevices_.forEach(device => {
339 for (var stub of device.stubs) 334 for (var binding of device.bindingArray)
340 bindings.StubBindings(stub).close(); 335 binding.close();
341 this.client_.onDeviceRemoved(device.info); 336 this.client_.onDeviceRemoved(device.info);
342 }); 337 });
343 this.mockDevices_.clear(); 338 this.mockDevices_.clear();
344 } 339 }
345 340
346 addMockDevice(info) { 341 addMockDevice(info) {
347 let device = { 342 let device = {
348 info: info, 343 info: info,
349 stubs: [] 344 bindingArray: []
350 }; 345 };
351 this.mockDevices_.set(info.guid, device); 346 this.mockDevices_.set(info.guid, device);
352 if (this.client_) 347 if (this.client_)
353 this.client_.onDeviceAdded(info); 348 this.client_.onDeviceAdded(info);
354 } 349 }
355 350
356 removeMockDevice(info) { 351 removeMockDevice(info) {
357 let device = this.mockDevices_.get(info.guid); 352 let device = this.mockDevices_.get(info.guid);
358 for (var stub of device.stubs) 353 for (var binding of device.bindingArray)
359 bindings.StubBindings(stub).close(); 354 binding.close();
360 this.mockDevices_.delete(info.guid); 355 this.mockDevices_.delete(info.guid);
361 if (this.client_) 356 if (this.client_)
362 this.client_.onDeviceRemoved(info); 357 this.client_.onDeviceRemoved(info);
363 } 358 }
364 359
365 setDeviceCloseHandler(handler) { 360 setDeviceCloseHandler(handler) {
366 this.deviceCloseHandler_ = handler; 361 this.deviceCloseHandler_ = handler;
367 } 362 }
368 363
369 getDevices(options) { 364 getDevices(options) {
370 let devices = []; 365 let devices = [];
371 this.mockDevices_.forEach(device => { 366 this.mockDevices_.forEach(device => {
372 devices.push(device.info); 367 devices.push(device.info);
373 }); 368 });
374 return Promise.resolve({ results: devices }); 369 return Promise.resolve({ results: devices });
375 } 370 }
376 371
377 getDevice(guid, request) { 372 getDevice(guid, request) {
378 let deviceData = this.mockDevices_.get(guid); 373 let deviceData = this.mockDevices_.get(guid);
379 if (deviceData === undefined) { 374 if (deviceData === undefined) {
380 request.close(); 375 request.close();
381 } else { 376 } else {
382 var stub = connection.bindHandleToStub(request.handle, device.Device); 377 var binding = new bindings.Binding(
383 var mock = new MockDevice(deviceData.info); 378 device.Device, new MockDevice(deviceData.info), request);
384 bindings.StubBindings(stub).delegate = mock; 379 binding.setConnectionErrorHandler(() => {
385 bindings.StubBindings(stub).connectionErrorHandler = () => {
386 if (this.deviceCloseHandler_) 380 if (this.deviceCloseHandler_)
387 this.deviceCloseHandler_(deviceData.info); 381 this.deviceCloseHandler_(deviceData.info);
388 }; 382 });
389 deviceData.stubs.push(stub); 383 deviceData.bindingArray.push(binding);
390 } 384 }
391 } 385 }
392 386
393 setClient(client) { 387 setClient(client) {
394 this.client_ = client; 388 this.client_ = client;
395 } 389 }
396 } 390 }
397 391
398 class MockChooserService { 392 class MockChooserService {
399 constructor() { 393 constructor() {
394 this.bindingSet = new bindings.BindingSet(
395 chooserService.ChooserService);
396
400 this.chosenDevice_ = null; 397 this.chosenDevice_ = null;
401 } 398 }
402 399
403 bindToPipe(pipe) {
404 this.stub_ = connection.bindHandleToStub(
405 pipe, chooserService.ChooserService);
406 bindings.StubBindings(this.stub_).delegate = this;
407 }
408
409 setChosenDevice(deviceInfo) { 400 setChosenDevice(deviceInfo) {
410 this.chosenDeviceInfo_ = deviceInfo; 401 this.chosenDeviceInfo_ = deviceInfo;
411 } 402 }
412 403
413 getPermission(deviceFilters) { 404 getPermission(deviceFilters) {
414 return Promise.resolve({ result: this.chosenDeviceInfo_ }); 405 return Promise.resolve({ result: this.chosenDeviceInfo_ });
415 } 406 }
416 } 407 }
417 408
418 let mockDeviceManager = new MockDeviceManager; 409 let mockDeviceManager = new MockDeviceManager;
419 mojo.frameInterfaces.addInterfaceOverrideForTesting( 410 mojo.frameInterfaces.addInterfaceOverrideForTesting(
420 deviceManager.DeviceManager.name, 411 deviceManager.DeviceManager.name,
421 pipe => { 412 handle => {
422 mockDeviceManager.bindToPipe(pipe); 413 mockDeviceManager.bindingSet.addBinding(mockDeviceManager, handle);
423 }); 414 });
424 415
425 let mockChooserService = new MockChooserService; 416 let mockChooserService = new MockChooserService;
426 mojo.frameInterfaces.addInterfaceOverrideForTesting( 417 mojo.frameInterfaces.addInterfaceOverrideForTesting(
427 chooserService.ChooserService.name, 418 chooserService.ChooserService.name,
428 pipe => { 419 handle => {
429 mockChooserService.bindToPipe(pipe); 420 mockChooserService.bindingSet.addBinding(mockChooserService, handle);
430 }); 421 });
431 422
432 return fakeUsbDevices().then(fakeDevices => Promise.resolve({ 423 return fakeUsbDevices().then(fakeDevices => Promise.resolve({
433 DeviceManager: deviceManager.DeviceManager, 424 DeviceManager: deviceManager.DeviceManager,
434 Device: device.Device, 425 Device: device.Device,
435 MockDeviceManager: MockDeviceManager, 426 MockDeviceManager: MockDeviceManager,
436 mockDeviceManager: mockDeviceManager, 427 mockDeviceManager: mockDeviceManager,
437 mockChooserService: mockChooserService, 428 mockChooserService: mockChooserService,
438 fakeDevices: fakeDevices, 429 fakeDevices: fakeDevices,
439 assertDeviceInfoEquals: assertDeviceInfoEquals, 430 assertDeviceInfoEquals: assertDeviceInfoEquals,
440 assertConfigurationInfoEquals: assertConfigurationInfoEquals, 431 assertConfigurationInfoEquals: assertConfigurationInfoEquals,
441 })); 432 }));
442 }); 433 });
443 } 434 }
444 435
445 function usb_test(func, name, properties) { 436 function usb_test(func, name, properties) {
446 mojo_test(mojo => usbMocks(mojo).then(usb => { 437 mojo_test(mojo => usbMocks(mojo).then(usb => {
447 let result = Promise.resolve(func(usb)); 438 let result = Promise.resolve(func(usb));
448 let cleanUp = () => usb.mockDeviceManager.reset(); 439 let cleanUp = () => usb.mockDeviceManager.reset();
449 result.then(cleanUp, cleanUp); 440 result.then(cleanUp, cleanUp);
450 return result; 441 return result;
451 }), name, properties); 442 }), name, properties);
452 } 443 }
OLDNEW
« no previous file with comments | « no previous file | third_party/WebKit/LayoutTests/usb/usbDevice-iframe.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698