tor-browser

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

test_background_video_suspend.html (2178B)


      1 <!DOCTYPE html>
      2 <meta charset="utf-8">
      3 <title>Test Background Video Suspends</title>
      4 <script src="/tests/SimpleTest/SimpleTest.js"></script>
      5 <script src="manifest.js"></script>
      6 <script src="background_video.js"></script>
      7 <link rel="stylesheet" href="/tests/SimpleTest/test.css" />
      8 <script type="text/javascript">
      9  "use strict";
     10 
     11  var manager = new MediaTestManager;
     12 
     13  var MIN_DELAY = 100;
     14 
     15  function testDelay(v, start, min) {
     16    let end = performance.now();
     17    let delay = end - start;
     18    ok(delay > min, `${v.token} suspended with a delay of ${delay} ms`);
     19  }
     20 
     21  async function runTest(test, token) {
     22    let video = appendVideoToDocWithoutLoad(token);
     23    manager.started(token);
     24 
     25    let visible = waitUntilVisible(video);
     26    let ended = nextVideoEnded(video);
     27    let playing = nextVideoPlaying(video);
     28    let resumes = nextVideoResumes(video);
     29    let suspends = nextVideoSuspends(video);
     30 
     31    Log(token, "Waiting until video becomes visible");
     32    await visible;
     33 
     34    Log(token, "Waiting for metadata loaded");
     35    await loadAndWaitUntilLoadedmetadata(video, test.name);
     36 
     37    Log(token, "Start playing");
     38    video.play();
     39 
     40    Log(token, "Waiting for video playing");
     41    await playing;
     42 
     43    let start = performance.now();
     44 
     45    Log(token, "Set hidden");
     46    video.setVisible(false);
     47 
     48    Log(token, "Waiting for video suspend");
     49    await suspends;
     50 
     51    testDelay(video, start, MIN_DELAY);
     52 
     53    Log(token, "Set visible");
     54    video.setVisible(true);
     55 
     56    Log(token, "Waiting for video resume");
     57    await resumes;
     58 
     59    Log(token, "Waiting for ended");
     60    await ended;
     61 
     62    ok(video.currentTime >= video.duration, 'current time approximates duration.');
     63 
     64    removeNodeAndSource(video);
     65    manager.finished(token);
     66  }
     67 
     68  startTest({
     69    desc: 'Test Background Video Suspends',
     70    prefs: [
     71      ["media.test.video-suspend", true],
     72      ["media.suspend-background-video.enabled", true],
     73      // Use a short delay to ensure video decode suspend happens before end
     74      // of video.
     75      ["media.suspend-background-video.delay-ms", MIN_DELAY],
     76      ["privacy.reduceTimerPrecision", false]
     77    ],
     78    tests: gDecodeSuspendTests,
     79    runTest
     80  });
     81 </script>