summaryrefslogtreecommitdiffstats
path: root/dom/media/test/test_video_dimensions.html
diff options
context:
space:
mode:
Diffstat (limited to 'dom/media/test/test_video_dimensions.html')
-rw-r--r--dom/media/test/test_video_dimensions.html96
1 files changed, 96 insertions, 0 deletions
diff --git a/dom/media/test/test_video_dimensions.html b/dom/media/test/test_video_dimensions.html
new file mode 100644
index 000000000..87a6a37cf
--- /dev/null
+++ b/dom/media/test/test_video_dimensions.html
@@ -0,0 +1,96 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+ <title>Test that a video element has set video dimensions on loadedmetadata</title>
+ <script type="text/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>
+</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.src = URL.createObjectURL(v2.mozCaptureStreamUntilEnded());
+ v2.play();
+ vout.play();
+ }
+
+ if (numVideoElementsFinished === 3) {
+ removeNodeAndSource(v2);
+ removeNodeAndSource(vout);
+ manager.finished(token);
+ }
+ };
+ var setupElement = function(v, id) {
+ 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>