serialization-via-history.html (1273B)
1 <!DOCTYPE html> 2 <!-- Based on similar tests in html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/ --> 3 <meta charset="utf-8"> 4 <title>WebAssembly.Module cloning via history's methods invoking StructuredSerializeForStorage</title> 5 <script src="/resources/testharness.js"></script> 6 <script src="/resources/testharnessreport.js"></script> 7 <script src="./resources/create-empty-wasm-module.js"></script> 8 9 <script> 10 "use strict"; 11 12 for (const method of ["pushState", "replaceState"]) { 13 test(() => { 14 assert_throws_dom("DataCloneError", () => { 15 history[method](createEmptyWasmModule(), "dummy title"); 16 }); 17 }, `history.${method}(): simple case`); 18 19 test(() => { 20 let getter1Called = false; 21 let getter2Called = false; 22 assert_throws_dom("DataCloneError", () => { 23 history[method]([ 24 { get x() { getter1Called = true; return 5; } }, 25 createEmptyWasmModule(), 26 { get x() { getter2Called = true; return 5; } } 27 ], "dummy title"); 28 }); 29 30 assert_true(getter1Called, "The getter before the WebAssembly.Module must have been called"); 31 assert_false(getter2Called, "The getter after the WebAssembly.Module must not have been called"); 32 }, `history.${method}(): is interleaved correctly`); 33 } 34 </script>