Wed, 31 Dec 2014 06:09:35 +0100
Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.
1 <!DOCTYPE html>
2 <html>
3 <head>
4 <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
5 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
6 </head>
7 <body>
9 <p id="display"></p>
10 <div id="content" style="display: none">
11 </div>
12 <pre id="test">
14 <script class="testbody" type="text/javascript">
16 function debug(msg) {
17 ok(true, msg);
18 }
20 function createArrayBufferContainingHelloWorld()
21 {
22 var hello = "Hello, world!";
23 var array = new Uint8Array(hello.length);
24 for (var i = 0; i < hello.length; ++i)
25 array[i] = hello.charCodeAt(i);
26 return array.buffer;
27 }
29 function createEmptyArrayBuffer()
30 {
31 return new ArrayBuffer(0);
32 }
34 function createArrayBufferContainingAllDistinctBytes()
35 {
36 var array = new Uint8Array(256);
37 for (var i = 0; i < 256; ++i)
38 array[i] = i;
39 return array.buffer;
40 }
42 var ws = new WebSocket("ws://mochi.test:8888/tests/content/base/test/websocket_hybi/file_binary-frames");
43 is(ws.binaryType, "blob", "should be 'blob'");
45 var closeEvent;
46 var receivedMessages = [];
47 var expectedValues = [createArrayBufferContainingHelloWorld(), createEmptyArrayBuffer(), createArrayBufferContainingAllDistinctBytes()];
49 ws.onmessage = function(event)
50 {
51 receivedMessages.push(event.data);
52 };
54 ws.onclose = function(event)
55 {
56 closeEvent = event;
58 is(receivedMessages.length, expectedValues.length, "lengths not same");
59 check(0);
60 };
62 var responseType;
64 function check(index)
65 {
66 if (index == expectedValues.length) {
67 SimpleTest.finish();
68 return;
69 }
71 debug("Checking message #" + index + ".");
72 ok(receivedMessages[index] instanceof Blob,
73 "We should be receiving a Blob");
74 var reader = new FileReader();
75 reader.readAsArrayBuffer(receivedMessages[index]);
76 reader.onload = function(event)
77 {
78 checkArrayBuffer(index, reader.result, expectedValues[index]);
79 check(index + 1);
80 };
81 reader.onerror = function(event)
82 {
83 ok(false, "Failed to read blob: error code = " + reader.error.code);
84 check(index + 1);
85 };
86 }
88 var actualArray;
89 var expectedArray;
91 function checkArrayBuffer(testIndex, actual, expected)
92 {
93 actualArray = new Uint8Array(actual);
94 expectedArray = new Uint8Array(expected);
95 is(actualArray.length, expectedArray.length, "lengths not same");
96 // Print only the first mismatched byte in order not to flood console.
97 for (var i = 0; i < expectedArray.length; ++i) {
98 if (actualArray[i] != expectedArray[i]) {
99 ok(false, "Value mismatch: actualArray[" + i + "] = " + actualArray[i] + ", expectedArray[" + i + "] = " + expectedArray[i]);
100 return;
101 }
102 }
103 ok(true, "Passed: Message #" + testIndex + ".");
104 }
106 SimpleTest.waitForExplicitFinish();
108 </script>
109 </body>
110 </html>