tor-browser

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

loaf-promise-scheduled-render.html (1218B)


      1 <!DOCTYPE HTML>
      2 <meta charset=utf-8>
      3 <title>Long Animation Frame Timing: promise resolver during scheduled render</title>
      4 <meta name="timeout" content="long">
      5 <script src="/resources/testharness.js"></script>
      6 <script src="/resources/testharnessreport.js"></script>
      7 <script>
      8 function infinite_render() {
      9    requestAnimationFrame(infinite_render);
     10 }
     11 
     12 function generate_loaf_and_wait_for_entry() {
     13    return new Promise(resolve => {
     14        const reference_time = performance.now();
     15        new PerformanceObserver((entries, observer) => {
     16            const entry = entries.getEntries().find(e =>
     17                (e.startTime < reference_time)
     18                    && (e.startTime + e.duration > reference_time));
     19            if (entry) {
     20                observer.disconnect();
     21                resolve(entry);
     22            }
     23        }).observe({type: "long-animation-frame"});
     24        while (performance.now() < reference_time + 100) {
     25        }
     26    });
     27 }
     28 
     29 promise_test(async t => {
     30    infinite_render();
     31    const response = await fetch("/common/dummy.xml");
     32    await response.text();
     33    const entry = await generate_loaf_and_wait_for_entry();
     34    assert_equals(entry.scripts.length, 1);
     35 });
     36 </script>
     37 <body>
     38 </body>