tor-browser

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

assertions.js (1831B)


      1 function assert_ArrayBuffer(actual, { size=0, shared=false, detached=false }, message) {
      2  // https://github.com/WebAssembly/spec/issues/840
      3  // See https://github.com/whatwg/html/issues/5380 for why not `self.SharedArrayBuffer`
      4  const isShared = !("isView" in actual.constructor);
      5  assert_equals(isShared, shared, `${message}: constructor`);
      6  const sharedString = shared ? "Shared" : "";
      7  assert_equals(actual.toString(), `[object ${sharedString}ArrayBuffer]`, `${message}: toString()`);
      8  assert_equals(Object.getPrototypeOf(actual).toString(), `[object ${sharedString}ArrayBuffer]`, `${message}: prototype toString()`);
      9  if (detached) {
     10    // https://github.com/tc39/ecma262/issues/678
     11    let byteLength;
     12    try {
     13      byteLength = actual.byteLength;
     14    } catch (e) {
     15      byteLength = 0;
     16    }
     17    assert_equals(byteLength, 0, `${message}: detached size`);
     18  } else {
     19    assert_equals(actual.byteLength, 0x10000 * size, `${message}: size`);
     20    if (size > 0) {
     21      const array = new Uint8Array(actual);
     22      assert_equals(array[0], 0, `${message}: first element`);
     23      assert_equals(array[array.byteLength - 1], 0, `${message}: last element`);
     24    }
     25  }
     26  assert_equals(Object.isFrozen(actual), shared, "buffer frozen");
     27  assert_equals(Object.isExtensible(actual), !shared, "buffer extensibility");
     28 }
     29 globalThis.assert_ArrayBuffer = assert_ArrayBuffer;
     30 
     31 function assert_Memory(memory, { size=0, shared=false }) {
     32  assert_equals(Object.getPrototypeOf(memory), WebAssembly.Memory.prototype,
     33                "prototype");
     34  assert_true(Object.isExtensible(memory), "extensible");
     35 
     36  // https://github.com/WebAssembly/spec/issues/840
     37  assert_equals(memory.buffer, memory.buffer, "buffer should be idempotent");
     38  assert_ArrayBuffer(memory.buffer, { size, shared });
     39 }
     40 globalThis.assert_Memory = assert_Memory;