summaryrefslogtreecommitdiffstats
path: root/dom/media/test/test_delay_load.html
diff options
context:
space:
mode:
Diffstat (limited to 'dom/media/test/test_delay_load.html')
-rw-r--r--dom/media/test/test_delay_load.html108
1 files changed, 108 insertions, 0 deletions
diff --git a/dom/media/test/test_delay_load.html b/dom/media/test/test_delay_load.html
new file mode 100644
index 0000000000..05877aa911
--- /dev/null
+++ b/dom/media/test/test_delay_load.html
@@ -0,0 +1,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) {
+ SimpleTest.waitForExplicitFinish();
+} else {
+ todo(false, "No types supported");
+}
+
+</script>
+</pre>
+</body>
+</html>