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 type="application/javascript" 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>
|