| Index: chrome/test/data/extensions/api_test/serial/api/background.js
|
| 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 81ddffb8e9d1f0917e37228a5a9f0ccf29967681..207899dd49842567f9bb1790ca9d203f0bee66c9 100644
|
| --- a/chrome/test/data/extensions/api_test/serial/api/background.js
|
| +++ b/chrome/test/data/extensions/api_test/serial/api/background.js
|
| @@ -7,14 +7,27 @@ function shouldSkipPort(portName) {
|
| return portName.match(/[Bb]luetooth/);
|
| }
|
|
|
| +var createTestArrayBuffer = function() {
|
| + var bufferSize = 8;
|
| + var buffer = new ArrayBuffer(bufferSize);
|
| +
|
| + var uint8View = new Uint8Array(buffer);
|
| + for (var i = 0; i < bufferSize; i++) {
|
| + uint8View[i] = 42 + i * 2; // An arbitrary pattern.
|
| + }
|
| + return buffer;
|
| +}
|
| +
|
| var testSerial = function() {
|
| var serialPort = null;
|
| var connectionId = -1;
|
| - var testBuffer = new ArrayBuffer(1);
|
| var readTries = 10;
|
| -
|
| - var uint8View = new Uint8Array(testBuffer);
|
| - uint8View[0] = 42;
|
| + 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() {
|
| @@ -38,10 +51,10 @@ var testSerial = function() {
|
| onGetControlSignals);
|
| break;
|
| case 4:
|
| - chrome.experimental.serial.write(connectionId, testBuffer, onWrite);
|
| + chrome.experimental.serial.write(connectionId, writeBuffer, onWrite);
|
| break;
|
| case 5:
|
| - chrome.experimental.serial.read(connectionId, onRead);
|
| + chrome.experimental.serial.read(connectionId, bytesToRead, onRead);
|
| break;
|
| case 6:
|
| chrome.experimental.serial.flush(connectionId, onFlush);
|
| @@ -78,27 +91,30 @@ var testSerial = function() {
|
| }
|
|
|
| var onRead = function(readInfo) {
|
| - if (readInfo.bytesRead == 1) {
|
| - var messageUint8View = new Uint8Array(readInfo.data);
|
| - chrome.test.assertEq(uint8View[0], messageUint8View[0],
|
| - 'Byte read was not equal to byte written.');
|
| + 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 (--readTries > 0)
|
| setTimeout(repeatOperation, 100);
|
| else
|
| - chrome.test.assertTrue(false,
|
| - 'read() failed to return bytesRead 1.');
|
| + chrome.test.assertTrue(
|
| + false,
|
| + 'read() failed to return requested number of bytes.');
|
| }
|
| };
|
|
|
| var onWrite = function(writeInfo) {
|
| - chrome.test.assertEq(1, writeInfo.bytesWritten,
|
| + chrome.test.assertEq(bufferLength, writeInfo.bytesWritten,
|
| 'Failed to write byte.');
|
| - if (writeInfo.bytesWritten == 1)
|
| - doNextOperation();
|
| - else
|
| - skipToTearDown();
|
| + doNextOperation();
|
| };
|
|
|
| var onGetControlSignals = function(options) {
|
|
|