diff options
author | reillyg <reillyg@chromium.org> | 2014-10-30 15:34:47 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-10-30 22:35:44 +0000 |
commit | 9fab544ca75f9db80a0c6a790b7abcce04c36c58 (patch) | |
tree | a434b7c5aa1418c47be8d92e089b640e6d2df7f9 /extensions/test | |
parent | 94fb97ccb2cb313438fb6907d1935dc6e85fa7a2 (diff) | |
download | chromium_src-9fab544ca75f9db80a0c6a790b7abcce04c36c58.zip chromium_src-9fab544ca75f9db80a0c6a790b7abcce04c36c58.tar.gz chromium_src-9fab544ca75f9db80a0c6a790b7abcce04c36c58.tar.bz2 |
Move the USB API tests into app_shell_browsertests.
These tests do not need the full power of browser_tests and API tests
like these will eventually be moved out of app_shell_browsertests into a
new extensions_browsertests target that takes advantage of the lighter
app_shell framework.
BUG=
Review URL: https://codereview.chromium.org/695613002
Cr-Commit-Position: refs/heads/master@{#302174}
Diffstat (limited to 'extensions/test')
14 files changed, 427 insertions, 0 deletions
diff --git a/extensions/test/data/api_test/usb/device_handling/manifest.json b/extensions/test/data/api_test/usb/device_handling/manifest.json new file mode 100644 index 0000000..ebfaf62 --- /dev/null +++ b/extensions/test/data/api_test/usb/device_handling/manifest.json @@ -0,0 +1,20 @@ +{ + "name": "USB Device Handling", + "version": "0.1", + "app": { + "background": { + "scripts": ["test.js"] + } + }, + "permissions": [ + "usb", + { + "usbDevices": [ + { + "vendorId": 0, + "productId": 0 + } + ] + } + ] +} diff --git a/extensions/test/data/api_test/usb/device_handling/test.js b/extensions/test/data/api_test/usb/device_handling/test.js new file mode 100644 index 0000000..9bcc2d4 --- /dev/null +++ b/extensions/test/data/api_test/usb/device_handling/test.js @@ -0,0 +1,31 @@ +// 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 getDevices() { + usb.getDevices({ + vendorId: 0, + productId: 0 + }, function(devices) { + usb.openDevice(devices[0], function(handle) { + usb.closeDevice(handle); + chrome.test.succeed(); + }); + }); +} + +function explicitCloseDevice() { + usb.findDevices({ + vendorId: 0, + productId: 0 + }, function(devices) { + usb.closeDevice(devices[0]); + chrome.test.succeed(); + }); +} + +chrome.test.runTests([ + getDevices, explicitCloseDevice +]); diff --git a/extensions/test/data/api_test/usb/invalid_length_transfer/manifest.json b/extensions/test/data/api_test/usb/invalid_length_transfer/manifest.json new file mode 100644 index 0000000..8f2a53f --- /dev/null +++ b/extensions/test/data/api_test/usb/invalid_length_transfer/manifest.json @@ -0,0 +1,20 @@ +{ + "name": "USB Invalid-Length Transfer", + "version": "0.1", + "app": { + "background": { + "scripts": ["test.js"] + } + }, + "permissions": [ + "usb", + { + "usbDevices": [ + { + "vendorId": 0, + "productId": 0 + } + ] + } + ] +} diff --git a/extensions/test/data/api_test/usb/invalid_length_transfer/test.js b/extensions/test/data/api_test/usb/invalid_length_transfer/test.js new file mode 100644 index 0000000..12ebe40 --- /dev/null +++ b/extensions/test/data/api_test/usb/invalid_length_transfer/test.js @@ -0,0 +1,81 @@ +// Copyright (c) 2013 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; + +var genericTransfer = { + "direction": "in", + "endpoint": 1, + "length": -1 +}; +var controlTransfer = { + "index": 0, + "direction": "in", + "requestType": "standard", + "recipient": "device", + "request": 0, + "value": 0, + "length": -1 +}; +var isoTransfer = { + "packetLength": 0, + "transferInfo": genericTransfer, + "packets": 0 +}; +var errorTransferLength = 'Transfer length must be a ' + + 'positive number less than 104,857,600.'; +var errorNumPackets = 'Number of packets must be a ' + + 'positive number less than 4,194,304.'; +var errorPacketLength = 'Packet length must be a ' + + 'positive number less than 65,536.'; +var errorInsufficientTransferLength = 'Transfer length is insufficient.'; +var largeSize = 100 * 1024 * 1024 + 1; +var maxPackets = 4 * 1024 * 1024; +var maxPacketLength = 64 * 1024; + +function createInvalidTransferTest(usbFunction, transferInfo, transferLength) { + return function() { + genericTransfer["length"] = transferLength; + controlTransfer["length"] = transferLength; + usb.findDevices({vendorId: 0, productId: 0}, function(devices) { + var device = devices[0]; + usbFunction(device, transferInfo, chrome.test.callbackFail( + errorTransferLength, function() {})); + }); + }; +} + +function createInvalidPacketLengthTest( + transferLength, packets, packetLength, errorMessage) { + return function() { + genericTransfer["length"] = transferLength; + isoTransfer["packets"] = packets; + isoTransfer["packetLength"] = packetLength; + usb.findDevices({vendorId: 0, productId: 0}, function(devices) { + var device = devices[0]; + usb.isochronousTransfer(device, isoTransfer, + chrome.test.callbackFail( + errorMessage, function() {})); + }); + }; +} + +var tests = [ + createInvalidTransferTest(usb.bulkTransfer, genericTransfer, -1), + createInvalidTransferTest(usb.controlTransfer, controlTransfer, -1), + createInvalidTransferTest(usb.interruptTransfer, genericTransfer, -1), + createInvalidTransferTest(usb.isochronousTransfer, isoTransfer, -1), + createInvalidTransferTest(usb.bulkTransfer, genericTransfer, largeSize), + createInvalidTransferTest(usb.controlTransfer, controlTransfer, largeSize), + createInvalidTransferTest(usb.interruptTransfer, genericTransfer, largeSize), + createInvalidTransferTest(usb.isochronousTransfer, isoTransfer, largeSize), + + createInvalidPacketLengthTest(1024, -1, 0, errorNumPackets), + createInvalidPacketLengthTest(maxPackets, maxPackets, 0, errorNumPackets), + createInvalidPacketLengthTest(1024, 100, -1, errorPacketLength), + createInvalidPacketLengthTest(1024, 100, maxPacketLength, errorPacketLength), + createInvalidPacketLengthTest(1024, 1025, 0, errorInsufficientTransferLength) +]; + +chrome.test.runTests(tests); diff --git a/extensions/test/data/api_test/usb/list_interfaces/manifest.json b/extensions/test/data/api_test/usb/list_interfaces/manifest.json new file mode 100644 index 0000000..f1e4722 --- /dev/null +++ b/extensions/test/data/api_test/usb/list_interfaces/manifest.json @@ -0,0 +1,20 @@ +{ + "name": "USB List Interfaces", + "version": "0.1", + "app": { + "background": { + "scripts": ["test.js"] + } + }, + "permissions": [ + "usb", + { + "usbDevices": [ + { + "vendorId": 0, + "productId": 0 + } + ] + } + ] +} diff --git a/extensions/test/data/api_test/usb/list_interfaces/test.js b/extensions/test/data/api_test/usb/list_interfaces/test.js new file mode 100644 index 0000000..7234d40 --- /dev/null +++ b/extensions/test/data/api_test/usb/list_interfaces/test.js @@ -0,0 +1,18 @@ +// Copyright (c) 2013 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; + +var tests = [ + function listInterfaces() { + usb.findDevices({vendorId: 0, productId: 0}, function (devices) { + var device = devices[0]; + usb.listInterfaces(device, function (result) { + chrome.test.succeed(); + }); + }); + } +]; + +chrome.test.runTests(tests); diff --git a/extensions/test/data/api_test/usb/reset_device/manifest.json b/extensions/test/data/api_test/usb/reset_device/manifest.json new file mode 100644 index 0000000..ebfaf62 --- /dev/null +++ b/extensions/test/data/api_test/usb/reset_device/manifest.json @@ -0,0 +1,20 @@ +{ + "name": "USB Device Handling", + "version": "0.1", + "app": { + "background": { + "scripts": ["test.js"] + } + }, + "permissions": [ + "usb", + { + "usbDevices": [ + { + "vendorId": 0, + "productId": 0 + } + ] + } + ] +} diff --git a/extensions/test/data/api_test/usb/reset_device/test.js b/extensions/test/data/api_test/usb/reset_device/test.js new file mode 100644 index 0000000..9bc4bc4 --- /dev/null +++ b/extensions/test/data/api_test/usb/reset_device/test.js @@ -0,0 +1,35 @@ +// Copyright 2013 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 resetDevice() { + usb.findDevices({vendorId: 0, productId: 0}, function(devices) { + usb.resetDevice(devices[0], function(result) { + chrome.test.assertEq(result, true); + // Ensure the device is still open. + var transfer = { + direction: "out", + endpoint: 2, + data: new ArrayBuffer(1) + }; + usb.interruptTransfer(devices[0], transfer, function(result) { + // This is designed to fail. + usb.resetDevice(devices[0], function(result) { + chrome.test.assertEq(result, false); + usb.interruptTransfer(devices[0], transfer, function(result) { + chrome.test.assertEq(result, undefined); + chrome.test.assertEq( + chrome.runtime.lastError && chrome.runtime.lastError.message, + 'No such device.' + ); + chrome.test.succeed(); + }); + }); + }); + }); + }); +} + +chrome.test.runTests([resetDevice]); diff --git a/extensions/test/data/api_test/usb/transfer_event/manifest.json b/extensions/test/data/api_test/usb/transfer_event/manifest.json new file mode 100644 index 0000000..44c5115 --- /dev/null +++ b/extensions/test/data/api_test/usb/transfer_event/manifest.json @@ -0,0 +1,20 @@ +{ + "name": "USB Transfer Events", + "version": "0.1", + "app": { + "background": { + "scripts": ["test.js"] + } + }, + "permissions": [ + "usb", + { + "usbDevices": [ + { + "vendorId": 0, + "productId": 0 + } + ] + } + ] +} diff --git a/extensions/test/data/api_test/usb/transfer_event/test.js b/extensions/test/data/api_test/usb/transfer_event/test.js new file mode 100644 index 0000000..294864a --- /dev/null +++ b/extensions/test/data/api_test/usb/transfer_event/test.js @@ -0,0 +1,71 @@ +// 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; + +var tests = [ + function controlTransfer() { + usb.findDevices({vendorId: 0, productId: 0}, function (devices) { + var device = devices[0]; + var transfer = new Object(); + transfer.direction = "out"; + transfer.recipient = "device"; + transfer.requestType = "standard"; + transfer.request = 1; + transfer.value = 2; + transfer.index = 3; + transfer.data = new ArrayBuffer(1); + + usb.controlTransfer(device, transfer, function (result) { + chrome.test.succeed(); + }); + }); + }, + function bulkTransfer() { + 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(1); + + usb.bulkTransfer(device, transfer, function (result) { + chrome.test.succeed(); + }); + }); + }, + function interruptTransfer() { + usb.findDevices({vendorId: 0, productId: 0}, function (devices) { + var device = devices[0]; + var transfer = new Object(); + transfer.direction = "out"; + transfer.endpoint = 2; + transfer.data = new ArrayBuffer(1); + + usb.interruptTransfer(device, transfer, function (result) { + chrome.test.succeed(); + }); + }); + }, + function isochronousTransfer() { + usb.findDevices({vendorId: 0, productId: 0}, function (devices) { + var device = devices[0]; + var transfer = new Object(); + transfer.direction = "out"; + transfer.endpoint = 3; + transfer.data = new ArrayBuffer(1); + + var isoTransfer = new Object(); + isoTransfer.transferInfo = transfer; + isoTransfer.packets = 1; + isoTransfer.packetLength = 1; + + usb.isochronousTransfer(device, isoTransfer, function (result) { + chrome.test.succeed(); + }); + }); + }, +]; + +chrome.test.runTests(tests); diff --git a/extensions/test/data/api_test/usb/transfer_failure/manifest.json b/extensions/test/data/api_test/usb/transfer_failure/manifest.json new file mode 100644 index 0000000..fd9e0bf --- /dev/null +++ b/extensions/test/data/api_test/usb/transfer_failure/manifest.json @@ -0,0 +1,20 @@ +{ + "name": "USB Transfer Failure", + "version": "0.1", + "app": { + "background": { + "scripts": ["test.js"] + } + }, + "permissions": [ + "usb", + { + "usbDevices": [ + { + "vendorId": 0, + "productId": 0 + } + ] + } + ] +} diff --git a/extensions/test/data/api_test/usb/transfer_failure/test.js b/extensions/test/data/api_test/usb/transfer_failure/test.js new file mode 100644 index 0000000..5a36b8a --- /dev/null +++ b/extensions/test/data/api_test/usb/transfer_failure/test.js @@ -0,0 +1,29 @@ +// 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) { + chrome.test.assertTrue(resultCode == result.resultCode); + chrome.test.succeed(); + }); + }); + }; +} + +var tests = [ + createErrorTest(0, undefined), + createErrorTest(1, "Transfer failed"), + createErrorTest(2, "Transfer timed out"), +]; + +chrome.test.runTests(tests); diff --git a/extensions/test/data/api_test/usb/zero_length_transfer/manifest.json b/extensions/test/data/api_test/usb/zero_length_transfer/manifest.json new file mode 100644 index 0000000..31fbb82 --- /dev/null +++ b/extensions/test/data/api_test/usb/zero_length_transfer/manifest.json @@ -0,0 +1,20 @@ +{ + "name": "USB Zero-Length Transfer", + "version": "0.1", + "app": { + "background": { + "scripts": ["test.js"] + } + }, + "permissions": [ + "usb", + { + "usbDevices": [ + { + "vendorId": 0, + "productId": 0 + } + ] + } + ] +} diff --git a/extensions/test/data/api_test/usb/zero_length_transfer/test.js b/extensions/test/data/api_test/usb/zero_length_transfer/test.js new file mode 100644 index 0000000..01ab989 --- /dev/null +++ b/extensions/test/data/api_test/usb/zero_length_transfer/test.js @@ -0,0 +1,22 @@ +// 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; + +var tests = [ + function zeroLengthTransfer() { + 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) { + chrome.test.succeed(); + }); + }); + }, +]; + +chrome.test.runTests(tests); |