summaryrefslogtreecommitdiffstats
path: root/dom/media/test/test_reset_src.html
diff options
context:
space:
mode:
Diffstat (limited to 'dom/media/test/test_reset_src.html')
-rw-r--r--dom/media/test/test_reset_src.html98
1 files changed, 98 insertions, 0 deletions
diff --git a/dom/media/test/test_reset_src.html b/dom/media/test/test_reset_src.html
new file mode 100644
index 000000000..0b05eba49
--- /dev/null
+++ b/dom/media/test/test_reset_src.html
@@ -0,0 +1,98 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=804875
+-->
+
+<head>
+ <title>Test for bug 804875</title>
+ <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+ <script type="text/javascript" src="manifest.js"></script>
+ <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
+</head>
+<body>
+<a target="_blank"
+href="https://bugzilla.mozilla.org/show_bug.cgi?id=804875">Mozilla Bug 804875</a>
+
+<canvas></canvas>
+
+<pre id="test">
+<script class="testbody" type="text/javascript">
+
+var manager = new MediaTestManager;
+
+function finish(v) {
+ removeNodeAndSource(v);
+ manager.finished(v.token);
+}
+
+function onLoadedData_Audio(e) {
+ var t = e.target;
+ is(t.videoHeight, 0, t.name + ": videoHeight should be zero when there is no video.");
+ is(t.videoWidth, 0, t.name + ": videoWidth should be zero when there is no video.");
+ is(t.mozPaintedFrames, 0, t.name + ": mozPaintedFrames should be zero when there is no video.");
+ is(t.mozFrameDelay, 0, t.name + ": mozFrameDelay should be zero when there is no video.");
+ var c = document.getElementsByTagName("canvas")[0].getContext("2d");
+ try {
+ c.drawImage(t, 0, 0, t.videoHeight, t.videoWidth);
+ } catch (e) {
+ ok(true, t.name + ": Trying to draw to a canvas should throw, since we don't have a frame anymore");
+ finish(t);
+ return;
+ }
+ ok(false, t.name + ": We should not succeed to draw a video frame on the canvas.");
+ finish(t);
+}
+
+function onTimeUpdate_Video(e) {
+ var t = e.target;
+ if (t.currentTime < t.duration / 4) {
+ return;
+ }
+ t.removeEventListener("timeupdate", onTimeUpdate_Video);
+ // There's no guarantee that a video frame composite notification reaches
+ // us before timeupdate fires.
+ ok(t.mozPaintedFrames >= 0, t.name + ": mozPaintedFrames should be positive or zero, is " + t.mozPaintedFrames + ".");
+ ok(t.mozFrameDelay >= 0, t.name + ": mozFrameDelay should be positive or zero, is " + t.mozFrameDelay + ".");
+
+ if (t._firstTime) {
+ t.src = t.src;
+ t._firstTime = false;
+ } else {
+ var source = getPlayableAudio(gPlayTests);
+ if (!source) {
+ todo("No audio file available.")
+ finish(t);
+ } else {
+ t.removeEventListener("loadeddata", onLoadedData_Video);
+ t.addEventListener("loadeddata", onLoadedData_Audio);
+ t.src = source.name;
+ }
+ }
+}
+
+function onLoadedData_Video(e) {
+ var t = e.target;
+ isnot(t.videoHeight, 0, t.name + ": We should have a videoHeight.");
+ isnot(t.videoWidth, 0, t.name + ": We should have a videoWidth.");
+ t.addEventListener("timeupdate", onTimeUpdate_Video);
+ t.play();
+}
+
+function startTest(test, token) {
+ var v = document.createElement('video');
+ document.body.appendChild(v);
+ v._firstTime = true;
+ v.addEventListener("loadeddata", onLoadedData_Video);
+ v.src = test.name;
+ v.token = token;
+ v.name = test.name;
+ v.play();
+ manager.started(token);
+}
+
+manager.runTests(getPlayableVideos(gSmallTests.concat(gSeekTests)), startTest);
+</script>
+</pre>
+</body>
+</html>