DXR will be turned off on Tuesday, December 29th. It will redirect to Searchfox.
See the announcement on Discourse.

DXR is a code search and navigation tool aimed at making sense of large projects. It supports full-text and regex searches as well as structural queries.

Mercurial (882de07e4cbe)

VCS Links

Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
<!DOCTYPE html>
<meta charset="utf-8">
<title>Test Background Video Suspends</title>
<script src="/tests/SimpleTest/SimpleTest.js"></script>
<script src="manifest.js"></script>
<script src="manifest.js"></script>
<script src="background_video.js"></script>
<link rel="stylesheet" href="/tests/SimpleTest/test.css" />
<script type="text/javascript">
  "use strict";


  var manager = new MediaTestManager;

  var MIN_DELAY = 100;

  function testDelay(v, start, min) {
  function testDelay(v, start, min) {
    let end = performance.now();
    let delay = end - start;
    ok(delay > min, `${v.token} suspended with a delay of ${delay} ms`);
  }


  async function runTest(test, token) {
    let video = appendVideoToDocWithoutLoad(token);
    manager.started(token);

    let visible = waitUntilVisible(video);
    let ended = nextVideoEnded(video);
    let playing = nextVideoPlaying(video);
    let playing = nextVideoPlaying(video);
    let resumes = nextVideoResumes(video);
    let suspends = nextVideoSuspends(video);

    Log(token, "Waiting until video becomes visible");
    await visible;

    Log(token, "Waiting for metadata loaded");
    Log(token, "Waiting for metadata loaded");
    await loadAndWaitUntilLoadedmetadata(video, test.name);

    Log(token, "Start playing");
    video.play();


    Log(token, "Waiting for video playing");
    await playing;

    let start = performance.now();


    Log(token, "Set hidden");
    video.setVisible(false);

    Log(token, "Waiting for video suspend");
    await suspends;
    await suspends;

    testDelay(video, start, MIN_DELAY);

    Log(token, "Set visible");
    video.setVisible(true);
    video.setVisible(true);

    Log(token, "Waiting for video resume");
    await resumes;
    await resumes;

    Log(token, "Waiting for ended");
    await ended;

    ok(video.currentTime >= video.duration, 'current time approximates duration.');
    ok(video.currentTime >= video.duration, 'current time approximates duration.');

    removeNodeAndSource(video);
    manager.finished(token);
  }


  startTest({
    desc: 'Test Background Video Suspends',
    prefs: [
      ["media.test.video-suspend", true],
      ["media.suspend-bkgnd-video.enabled", true],
      ["media.suspend-bkgnd-video.enabled", true],
      // Use a short delay to ensure video decode suspend happens before end
      // of video.
      ["media.suspend-bkgnd-video.delay-ms", MIN_DELAY],
      ["privacy.reduceTimerPrecision", false]
    ],
    ],
    tests: gDecodeSuspendTests,
    runTest
  });
</script></script>