4 <title>Basic test of permessage compression websocket extension
</title>
5 <script src=
"/tests/SimpleTest/SimpleTest.js"></script>
6 <link rel=
"stylesheet" type=
"text/css" href=
"/tests/SimpleTest/test.css" />
8 <body onload=
"testDeflate()">
9 <a target=
"_blank" href=
"https://bugzilla.mozilla.org/show_bug.cgi?id=792831">Mozilla Bug
</a>
11 <div id=
"content" style=
"display: none">
14 <script class=
"testbody" type=
"text/javascript">
17 var textMessage =
"This is a text message";
18 var binaryMessage =
"This is a binary message";
24 [ true,
"ws://mochi.test:8888/tests/dom/websocket/tests/file_websocket_permessage_deflate" ],
25 // server rejects offered PMCE
26 [ false,
"ws://mochi.test:8888/tests/dom/websocket/tests/file_websocket_permessage_deflate_rejected" ],
27 // server returns parameters in the handshake
28 [ true,
"ws://mochi.test:8888/tests/dom/websocket/tests/file_websocket_permessage_deflate_params" ]
31 function ab2str(buf) {
32 return String.fromCharCode.apply(null, new Uint16Array(buf));
35 function str2ab(str) {
36 var buf = new ArrayBuffer(str.length*
2);
37 var bufView = new Uint16Array(buf);
38 for (var i=
0, strLen=str.length; i
<strLen; i++) {
39 bufView[i] = str.charCodeAt(i);
44 function sendMessage() {
48 ws.binaryType =
"arraybuffer";
49 ws.send(str2ab(binaryMessage));
53 function testDeflate() {
54 ws = new WebSocket(tests[testIdx][
1]);
56 ws.onopen = function() {
57 if (tests[testIdx][
0]) {
58 is(ws.extensions,
"permessage-deflate",
"permessage-deflate not negotiated!");
60 is(ws.extensions,
"",
"permessage-deflate should not be negotiated!");
66 ws.onclose = function(e) {
68 ok(false,
"Connection should be closed cleanly!");
73 ws.onerror = function() {
74 ok(false,
"onerror called!");
78 ws.onmessage = function(e) {
80 is(e.data, textMessage,
"Text message not received successfully!");
84 ok(e.data instanceof ArrayBuffer,
"Should receive an arraybuffer!");
85 is(ab2str(e.data), binaryMessage,
"Binary message not received successfully!");
90 if (testIdx < tests.length) {
99 SimpleTest.waitForExplicitFinish();