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

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

Issue 10790137: Adds socket.getInfo to the socket API (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Check for NULL TCPSocket, updated test 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 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 78d47f431e99c359698c6acce336b35bc975b44e..4518b77315f8b74f527e789bb407ee8bd6e41523 100644
--- a/chrome/test/data/extensions/api_test/socket/api/background.js
+++ b/chrome/test/data/extensions/api_test/socket/api/background.js
@@ -42,8 +42,16 @@ function arrayBuffer2String(buf, callback) {
}
var testSocketCreation = function() {
- function onCreate(socketInfo) {
- chrome.test.assertTrue(socketInfo.socketId > 0);
+ function onGetInfo(info) {
+ chrome.test.assertEq(info.socketType, protocol);
+ chrome.test.assertFalse(info.connected);
+
+ if (info.peerAddress || info.peerPort) {
+ chrome.test.fail('Unconnected socket should not have peer');
+ }
+ if (info.localAddress || info.localPort) {
+ chrome.test.fail('Unconnected socket should not have local binding');
+ }
// TODO(miket): this doesn't work yet. It's possible this will become
// automatic, but either way we can't forget to clean up.
@@ -53,9 +61,21 @@ var testSocketCreation = function() {
chrome.test.succeed();
}
+ function onCreate(socketInfo) {
+ chrome.test.assertTrue(socketInfo.socketId > 0);
+
+ // Obtaining socket information before a connect() call should be safe, but
+ // return empty values.
+ socket.getInfo(socketInfo.socketId, onGetInfo);
+ }
+
socket.create(protocol, {}, onCreate);
};
+
+var testGetInfo = function() {
+};
+
function onDataRead(readInfo) {
if (readInfo.resultCode > 0 || readInfo.data.byteLength > 0) {
chrome.test.assertEq(readInfo.resultCode, readInfo.data.byteLength);
@@ -103,11 +123,37 @@ function onSetNoDelay(result) {
socket.setKeepAlive(socketId, true, 1000, onSetKeepAlive);
}
+function onGetInfo(result) {
+ chrome.test.assertTrue(!!result.localAddress,
+ "Bound socket should always have local address");
+ chrome.test.assertTrue(!!result.localPort,
+ "Bound socket should always have local port");
+ chrome.test.assertEq(result.socketType, protocol, "Unexpected socketType");
+
+ if (protocol == "tcp") {
+ // NOTE: We're always called with 'localhost', but getInfo will only return
+ // IPs, not names.
+ chrome.test.assertEq(result.peerAddress, "127.0.0.1",
+ "Peer addresss should be the listen server");
+ chrome.test.assertEq(result.peerPort, port,
+ "Peer port should be the listen server");
+ chrome.test.assertTrue(result.connected, "Socket should be connected");
+ } else {
+ chrome.test.assertFalse(result.connected, "UDP socket was not connected");
+ chrome.test.assertTrue(!result.peerAddress,
+ "Unconnected UDP socket should not have peer address");
+ chrome.test.assertTrue(!result.peerPort,
+ "Unconnected UDP socket should not have peer port");
+ }
+
+ socket.setNoDelay(socketId, true, onSetNoDelay);
+}
+
function onConnectOrBindComplete(result) {
chrome.test.assertEq(0, result,
"Connect or bind failed with error " + result);
if (result == 0) {
- socket.setNoDelay(socketId, true, onSetNoDelay);
+ socket.getInfo(socketId, onGetInfo);
}
}

Powered by Google App Engine
This is Rietveld 408576698