Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(385)

Side by Side Diff: chrome/test/data/extensions/api_test/serial/api/background.js

Issue 10827123: Add serial bulk reads. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Merge help. Created 8 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/common/extensions/docs/extensions/samples.html ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // TODO(miket): opening Bluetooth ports on OSX is unreliable. Investigate. 5 // TODO(miket): opening Bluetooth ports on OSX is unreliable. Investigate.
6 function shouldSkipPort(portName) { 6 function shouldSkipPort(portName) {
7 return portName.match(/[Bb]luetooth/); 7 return portName.match(/[Bb]luetooth/);
8 } 8 }
9 9
10 var createTestArrayBuffer = function() {
11 var bufferSize = 8;
12 var buffer = new ArrayBuffer(bufferSize);
13
14 var uint8View = new Uint8Array(buffer);
15 for (var i = 0; i < bufferSize; i++) {
16 uint8View[i] = 42 + i * 2; // An arbitrary pattern.
17 }
18 return buffer;
19 }
20
10 var testSerial = function() { 21 var testSerial = function() {
11 var serialPort = null; 22 var serialPort = null;
12 var connectionId = -1; 23 var connectionId = -1;
13 var testBuffer = new ArrayBuffer(1);
14 var readTries = 10; 24 var readTries = 10;
15 25 var writeBuffer = createTestArrayBuffer();
16 var uint8View = new Uint8Array(testBuffer); 26 var writeBufferUint8View = new Uint8Array(writeBuffer);
17 uint8View[0] = 42; 27 var bufferLength = writeBufferUint8View.length;
28 var readBuffer = new ArrayBuffer(bufferLength);
29 var readBufferUint8View = new Uint8Array(readBuffer);
30 var bytesToRead = bufferLength;
18 31
19 var operation = 0; 32 var operation = 0;
20 var doNextOperation = function() { 33 var doNextOperation = function() {
21 switch (operation++) { 34 switch (operation++) {
22 case 0: 35 case 0:
23 chrome.experimental.serial.getPorts(onGetPorts); 36 chrome.experimental.serial.getPorts(onGetPorts);
24 break; 37 break;
25 case 1: 38 case 1:
26 var bitrate = 57600; 39 var bitrate = 57600;
27 console.log('Opening serial device ' + serialPort + ' at ' + 40 console.log('Opening serial device ' + serialPort + ' at ' +
28 bitrate + ' bps.'); 41 bitrate + ' bps.');
29 chrome.experimental.serial.open(serialPort, {bitrate: bitrate}, 42 chrome.experimental.serial.open(serialPort, {bitrate: bitrate},
30 onOpen); 43 onOpen);
31 break; 44 break;
32 case 2: 45 case 2:
33 chrome.experimental.serial.setControlSignals( 46 chrome.experimental.serial.setControlSignals(
34 connectionId, {dtr: true}, onSetControlSignals); 47 connectionId, {dtr: true}, onSetControlSignals);
35 break; 48 break;
36 case 3: 49 case 3:
37 chrome.experimental.serial.getControlSignals(connectionId, 50 chrome.experimental.serial.getControlSignals(connectionId,
38 onGetControlSignals); 51 onGetControlSignals);
39 break; 52 break;
40 case 4: 53 case 4:
41 chrome.experimental.serial.write(connectionId, testBuffer, onWrite); 54 chrome.experimental.serial.write(connectionId, writeBuffer, onWrite);
42 break; 55 break;
43 case 5: 56 case 5:
44 chrome.experimental.serial.read(connectionId, onRead); 57 chrome.experimental.serial.read(connectionId, bytesToRead, onRead);
45 break; 58 break;
46 case 6: 59 case 6:
47 chrome.experimental.serial.flush(connectionId, onFlush); 60 chrome.experimental.serial.flush(connectionId, onFlush);
48 break; 61 break;
49 case 50: // GOTO 4 EVER 62 case 50: // GOTO 4 EVER
50 chrome.experimental.serial.close(connectionId, onClose); 63 chrome.experimental.serial.close(connectionId, onClose);
51 break; 64 break;
52 default: 65 default:
53 // Beware! If you forget to assign a case for your next test, the whole 66 // Beware! If you forget to assign a case for your next test, the whole
54 // test suite will appear to succeed! 67 // test suite will appear to succeed!
(...skipping 16 matching lines...) Expand all
71 chrome.test.assertTrue(result); 84 chrome.test.assertTrue(result);
72 doNextOperation(); 85 doNextOperation();
73 }; 86 };
74 87
75 var onFlush = function(result) { 88 var onFlush = function(result) {
76 chrome.test.assertTrue(result); 89 chrome.test.assertTrue(result);
77 doNextOperation(); 90 doNextOperation();
78 } 91 }
79 92
80 var onRead = function(readInfo) { 93 var onRead = function(readInfo) {
81 if (readInfo.bytesRead == 1) { 94 bytesToRead -= readInfo.bytesRead;
82 var messageUint8View = new Uint8Array(readInfo.data); 95 var readBufferIndex = bufferLength - readInfo.bytesRead;
83 chrome.test.assertEq(uint8View[0], messageUint8View[0], 96 var messageUint8View = new Uint8Array(readInfo.data);
84 'Byte read was not equal to byte written.'); 97 for (var i = 0; i < readInfo.bytesRead; i++) {
98 readBufferUint8View[i + readBufferIndex] = messageUint8View[i];
99 }
100 if (bytesToRead == 0) {
101 chrome.test.assertEq(writeBufferUint8View, readBufferUint8View,
102 'Buffer read was not equal to buffer written.');
85 doNextOperation(); 103 doNextOperation();
86 } else { 104 } else {
87 if (--readTries > 0) 105 if (--readTries > 0)
88 setTimeout(repeatOperation, 100); 106 setTimeout(repeatOperation, 100);
89 else 107 else
90 chrome.test.assertTrue(false, 108 chrome.test.assertTrue(
91 'read() failed to return bytesRead 1.'); 109 false,
110 'read() failed to return requested number of bytes.');
92 } 111 }
93 }; 112 };
94 113
95 var onWrite = function(writeInfo) { 114 var onWrite = function(writeInfo) {
96 chrome.test.assertEq(1, writeInfo.bytesWritten, 115 chrome.test.assertEq(bufferLength, writeInfo.bytesWritten,
97 'Failed to write byte.'); 116 'Failed to write byte.');
98 if (writeInfo.bytesWritten == 1) 117 doNextOperation();
99 doNextOperation();
100 else
101 skipToTearDown();
102 }; 118 };
103 119
104 var onGetControlSignals = function(options) { 120 var onGetControlSignals = function(options) {
105 chrome.test.assertTrue(typeof options.dcd != 'undefined'); 121 chrome.test.assertTrue(typeof options.dcd != 'undefined');
106 chrome.test.assertTrue(typeof options.cts != 'undefined'); 122 chrome.test.assertTrue(typeof options.cts != 'undefined');
107 doNextOperation(); 123 doNextOperation();
108 }; 124 };
109 125
110 var onSetControlSignals = function(result) { 126 var onSetControlSignals = function(result) {
111 chrome.test.assertTrue(result); 127 chrome.test.assertTrue(result);
(...skipping 27 matching lines...) Expand all
139 // No serial device found. This is still considered a success because we 155 // No serial device found. This is still considered a success because we
140 // can't rely on specific hardware being present on the machine. 156 // can't rely on specific hardware being present on the machine.
141 chrome.test.succeed(); 157 chrome.test.succeed();
142 } 158 }
143 }; 159 };
144 160
145 doNextOperation(); 161 doNextOperation();
146 }; 162 };
147 163
148 chrome.test.runTests([testSerial]); 164 chrome.test.runTests([testSerial]);
OLDNEW
« no previous file with comments | « chrome/common/extensions/docs/extensions/samples.html ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698