tor-browser

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

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>