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");