summaryrefslogtreecommitdiffstats
path: root/extensions/test
diff options
context:
space:
mode:
authorreillyg <reillyg@chromium.org>2014-10-30 15:34:47 -0700
committerCommit bot <commit-bot@chromium.org>2014-10-30 22:35:44 +0000
commit9fab544ca75f9db80a0c6a790b7abcce04c36c58 (patch)
treea434b7c5aa1418c47be8d92e089b640e6d2df7f9 /extensions/test
parent94fb97ccb2cb313438fb6907d1935dc6e85fa7a2 (diff)
downloadchromium_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')
-rw-r--r--extensions/test/data/api_test/usb/device_handling/manifest.json20
-rw-r--r--extensions/test/data/api_test/usb/device_handling/test.js31
-rw-r--r--extensions/test/data/api_test/usb/invalid_length_transfer/manifest.json20
-rw-r--r--extensions/test/data/api_test/usb/invalid_length_transfer/test.js81
-rw-r--r--extensions/test/data/api_test/usb/list_interfaces/manifest.json20
-rw-r--r--extensions/test/data/api_test/usb/list_interfaces/test.js18
-rw-r--r--extensions/test/data/api_test/usb/reset_device/manifest.json20
-rw-r--r--extensions/test/data/api_test/usb/reset_device/test.js35
-rw-r--r--extensions/test/data/api_test/usb/transfer_event/manifest.json20
-rw-r--r--extensions/test/data/api_test/usb/transfer_event/test.js71
-rw-r--r--extensions/test/data/api_test/usb/transfer_failure/manifest.json20
-rw-r--r--extensions/test/data/api_test/usb/transfer_failure/test.js29
-rw-r--r--extensions/test/data/api_test/usb/zero_length_transfer/manifest.json20
-rw-r--r--extensions/test/data/api_test/usb/zero_length_transfer/test.js22
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);