tor-browser

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

pagereveal-updatecallbackdone-promise.html (1219B)


      1 <!DOCTYPE html>
      2 <title>
      3  View transitions: Test pagereveal.updateCallbackDone promise is immediately resolved.
      4 </title>
      5 <link rel="help" href="https://drafts.csswg.org/css-view-transitions-2/">
      6 <link rel="author" href="mailto:bokan@chromium.org">
      7 <script src="/resources/testharness.js"></script>
      8 <script src="/resources/testharnessreport.js"></script>
      9 <style>
     10 @view-transition {
     11  navigation: auto;
     12 }
     13 </style>
     14 <script>
     15 const params = new URLSearchParams(location.search);
     16 
     17 // Ensures microtasks in the current event loop are flushed before control flow
     18 // resumes.
     19 function flushMicrotasks() {
     20  return new Promise(resolve => resolve());
     21 }
     22 
     23 switch (params.get("mode") || "test") {
     24 case "test":
     25  promise_test(async t => {
     26    await new Promise(resolve => {
     27      window.did_finish_callback = resolve;
     28      const popup = window.open("?mode=old");
     29      t.add_cleanup(() => popup.close());
     30    });
     31  });
     32  break;
     33 case "old":
     34  onload = () => requestAnimationFrame(() => requestAnimationFrame(() => {
     35      location.replace('?mode=new');
     36  }));
     37  break;
     38 case "new":
     39  onpagereveal = e => {
     40    e.viewTransition.updateCallbackDone.then(() => {
     41      window.opener.did_finish_callback();
     42    });
     43  }
     44  break;
     45 }
     46 </script>