summaryrefslogtreecommitdiffstats
path: root/chrome/test/data/extensions
diff options
context:
space:
mode:
authorkjellander@chromium.org <kjellander@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-11-21 11:43:46 +0000
committerkjellander@chromium.org <kjellander@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-11-21 11:43:46 +0000
commit833f06b02f7896285a251d54c30bc08551f78e66 (patch)
tree3bed2014bf338843bfc057e02cb551a08e8ef2d3 /chrome/test/data/extensions
parent0c659c7db0ba800fa73f1ae83a99c1d58139a7f0 (diff)
downloadchromium_src-833f06b02f7896285a251d54c30bc08551f78e66.zip
chromium_src-833f06b02f7896285a251d54c30bc08551f78e66.tar.gz
chromium_src-833f06b02f7896285a251d54c30bc08551f78e66.tar.bz2
Revert 236464 "Update serial API."
Since XP bots started failing mysteriously, not being able even execute browser_tests. > Update serial API. > > Original review: https://codereview.chromium.org/27246008/ > > Modified to prevent invalid API calls on Windows XP and avoid ~150kB size increase on Mac by removing IOKit dependency. > > R=miket@chromium.org, rpaquay@chromium.org > BUG=155861,148741,140125,169555,171948,281908 > > Review URL: https://codereview.chromium.org/79203003 TBR=rockot@chromium.org Review URL: https://codereview.chromium.org/80833002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@236498 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/test/data/extensions')
-rw-r--r--chrome/test/data/extensions/api_test/serial/api/background.js87
-rw-r--r--chrome/test/data/extensions/api_test/serial/real_hardware/background.js70
2 files changed, 109 insertions, 48 deletions
diff --git a/chrome/test/data/extensions/api_test/serial/api/background.js b/chrome/test/data/extensions/api_test/serial/api/background.js
index bdc3df7..67c0e30 100644
--- a/chrome/test/data/extensions/api_test/serial/api/background.js
+++ b/chrome/test/data/extensions/api_test/serial/api/background.js
@@ -23,19 +23,19 @@ var createTestArrayBuffer = function() {
var testSerial = function() {
var serialPort = null;
var connectionId = -1;
- var receiveTries = 10;
- var sendBuffer = createTestArrayBuffer();
- var sendBufferUint8View = new Uint8Array(sendBuffer);
- var bufferLength = sendBufferUint8View.length;
- var receiveBuffer = new ArrayBuffer(bufferLength);
- var receiveBufferUint8View = new Uint8Array(receiveBuffer);
- var bytesToReceive = bufferLength;
+ var readTries = 10;
+ var writeBuffer = createTestArrayBuffer();
+ var writeBufferUint8View = new Uint8Array(writeBuffer);
+ var bufferLength = writeBufferUint8View.length;
+ var readBuffer = new ArrayBuffer(bufferLength);
+ var readBufferUint8View = new Uint8Array(readBuffer);
+ var bytesToRead = bufferLength;
var operation = 0;
var doNextOperation = function() {
switch (operation++) {
case 0:
- serial.getDevices(onGetDevices);
+ serial.getPorts(onGetPorts);
break;
case 1:
var bitrate = 57600;
@@ -50,9 +50,13 @@ var testSerial = function() {
serial.getControlSignals(connectionId,onGetControlSignals);
break;
case 4:
- serial.onReceive.addListener(onReceive);
- serial.onReceiveError.addListener(onReceiveError);
- serial.send(connectionId, sendBuffer, onSend);
+ serial.write(connectionId, writeBuffer, onWrite);
+ break;
+ case 5:
+ serial.read(connectionId, bytesToRead, onRead);
+ break;
+ case 6:
+ serial.flush(connectionId, onFlush);
break;
case 50: // GOTO 4 EVER
serial.close(connectionId, onClose);
@@ -80,35 +84,40 @@ var testSerial = function() {
doNextOperation();
};
- var onReceive = function(receiveInfo) {
- var data = new Uint8Array(receiveInfo.data);
- bytesToReceive -= data.length;
- var receiveBufferIndex = bufferLength - data.length;
- for (var i = 0; i < data.length; i++)
- receiveBufferUint8View[i + receiveBufferIndex] = data[i];
- if (bytesToReceive == 0) {
- chrome.test.assertEq(sendBufferUint8View, receiveBufferUint8View,
- 'Buffer received was not equal to buffer sent.');
+ var onFlush = function(result) {
+ chrome.test.assertTrue(result);
+ doNextOperation();
+ }
+
+ var onRead = function(readInfo) {
+ bytesToRead -= readInfo.bytesRead;
+ var readBufferIndex = bufferLength - readInfo.bytesRead;
+ var messageUint8View = new Uint8Array(readInfo.data);
+ for (var i = 0; i < readInfo.bytesRead; i++)
+ readBufferUint8View[i + readBufferIndex] = messageUint8View[i];
+ if (bytesToRead == 0) {
+ chrome.test.assertEq(writeBufferUint8View, readBufferUint8View,
+ 'Buffer read was not equal to buffer written.');
doNextOperation();
- } else if (--receiveTries <= 0) {
- chrome.test.fail('receive() failed to return requested number of bytes.');
+ } else {
+ if (--readTries > 0)
+ setTimeout(repeatOperation, 100);
+ else
+ chrome.test.assertTrue(
+ false,
+ 'read() failed to return requested number of bytes.');
}
};
- var onReceiveError = function(errorInfo) {
- chrome.test.fail('Failed to receive serial data');
- };
-
- var onSend = function(sendInfo) {
- chrome.test.assertEq(bufferLength, sendInfo.bytesSent,
- 'Failed to send byte.');
+ var onWrite = function(writeInfo) {
+ chrome.test.assertEq(bufferLength, writeInfo.bytesWritten,
+ 'Failed to write byte.');
+ doNextOperation();
};
var onGetControlSignals = function(options) {
- chrome.test.assertTrue(typeof options.dcd != 'undefined', "No DCD set");
- chrome.test.assertTrue(typeof options.cts != 'undefined', "No CTS set");
- chrome.test.assertTrue(typeof options.dtr != 'undefined', "No DTR set");
- chrome.test.assertTrue(typeof options.ri != 'undefined', "No RI set");
+ chrome.test.assertTrue(typeof options.dcd != 'undefined');
+ chrome.test.assertTrue(typeof options.cts != 'undefined');
doNextOperation();
};
@@ -123,18 +132,18 @@ var testSerial = function() {
doNextOperation();
};
- var onGetDevices = function(devices) {
- if (devices.length > 0) {
+ var onGetPorts = function(ports) {
+ if (ports.length > 0) {
var portNumber = 0;
- while (portNumber < devices.length) {
- if (shouldSkipPort(devices[portNumber].path)) {
+ while (portNumber < ports.length) {
+ if (shouldSkipPort(ports[portNumber])) {
portNumber++;
continue;
} else
break;
}
- if (portNumber < devices.length) {
- serialPort = devices[portNumber].path;
+ if (portNumber < ports.length) {
+ serialPort = ports[portNumber];
doNextOperation();
} else {
// We didn't find a port that we think we should try.
diff --git a/chrome/test/data/extensions/api_test/serial/real_hardware/background.js b/chrome/test/data/extensions/api_test/serial/real_hardware/background.js
index 19d86d9..27e033d 100644
--- a/chrome/test/data/extensions/api_test/serial/real_hardware/background.js
+++ b/chrome/test/data/extensions/api_test/serial/real_hardware/background.js
@@ -2,21 +2,73 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-var testGetDevices = function() {
- var onGetDevices = function(devices) {
+// TODO(miket): opening Bluetooth ports on OSX is unreliable. Investigate.
+function shouldSkipPort(portName) {
+ return portName.match(/[Bb]luetooth/);
+}
+
+var testGetPorts = function() {
+ var onGetPorts = function(ports) {
// Any length is potentially valid, because we're on unknown hardware. But
- // we are testing at least that the devices member was filled in, so it's
+ // we are testing at least that the ports member was filled in, so it's
// still a somewhat meaningful test.
- chrome.test.assertTrue(devices.length >= 0);
+ chrome.test.assertTrue(ports.length >= 0);
chrome.test.succeed();
}
- chrome.serial.getDevices(onGetDevices);
+ chrome.serial.getPorts(onGetPorts);
};
-// TODO(rockot): As infrastructure is built for testing device APIs in Chrome,
-// we should obviously build real hardware tests here. For now, no attempt is
-// made to open real devices on the test system.
+var testMaybeOpenPort = function() {
+ var onGetPorts = function(ports) {
+ // We're testing as much as we can here without actually assuming the
+ // existence of attached hardware.
+ //
+ // TODO(miket): is there any chance that just opening a serial port but not
+ // doing anything could be harmful to devices attached to a developer's
+ // machine?
+ if (ports.length > 0) {
+ var currentPort = 0;
+
+ var onFinishedWithPort = function() {
+ if (currentPort >= ports.length)
+ chrome.test.succeed();
+ else
+ testPort();
+ };
+
+ var onClose = function(r) {
+ onFinishedWithPort();
+ };
+
+ var onOpen = function(connectionInfo) {
+ var id = connectionInfo.connectionId;
+ if (id > 0)
+ chrome.serial.close(id, onClose);
+ else
+ onFinishedWithPort();
+ };
+
+ var testPort = function() {
+ var port = ports[currentPort++];
+
+ if (shouldSkipPort(port)) {
+ onFinishedWithPort();
+ } else {
+ console.log("Opening serial device " + port);
+ chrome.serial.open(port, onOpen);
+ }
+ }
+
+ testPort();
+ } else {
+ // There aren't any valid ports on this machine. That's OK.
+ chrome.test.succeed();
+ }
+ }
+
+ chrome.serial.getPorts(onGetPorts);
+};
-var tests = [testGetDevices];
+var tests = [testGetPorts, testMaybeOpenPort];
chrome.test.runTests(tests);