tor-browser

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

prerender-while-prerender.https.html (1763B)


      1 <!DOCTYPE html>
      2 <meta name="timeout" content="long">
      3 <script src="/resources/testharness.js"></script>
      4 <script src="/resources/testharnessreport.js"></script>
      5 <script src="/common/utils.js"></script>
      6 <script src="/common/dispatcher/dispatcher.js"></script>
      7 <script src="/html/browsers/browsing-the-web/remote-context-helper/resources/remote-context-helper.js"></script>
      8 <script src="../resources/utils.js"></script>
      9 <script src="resources/utils.js"></script>
     10 
     11 <body>
     12 <script>
     13 setup(() => assertSpeculationRulesIsSupported());
     14 
     15 // We attempted to write this test using `RemoteContextHelper`. See
     16 // https://github.com/web-platform-tests/wpt/blob/23ed0c7015082f21dd29dd09a545e2979dc3e08c/speculation-rules/prerender/prerender-while-prerender.html.
     17 //
     18 // However, that ended up being flaky in Chromium. See
     19 // https://bugs.chromium.org/p/chromium/issues/detail?id=1517319.
     20 //
     21 // We're unsure yet if that flakiness was due to a test bug or an implementation
     22 // bug. In case it is due to a test bug, we are currently trying the following
     23 // uglier `PrerenderChannel` version. If it is still flaky, then probably it is
     24 // an implementation bug, and we can revert to the prettier
     25 // `RemoteContextHelper` version.
     26 
     27 promise_test(async t => {
     28  const uid = token();
     29  const channel = new PrerenderChannel("result", uid);
     30  const result = new Promise(r => channel.addEventListener("message", e => r(e.data)));
     31 
     32  window.open(
     33    `resources/prerender-while-prerender-initiator.html?uid=${uid}`,
     34    "_blank",
     35    "noopener"
     36  );
     37 
     38  assert_equals(
     39    await result,
     40    false,
     41    "document.prerendering in the inner page must be false"
     42  );
     43 
     44  channel.close();
     45 }, "Prerendering inside a prerender doesn't work, and navigating inside prerenderingchange is fine");
     46 </script>