| // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| var usb = chrome.usb; |
| |
| function createErrorTest(resultCode, errorMessage) { |
| return function() { |
| usb.findDevices({vendorId: 0, productId: 0}, function(devices) { |
| var device = devices[0]; |
| var transfer = new Object(); |
| transfer.direction = "out"; |
| transfer.endpoint = 1; |
| transfer.data = new ArrayBuffer(0); |
| usb.bulkTransfer(device, transfer, function (result) { |
| if (errorMessage) { |
| chrome.test.assertLastError(errorMessage); |
| } else { |
| chrome.test.assertNoLastError(); |
| } |
| chrome.test.assertTrue(resultCode == result.resultCode); |
| chrome.test.succeed(); |
| }); |
| }); |
| }; |
| } |
| |
| function createIsochronousErrorTest(resultCode, errorMessage) { |
| return function() { |
| usb.findDevices({vendorId: 0, productId: 0}, function(devices) { |
| var device = devices[0]; |
| var transfer = { |
| 'transferInfo': { |
| 'direction': "in", |
| 'endpoint': 2, |
| 'length': 160 |
| }, |
| 'packets': 10, |
| 'packetLength': 16 |
| }; |
| usb.isochronousTransfer(device, transfer, function (result) { |
| if (errorMessage) { |
| chrome.test.assertLastError(errorMessage); |
| // Device responds with only 8-byte packets and the second half fail. |
| chrome.test.assertTrue(result.data.byteLength == 40); |
| } else { |
| chrome.test.assertNoLastError(); |
| // Device responds with a full set of 10 8-byte packets. |
| chrome.test.assertTrue(result.data.byteLength == 80); |
| } |
| chrome.test.assertTrue(resultCode == result.resultCode); |
| chrome.test.succeed(); |
| }); |
| }); |
| }; |
| } |
| |
| var tests = [ |
| createErrorTest(0, undefined), |
| createErrorTest(1, "Transfer failed."), |
| createErrorTest(2, "Transfer timed out."), |
| createIsochronousErrorTest(0, undefined), |
| createIsochronousErrorTest(1, "Transfer failed."), |
| ]; |
| |
| chrome.test.runTests(tests); |