| Index: LayoutTests/http/tests/websocket/close.html
|
| diff --git a/LayoutTests/http/tests/websocket/close.html b/LayoutTests/http/tests/websocket/close.html
|
| index c5836247094b27f8463c9309a283cbd49bec2abe..50ca91be32340768bda8b171c6989820147d436d 100644
|
| --- a/LayoutTests/http/tests/websocket/close.html
|
| +++ b/LayoutTests/http/tests/websocket/close.html
|
| @@ -1,207 +1,12 @@
|
| -<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
|
| -<html>
|
| -<head>
|
| +<!DOCTYPE HTML>
|
| <script src="/js-test-resources/js-test.js"></script>
|
| -</head>
|
| -<body>
|
| -<div id="description"></div>
|
| -<div id="console"></div>
|
| -<script type="text/javascript">
|
| +<script src="resources/close-common.js"></script>
|
| +<script src="resources/mac-dropped-wakeup-workaround.js"></script>
|
| +<script>
|
| description("Verify WebSocket::close behaviors.");
|
|
|
| window.jsTestIsAsync = true;
|
|
|
| -var exceptionName;
|
| -var exceptionMessage;
|
| -var exceptionProto;
|
| -var closeEvent;
|
| -var code;
|
| -var reason;
|
| -var result;
|
| -var invalidAccessErr = "InvalidAccessError";
|
| -var syntaxErr = "SyntaxError";
|
| -var normalClosure = 1000;
|
| -var abnormalClosure = 1006;
|
| -var url = "ws://127.0.0.1:8880/close";
|
| -var ws;
|
| -var testId;
|
| -
|
| -var codeTestCodes = [
|
| - 999, 1001, 2999, 5000, 65536 + 1000, 0x100000000 + 1000, 2999.9, NaN, "0", "100", 1/0, -1/0, 0/0,
|
| - 1000.0
|
| -];
|
| -
|
| -var reasonTestReasons = [
|
| - "1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234", // 124 Byte
|
| - "12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012\u00a9", // length is 123, but 124 Byte in UTF-8
|
| - "123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123", // 123 Byte
|
| -];
|
| -
|
| -var reasonTestResults = [
|
| - false,
|
| - false,
|
| - true,
|
| -];
|
| -
|
| -function handleOpen()
|
| -{
|
| - testFailed("handleOpen() was called.");
|
| -}
|
| -
|
| -function handleError()
|
| -{
|
| - testFailed("handleError() was called.");
|
| -}
|
| -
|
| -function handleClose()
|
| -{
|
| - testFailed("handleClose() was called.");
|
| -}
|
| -
|
| -function handleMessage()
|
| -{
|
| - testFailed("handleMessage() was called.");
|
| -}
|
| -
|
| -function setDefaultHandlers(ws)
|
| -{
|
| - ws.onopen = handleOpen;
|
| - ws.onerror = handleError;
|
| - ws.onclose = handleClose;
|
| - ws.onmessage = handleMessage;
|
| -}
|
| -
|
| -function runCodeTest()
|
| -{
|
| - ws = new WebSocket(url);
|
| - setDefaultHandlers(ws);
|
| - for (var id = 0; id < codeTestCodes.length; id++) {
|
| - if (codeTestCodes[id] != normalClosure) {
|
| - debug("Invalid code test: " + id);
|
| - ws.onclose = handleClose;
|
| - } else {
|
| - ws.onclose = function (e)
|
| - {
|
| - debug("runCodeTest: onclose().");
|
| - closeEvent = e;
|
| - shouldBe("closeEvent.code", "abnormalClosure");
|
| - if (closeEvent.code == abnormalClosure)
|
| - runInvalidStringTest();
|
| - };
|
| - ws.onerror = function()
|
| - {
|
| - testPassed("onerror was called.");
|
| - };
|
| - }
|
| - try {
|
| - ws.close(codeTestCodes[id]);
|
| - } catch (e) {
|
| - debug("Code " + codeTestCodes[id] + " must cause " + invalidAccessErr + '.');
|
| - exceptionName = e.name;
|
| - exceptionMessage = e.message;
|
| - exceptionProto = Object.getPrototypeOf(e);
|
| - shouldBeTrue("exceptionProto === DOMException.prototype");
|
| - shouldBe("exceptionName", "invalidAccessErr");
|
| - var expectedCode = codeTestCodes[id];
|
| - if (!expectedCode)
|
| - expectedCode = 0;
|
| - else if (expectedCode > 65535)
|
| - expectedCode = 65535;
|
| - else if (expectedCode < 0)
|
| - expectedCode = 0;
|
| - expectedCode = Math.floor(expectedCode);
|
| - shouldBe("exceptionMessage", '"Failed to execute \'close\' on \'WebSocket\': The code must be either 1000, or between 3000 and 4999. ' + expectedCode + ' is neither."');
|
| - }
|
| - }
|
| -}
|
| -
|
| -function runInvalidStringTest()
|
| -{
|
| - // FIXME: unpaired surrogates throw SyntaxError
|
| - debug("Skip invalid string test.");
|
| - runReasonTest();
|
| -}
|
| -
|
| -function runReasonTest()
|
| -{
|
| - ws = new WebSocket(url);
|
| - setDefaultHandlers(ws);
|
| - for (var id = 0; id < reasonTestReasons.length; id++) {
|
| - debug("Reason test: " + id);
|
| - if (!reasonTestResults[id]) {
|
| - debug(" with invalid reason: " + reasonTestReasons[id]);
|
| - ws.onclose = handleClose;
|
| - } else {
|
| - ws.onclose = function (e)
|
| - {
|
| - debug("runReasonTest: onclose().");
|
| - closeEvent = e;
|
| - shouldBe("closeEvent.code", "abnormalClosure");
|
| - if (closeEvent.code == abnormalClosure)
|
| - runCodeAndReasonTest();
|
| - };
|
| - ws.onerror = function()
|
| - {
|
| - testPassed("onerror was called.");
|
| - }
|
| - }
|
| - try {
|
| - ws.close(normalClosure, reasonTestReasons[id]);
|
| - } catch (e) {
|
| - debug("Reason " + reasonTestReasons[id] + " must cause " + syntaxErr + '.');
|
| - result = reasonTestResults[id];
|
| - exceptionName = e.name;
|
| - exceptionProto = Object.getPrototypeOf(e);
|
| - shouldBeFalse("result");
|
| - shouldBeTrue("exceptionProto === DOMException.prototype");
|
| - shouldBe("exceptionName", "syntaxErr");
|
| - }
|
| - }
|
| -}
|
| -
|
| -function runCodeAndReasonTest()
|
| -{
|
| - var codes = [
|
| - 1000,
|
| - 3000,
|
| - 4000,
|
| - 4999
|
| - ];
|
| - var reasons = [
|
| - "OK, Bye!",
|
| - "3000",
|
| - "code is 4000",
|
| - "\u00a9 Google"
|
| - ];
|
| - (function test (id) {
|
| - debug("Code and reason test: " + id);
|
| - ws = new WebSocket(url);
|
| - setDefaultHandlers(ws);
|
| - ws.onopen = function ()
|
| - {
|
| - ws.close(codes[id], reasons[id]);
|
| - };
|
| - ws.onclose = function (e)
|
| - {
|
| - closeEvent = e;
|
| - code = codes[id];
|
| - reason = reasons[id];
|
| - debug("Code and reason must be");
|
| - debug(" code : " + code);
|
| - debug(" reason: " + reason);
|
| - shouldBeTrue("closeEvent.wasClean");
|
| - shouldBe("closeEvent.code", "code");
|
| - shouldBe("closeEvent.reason", "reason");
|
| - if (++id != codes.length)
|
| - test(id);
|
| - else
|
| - finishJSTest();
|
| - };
|
| - })(0);
|
| -}
|
| -
|
| -runCodeTest();
|
| +testClose();
|
|
|
| </script>
|
| -</body>
|
| -</html>
|
|
|