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 (b6d82b1a6b02)

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
<!DOCTYPE HTML>
<html>
<head>
  <script type="application/javascript" src="pc.js"></script>
</head>
<body>
<pre id="test">
<script type="application/javascript">

createHTML({
  bug: "1081409",
  title: "Captured video-only over peer connection",
  visible: true
}).then(() => new Promise(resolve => {
  // Run tests in sequence for log readability.
  PARALLEL_TESTS = 1;
  let manager = new MediaTestManager;
  window.mediaTestManager = manager;
  manager.runTests(getPlayableVideos(gLongerTests), startTest);
  manager.onFinished = () => {
    // Tear down before SimpleTest.finish.
    if ("nsINetworkInterfaceListService" in SpecialPowers.Ci) {
      getNetworkUtils().tearDownNetwork();
    }
    resolve();
  };
}))
.catch(e => ok(false, "Unexpected " + e + ":\n" + e.stack));

function startTest(media, token) {
  let manager = window.mediaTestManager;
  manager.started(token);
  info("Starting test for " + media.name);
  var video = document.createElement('video');
  video.id = "id_" + media.name;
  video.width = 160;
  video.height = 120;
  video.muted = true;
  video.controls = true;
  video.preload = "metadata";
  video.src = "../../test/" + media.name;

  document.getElementById("content").appendChild(video);

  var test;
  new Promise((resolve, reject) => {
    video.onloadedmetadata = resolve;
    video.onerror = () => reject(video.error);
  })
  .then(() => {
    video.onerror = () => ok(false, media.name + " failed in playback (code=" +
                             video.error.code + "). Stream should be OK. " +
                             "Continuing test.");
    return runNetworkTest(() => {
      var stream = video.mozCaptureStream();
      test = new PeerConnectionTest({ config_local: { label_suffix: media.name },
                                      config_remote: { label_suffix: media.name } });
      test.setOfferOptions({ offerToReceiveVideo: false,
                             offerToReceiveAudio: false });
      var hasVideo = stream.getVideoTracks().length > 0;
      var hasAudio = stream.getAudioTracks().length > 0;
      test.setMediaConstraints([{ video: hasVideo, audio: hasAudio }], []);
      test.chain.replace("PC_LOCAL_GUM", [
        function PC_LOCAL_CAPTUREVIDEO(test) {
          test.pcLocal.attachLocalStream(stream);
        },
      ]);
      test.chain.insertBefore("PC_LOCAL_WAIT_FOR_MEDIA_FLOW", [
        function PC_LOCAL_START_MEDIA(test) {
          video.play();
        },
      ]);
      return test.chain.execute();
    });
  })
  // Handle both MediaErrors (with the `code` attribute) and other errors.
  .catch(e => ok(false, "Error (" + e + ")" +
                        (e.code ? " (code=" + e.code + ")" : "") +
                        " in test for " + media.name +
                        (e.stack ? ":\n" + e.stack : "")))
  .then(() => test && test.close())
  .then(() => {
    removeNodeAndSource(video);
    manager.finished(token);
  })
  .catch(e => ok(false, "Error (" + e + ") during shutdown."));
};

</script>
</pre>
</body>
</html>