4 <script src=
"/js-test-resources/js-test.js"></script>
7 <div id=
"description"></div>
8 <div id=
"console"></div>
10 description("WebSocket: Receive Blobs.");
12 window
.jsTestIsAsync
= true;
14 function createArrayBufferContainingHelloWorld()
16 var hello
= "Hello, world!";
17 var array
= new Uint8Array(hello
.length
);
18 for (var i
= 0; i
< hello
.length
; ++i
)
19 array
[i
] = hello
.charCodeAt(i
);
23 function createEmptyArrayBuffer()
25 return new ArrayBuffer(0);
28 function createArrayBufferContainingAllDistinctBytes()
30 var array
= new Uint8Array(256);
31 for (var i
= 0; i
< 256; ++i
)
36 var ws
= new WebSocket("ws://127.0.0.1:8880/binary-frames");
37 shouldBeEqualToString("ws.binaryType", "blob");
40 var receivedMessages
= [];
41 var expectedValues
= [createArrayBufferContainingHelloWorld(), createEmptyArrayBuffer(), createArrayBufferContainingAllDistinctBytes()];
43 ws
.onmessage = function(event
)
45 receivedMessages
.push(event
.data
);
48 ws
.onclose = function(event
)
52 shouldEvaluateTo("receivedMessages.length", expectedValues
.length
);
60 if (index
== expectedValues
.length
) {
65 debug("Checking message #" + index
+ ".");
66 responseType
= '' + receivedMessages
[index
];
67 shouldBeEqualToString("responseType", "[object Blob]");
68 var reader
= new FileReader();
69 reader
.readAsArrayBuffer(receivedMessages
[index
]);
70 reader
.onload = function(event
)
72 checkArrayBuffer(index
, reader
.result
, expectedValues
[index
]);
75 reader
.onerror = function(event
)
77 testFailed("Failed to read blob: error code = " + reader
.error
.code
);
85 function checkArrayBuffer(testIndex
, actual
, expected
)
87 actualArray
= new Uint8Array(actual
);
88 expectedArray
= new Uint8Array(expected
);
89 shouldEvaluateTo("actualArray.length", expectedArray
.length
);
90 // Print only the first mismatched byte in order not to flood console.
91 for (var i
= 0; i
< expectedArray
.length
; ++i
) {
92 if (actualArray
[i
] != expectedArray
[i
]) {
93 testFailed("Value mismatch: actualArray[" + i
+ "] = " + actualArray
[i
] + ", expectedArray[" + i
+ "] = " + expectedArray
[i
]);
97 testPassed("Passed: Message #" + testIndex
+ ".");