tor-browser

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

smil-sampling.html (1221B)


      1 <!doctype html>
      2 <meta charset="utf-8">
      3 <script src="/resources/testharness.js"></script>
      4 <script src="/resources/testharnessreport.js"></script>
      5 <svg width="100" height="100">
      6  <rect width="100" height="100" fill="blue">
      7    <animate attributeName="fill" from="brown" to="red" dur="1000s"/>
      8  </rect>
      9 </svg>
     10 <script>
     11 function isSampling() {
     12  return SpecialPowers.wrap(window).windowUtils.refreshDriverHasPendingTick;
     13 }
     14 function tick() {
     15  return new Promise(r => {
     16    requestAnimationFrame(() => requestAnimationFrame(r));
     17  });
     18 }
     19 
     20 // See comment in layout/base/tests/test_bug1756118.html about why the timeouts
     21 // etc.
     22 async function expectTicksToStop() {
     23  for (let i = 0; i < 100; i++) {
     24    await new Promise(r => setTimeout(r, 8));
     25    if(!isSampling()) {
     26      break;
     27    }
     28  }
     29  assert_false(isSampling(), "refresh driver should have eventually stopped ticking");
     30 }
     31 
     32 promise_test(async function(t) {
     33  await tick();
     34  assert_true(isSampling(), "Animation should be running");
     35  let svg = document.querySelector("svg");
     36  svg.remove();
     37  await tick();
     38  await expectTicksToStop();
     39 
     40  document.body.appendChild(svg);
     41  await tick();
     42  assert_true(isSampling(), "Animation should be running again");
     43 });
     44 </script>