tor-browser

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

to-fixed-length-buffer.any.js (1268B)


      1 // META: global=window,dedicatedworker,jsshell
      2 // META: script=/wasm/jsapi/wasm-module-builder.js
      3 
      4 test(() => {
      5  const thisValues = [
      6    undefined,
      7    null,
      8    true,
      9    "",
     10    Symbol(),
     11    1,
     12    {},
     13    WebAssembly.Memory,
     14    WebAssembly.Memory.prototype,
     15  ];
     16 
     17  const desc = Object.getOwnPropertyDescriptor(WebAssembly.Memory.prototype, "toFixedLengthBuffer");
     18  assert_equals(typeof desc, "object");
     19 
     20  const fun = desc.value;
     21  assert_equals(typeof desc.value, "function");
     22 
     23  for (const thisValue of thisValues) {
     24    assert_throws_js(TypeError, () => fun.call(thisValue), `this=${format_value(thisValue)}`);
     25  }
     26 }, "API surface");
     27 
     28 test(() => {
     29  const memory = new WebAssembly.Memory({ initial: 0, maximum: 1 });
     30  const buffer1 = memory.buffer;
     31 
     32  assert_false(buffer1.resizable, "By default the AB is initially not resizable");
     33 
     34  const buffer2 = memory.toFixedLengthBuffer();
     35  assert_equals(buffer1, buffer2, "Not changing resizability does not make a new object");
     36 
     37  const buffer3 = memory.toResizableBuffer();
     38  assert_not_equals(buffer2, buffer3, "Changing resizability makes a new object");
     39  assert_true(buffer3.resizable);
     40  assert_true(buffer2.detached);
     41  assert_equals(memory.buffer, buffer3);
     42 }, "toFixedLengthBuffer caching behavior");