From 6512f1ba68cf8cbadf08d580081177b61313532c Mon Sep 17 00:00:00 2001 From: Patrick McManus Date: Wed, 3 Aug 2011 12:42:04 -0400 Subject: [PATCH] Bug 676025 - Websockets - failure to connect should generate onerror r=sicking --- content/base/src/nsWebSocket.cpp | 2 +- content/base/test/test_websocket.html | 25 ++++++++++++++++++++----- 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/content/base/src/nsWebSocket.cpp b/content/base/src/nsWebSocket.cpp index 2478889c37bf..a7b2ed6f4a5b 100644 --- a/content/base/src/nsWebSocket.cpp +++ b/content/base/src/nsWebSocket.cpp @@ -531,7 +531,7 @@ nsWebSocketEstablishedConnection::OnStop(nsISupports *aContext, if (NS_FAILED(aStatusCode)) { ConsoleError(); - if (mOwner && mOwner->mReadyState != nsIMozWebSocket::CONNECTING) { + if (mOwner) { nsresult rv = mOwner->CreateAndDispatchSimpleEvent(NS_LITERAL_STRING("error")); if (NS_FAILED(rv)) diff --git a/content/base/test/test_websocket.html b/content/base/test/test_websocket.html index fe36edf27294..3728db95955f 100644 --- a/content/base/test/test_websocket.html +++ b/content/base/test/test_websocket.html @@ -104,6 +104,10 @@ function shouldCloseNotCleanly(e) ok(!e.wasClean, "the ws connection in test " + ws._testNumber + " shouldn't be closed cleanly"); } +function ignoreError(e) +{ +} + function CreateTestWS(ws_location, ws_protocol) { var ws; @@ -220,11 +224,18 @@ function test2() function test3() { + var hasError = false; var ws = CreateTestWS("ws://this.websocket.server.probably.does.not.exist"); ws.onopen = shouldNotOpen; + ws.onerror = function (e) + { + hasError = true; + } + ws.onclose = function(e) { shouldCloseNotCleanly(e); + ok(hasError, "rcvd onerror event"); doTest(4); }; } @@ -540,6 +551,7 @@ function test18() { var ws = CreateTestWS("ws://mochi.test:8888/tests/content/base/test/file_websocket_http_resource.txt"); ws.onopen = shouldNotOpen; + ws.onerror = ignoreError; ws.onclose = function(e) { shouldCloseNotCleanly(e); @@ -551,6 +563,7 @@ function test19() { var ws = CreateTestWS("ws://mochi.test:8888/tests/content/base/test/file_websocket", "test-19"); ws.onopen = shouldNotOpen; + ws.onerror = ignoreError; ws.onclose = function(e) { shouldCloseNotCleanly(e); @@ -638,6 +651,7 @@ function test22() { var ws = CreateTestWS("ws://mochi.test:8888/tests/content/base/test/file_websocket", "test-22"); ws.onopen = shouldNotOpen; + ws.onerror = ignoreError; ws.onclose = function(e) { shouldCloseNotCleanly(e); @@ -672,11 +686,12 @@ function test25() var prots=[]; var ws = CreateTestWS("ws://mochi.test:8888/tests/content/base/test/file_websocket", prots); - ws.onopen = function(e) - { - ok(true, "test 25 protocol array open"); - ws.close(); - }; + + // This test errors because the server requires a sub-protocol, but + // the test just wants to ensure that the ctor doesn't generate an + // exception + ws.onerror = ignoreError; + ws.onopen = shouldNotOpen; ws.onclose = function(e) {