| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 } |
| OLD | NEW |