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
|
<!DOCTYPE HTML>
<html>
<head>
<title>Test that a video element has set video dimensions on loadedmetadata</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>
</head>
<body>
<pre id="test">
<script class="testbody" type="text/javascript">
var manager = new MediaTestManager;
var startTest = function(test, token) {
manager.started(token);
var v1 = document.createElement('video');
var v2 = document.createElement('video');
var vout = document.createElement('video');
// Avoid a race for hardware resources between v1 and v2 on platforms with
// a hardware decoder, like B2G.
v1.preload = 'none';
v2.preload = 'none';
var numVideoElementsFinished = 0;
var ondurationchange = function(ev) {
var v = ev.target;
info(v.testName + " got durationchange");
v.durationchange = true;
};
var onresize = function(ev) {
var v = ev.target;
info(v.testName + " got resize");
ok(!v.resize, v.testName + " should only fire resize once for same size");
v.resize = true;
ok(v.durationchange, v.testName +
" durationchange event should have been emitted before resize");
is(v.videoWidth, test.width, v.testName + " width should be set on resize");
is(v.videoHeight, test.height, v.testName + " height should be set on resize");
};
var onloadedmetadata = function(ev) {
var v = ev.target;
info(v.testName + " got loadedmetadata");
ok(!v.loadedmetadata, v.testName + " should only fire loadedmetadata once");
v.loadedmetadata = true;
ok(v.resize, v.testName +
" resize event should have been emitted before loadedmetadata");
numVideoElementsFinished += 1;
if (v === v1) {
removeNodeAndSource(v1);
v2.load();
}
if (v === v2) {
vout.srcObject = v2.mozCaptureStreamUntilEnded();
v2.play();
vout.play();
}
if (numVideoElementsFinished === 3) {
removeNodeAndSource(v2);
removeNodeAndSource(vout);
manager.finished(token);
}
};
var setupElement = function(v) {
v.durationchange = false;
v.ondurationchange = ondurationchange;
v.resize = false;
v.onresize = onresize;
v.loadedmetadata = false;
v.onloadedmetadata = onloadedmetadata;
document.body.appendChild(v);
};
v1.testName = test.name;
v2.testName = test.name + " (Captured)";
vout.testName = test.name + " (Stream)";
v1.src = test.name;
v2.src = test.name;
setupElement(v1, "v1");
setupElement(v2, "v2");
setupElement(vout, "vout");
v1.play();
};
manager.runTests(getPlayableVideos(gSmallTests), startTest);
</script>
</pre>
</body>
</html>
|