tor-browser

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

serialization-via-idb.any.js (1533B)


      1 // META: script=/IndexedDB/resources/support.js
      2 "use strict";
      3 
      4 async_test(t => {
      5  const openReq = createdb(t);
      6 
      7  openReq.onupgradeneeded = e => {
      8    const db = e.target.result;
      9    const store = db.createObjectStore("store", { keyPath: "key" });
     10    // See https://github.com/whatwg/html/issues/5380 for why not `new SharedArrayBuffer()`
     11    const sab = new WebAssembly.Memory({ shared:true, initial:1, maximum:1 }).buffer;
     12 
     13    assert_throws_dom("DataCloneError", () => {
     14      store.put({ key: 1, property: sab });
     15    });
     16    t.done();
     17  };
     18 }, "SharedArrayBuffer cloning via IndexedDB: basic case");
     19 
     20 async_test(t => {
     21  const openReq = createdb(t);
     22 
     23  openReq.onupgradeneeded = e => {
     24    const db = e.target.result;
     25    const store = db.createObjectStore("store", { keyPath: "key" });
     26    // See https://github.com/whatwg/html/issues/5380 for why not `new SharedArrayBuffer()`
     27    const sab = new WebAssembly.Memory({ shared:true, initial:1, maximum:1 }).buffer;
     28 
     29    let getter1Called = false;
     30    let getter2Called = false;
     31 
     32    assert_throws_dom("DataCloneError", () => {
     33      store.put({ key: 1, property: [
     34        { get x() { getter1Called = true; return 5; } },
     35        sab,
     36        { get x() { getter2Called = true; return 5; } }
     37      ]});
     38    });
     39 
     40    assert_true(getter1Called, "The getter before the SAB must have been called");
     41    assert_false(getter2Called, "The getter after the SAB must not have been called");
     42    t.done();
     43  };
     44 }, "SharedArrayBuffer cloning via the IndexedDB: is interleaved correctly");