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

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 98 99 100 101 102 103 104 105 106 107 108
<!DOCTYPE HTML>
<html>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=479711
-->
<head>
  <title>Test for Bug 479711</title>
  <script src="/tests/SimpleTest/SimpleTest.js"></script>
  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
  <script type="text/javascript" src="manifest.js"></script>
  <script>

  var gRegisteredElements = [];
  var testWindows = [];

  function register(v) {
    gRegisteredElements.push(v);
  }

  function loaded() {
    info("onload fired!");

    for (var i = 0; i < gRegisteredElements.length; ++i) {
      var v = gRegisteredElements[i];
      ok(v.readyState >= v.HAVE_CURRENT_DATA,
         v._name + ":" + v.id + " is not ready before onload fired (" + v.readyState + ")");
    }

    for (i=0; i<testWindows.length; ++i) {
      testWindows[i].close();
    }

    mediaTestCleanup();

    SimpleTest.finish();
  }

  addLoadEvent(loaded);

  </script>
</head>
<body>
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=479711">Mozilla Bug 479711</a>
<p id="display"></p>
<div id="content" style="display: none"></div>
<pre id="test">
<script type="application/javascript">

/** Test for Bug 479711 **/

function createVideo(name, type, id) {
  var v = document.createElement("video");
  v.preload = "metadata";
  // Make sure each video is a unique resource
  v.src = name + "?" + id;
  v._name = name;
  v.id = id;
  register(v);
  return v;
}

var test = getPlayableVideo(gSmallTests);

// Straightforward add, causing a load.
var v = createVideo(test.name, test.type, "1");
document.body.appendChild(v);

// Load, add, then remove.
v = createVideo(test.name, test.type, "1");
v.load();
document.body.appendChild(v);
v.remove();

// Load and add.
v = createVideo(test.name, test.type, "2");
v.load();
document.body.appendChild(v);

// Load outside of doc.
v = createVideo(test.name, test.type, "3");
v.load();

// Open a new window for the following test. We open it here instead of in
// the event handler to ensure that our document load event doesn't fire while
// window.open is spinning the event loop.
var w = window.open("", "testWindow", "width=400,height=400");
testWindows.push(w);

v = createVideo(test.name, test.type, "4");
v.onloadstart = function(e) {
  // Using a new window to do this is a bit annoying, but if we use an iframe here,
  // delaying of the iframe's load event might interfere with the firing of our load event
  // in some confusing way. So it's simpler just to use another window.
  w.document.body.appendChild(v);
};
v.load(); // load started while in this document, this doc's load will block until
          // the video's finished loading (in the other document).

if (gRegisteredElements.length > 0) {
  SimpleTest.waitForExplicitFinish();
} else {
  todo(false, "No types supported");
}

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