serialization-via-history.https.html (1414B)
1 <!DOCTYPE html> 2 <meta charset="utf-8"> 3 <title>SharedArrayBuffers cloning via history's methods invoking StructuredSerializeForStorage</title> 4 <link rel="help" href="https://html.spec.whatwg.org/multipage/#structuredserializeforstorage"> 5 <link rel="help" href="https://html.spec.whatwg.org/multipage/#dom-history-pushstate"> 6 <link rel="help" href="https://html.spec.whatwg.org/multipage/#dom-history-replacestate"> 7 <link rel="author" title="Domenic Denicola" href="mailto:d@domenic.me"> 8 <script src="/resources/testharness.js"></script> 9 <script src="/resources/testharnessreport.js"></script> 10 11 <script> 12 "use strict"; 13 14 for (const method of ["pushState", "replaceState"]) { 15 test(() => { 16 assert_throws_dom("DataCloneError", () => { 17 history[method](new SharedArrayBuffer(), "dummy title"); 18 }); 19 }, `history.${method}(): simple case`); 20 21 test(() => { 22 let getter1Called = false; 23 let getter2Called = false; 24 assert_throws_dom("DataCloneError", () => { 25 history[method]([ 26 { get x() { getter1Called = true; return 5; } }, 27 new SharedArrayBuffer(), 28 { get x() { getter2Called = true; return 5; } } 29 ], "dummy title"); 30 }); 31 32 assert_true(getter1Called, "The getter before the SAB must have been called"); 33 assert_false(getter2Called, "The getter after the SAB must not have been called"); 34 }, `history.${method}(): is interleaved correctly`); 35 } 36 </script>