tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

test_receive-blob.html (2745B)


      1 <!DOCTYPE html>
      2 <html>
      3 <head>
      4  <script src="/tests/SimpleTest/SimpleTest.js"></script>
      5  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
      6 </head>
      7 <body>
      8 
      9 <p id="display"></p>
     10 <div id="content" style="display: none">
     11 </div>
     12 <pre id="test">
     13 
     14 <script class="testbody" type="text/javascript">
     15 
     16 function debug(msg) {
     17   ok(true, msg);
     18 }
     19 
     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 }
     28 
     29 function createEmptyArrayBuffer()
     30 {
     31    return new ArrayBuffer(0);
     32 }
     33 
     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 }
     41 
     42 var ws = new WebSocket("ws://mochi.test:8888/tests/dom/websocket/tests/websocket_hybi/file_binary-frames");
     43 is(ws.binaryType, "blob", "should be 'blob'");
     44 
     45 var receivedMessages = [];
     46 var expectedValues = [createArrayBufferContainingHelloWorld(), createEmptyArrayBuffer(), createArrayBufferContainingAllDistinctBytes()];
     47 
     48 ws.onmessage = function(event)
     49 {
     50    receivedMessages.push(event.data);
     51 };
     52 
     53 ws.onclose = function()
     54 {
     55    is(receivedMessages.length, expectedValues.length, "lengths not same");
     56    check(0);
     57 };
     58 
     59 var responseType;
     60 
     61 function check(index)
     62 {
     63    if (index == expectedValues.length) {
     64        SimpleTest.finish();
     65        return;
     66    }
     67 
     68    debug("Checking message #" + index + ".");
     69    ok(receivedMessages[index] instanceof Blob,
     70       "We should be receiving a Blob");
     71    var reader = new FileReader();
     72    reader.readAsArrayBuffer(receivedMessages[index]);
     73    reader.onload = function()
     74    {
     75        checkArrayBuffer(index, reader.result, expectedValues[index]);
     76        check(index + 1);
     77    };
     78    reader.onerror = function()
     79    {
     80        ok(false, "Failed to read blob: error code = " + reader.error.code);
     81        check(index + 1);
     82    };
     83 }
     84 
     85 var actualArray;
     86 var expectedArray;
     87 
     88 function checkArrayBuffer(testIndex, actual, expected)
     89 {
     90    actualArray = new Uint8Array(actual);
     91    expectedArray = new Uint8Array(expected);
     92    is(actualArray.length, expectedArray.length, "lengths not same");
     93    // Print only the first mismatched byte in order not to flood console.
     94    for (var i = 0; i < expectedArray.length; ++i) {
     95        if (actualArray[i] != expectedArray[i]) {
     96            ok(false, "Value mismatch: actualArray[" + i + "] = " + actualArray[i] + ", expectedArray[" + i + "] = " + expectedArray[i]);
     97            return;
     98        }
     99    }
    100    ok(true, "Passed: Message #" + testIndex + ".");
    101 }
    102 
    103 SimpleTest.waitForExplicitFinish();
    104 
    105 </script>
    106 </body>
    107 </html>