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

Unified Diff: chrome/test/data/extensions/api_test/socket/api/background.js

Issue 10827390: Implement chrome.socket.bind/listen/accept for TCP server socket. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Remove unrelated changes. Created 8 years, 3 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 side-by-side diff with in-line comments
Download patch
Index: chrome/test/data/extensions/api_test/socket/api/background.js
diff --git a/chrome/test/data/extensions/api_test/socket/api/background.js b/chrome/test/data/extensions/api_test/socket/api/background.js
index 4518b77315f8b74f527e789bb407ee8bd6e41523..e2ebc63bb0a009953aad7cac7e04115f8e1217af 100644
--- a/chrome/test/data/extensions/api_test/socket/api/background.js
+++ b/chrome/test/data/extensions/api_test/socket/api/background.js
@@ -185,6 +185,55 @@ var testSending = function() {
socket.create(protocol, {}, onCreate);
};
+// Tests listening on a socket and sending/receiving from accepted sockets.
+var testSocketListening = function() {
+ var tmpSocketId = 0;
+
+ function onServerSocketAccept(acceptInfo) {
+ chrome.test.assertEq(0, acceptInfo.resultCode);
+ var acceptedSocketId = acceptInfo.socketId;
+ socket.read(acceptedSocketId, function(readInfo) {
+ arrayBuffer2String(readInfo.data, function(s) {
+ var match = !!s.match(request);
+ chrome.test.assertTrue(match, "Received data does not match.");
+ succeeded = true;
+ chrome.test.succeed();
+ });
+ });
+ }
+
+ function onListen(result) {
+ chrome.test.assertEq(0, result, "Listen failed.");
+ socket.accept(socketId, onServerSocketAccept);
+
+ // Create a new socket to connect to the TCP server.
+ socket.create('tcp', {}, function(socketInfo) {
+ tmpSocketId = socketInfo.socketId;
+ socket.connect(tmpSocketId, address, port,
+ function(result) {
+ chrome.test.assertEq(0, result, "Connect failed");
+
+ // Write.
+ string2ArrayBuffer(request, function(buf) {
+ socket.write(tmpSocketId, buf, function() {});
+ });
+ });
+ });
+ }
+
+ function onServerSocketBind(result) {
+ chrome.test.assertEq(0, result, "Server socket bind failed.");
+ socket.listen(socketId, 5, onListen);
+ }
+
+ function onServerSocketCreate(socketInfo) {
+ socketId = socketInfo.socketId;
+ socket.bind(socketId, address, port, onServerSocketBind);
+ }
+
+ socket.create('tcp', {}, onServerSocketCreate);
+};
+
var onMessageReply = function(message) {
var parts = message.split(":");
protocol = parts[0];
@@ -192,7 +241,10 @@ var onMessageReply = function(message) {
port = parseInt(parts[2]);
console.log("Running tests, protocol " + protocol + ", echo server " +
address + ":" + port);
- chrome.test.runTests([ testSocketCreation, testSending ]);
+ if (protocol == 'tcp_server')
+ chrome.test.runTests([ testSocketListening]);
+ else
+ chrome.test.runTests([ testSocketCreation, testSending ]);
};
// Find out which protocol we're supposed to test, and which echo server we
« chrome/browser/extensions/api/socket/tcp_socket.cc ('K') | « chrome/common/extensions/api/socket.idl ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698