tor-browser

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

file-mapped-arraybuffers.js (1469B)


      1 // |reftest| skip-if(!xulRuntime.shell)
      2 // Any copyright is dedicated to the Public Domain.
      3 // http://creativecommons.org/licenses/publicdomain/
      4 
      5 function viewToString(view)
      6 {
      7  return String.fromCharCode.apply(null, view);
      8 }
      9 
     10 function test() {
     11    var filename = "file-mapped-arraybuffers.txt";
     12    var buffer = createMappedArrayBuffer(filename);
     13    var view = new Uint8Array(buffer);
     14    assertEq(viewToString(view), "01234567abcdefghijkl");
     15 
     16    var buffer2 = createMappedArrayBuffer(filename, 8);
     17    view = new Uint8Array(buffer2);
     18    assertEq(viewToString(view), "abcdefghijkl");
     19 
     20    var buffer3 = createMappedArrayBuffer(filename, 0, 8);
     21    view = new Uint8Array(buffer3);
     22    assertEq(viewToString(view), "01234567");
     23 
     24    // Test detaching during subarray creation.
     25    var nasty = {
     26      valueOf: function () {
     27        print("detaching...");
     28        serialize(buffer3, [buffer3]);
     29        print("detached");
     30        return 3000;
     31      }
     32    };
     33 
     34    var a = new Uint8Array(buffer3);
     35    assertThrowsInstanceOf(() => {
     36        var aa = a.subarray(0, nasty);
     37        for (i = 0; i < 3000; i++)
     38            aa[i] = 17;
     39    }, TypeError);
     40 
     41    // Check that invalid sizes and offsets are caught
     42    assertThrowsInstanceOf(() => createMappedArrayBuffer("empty.txt", 8), RangeError);
     43    assertThrowsInstanceOf(() => createMappedArrayBuffer("empty.txt", 0, 8), Error);
     44 }
     45 
     46 if (getBuildConfiguration("mapped-array-buffer"))
     47    test();
     48 reportCompare(0, 0, 'ok');