summaryrefslogtreecommitdiffstats
path: root/dom/media/test/test_bug654550.html
diff options
context:
space:
mode:
Diffstat (limited to 'dom/media/test/test_bug654550.html')
-rw-r--r--dom/media/test/test_bug654550.html84
1 files changed, 84 insertions, 0 deletions
diff --git a/dom/media/test/test_bug654550.html b/dom/media/test/test_bug654550.html
new file mode 100644
index 000000000..07922874d
--- /dev/null
+++ b/dom/media/test/test_bug654550.html
@@ -0,0 +1,84 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=654550
+-->
+
+<head>
+ <title>Test for Bug 654550</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>
+<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=654550">Mozilla Bug 654550</a>
+<pre id="test">
+<script class="testbody" type="text/javascript">
+
+ /* Test for Bug 654550 */
+
+ // Parallel test must be disabled for media.video_stats.enabled is a global setting
+ // to prevent the setting from changing unexpectedly in the middle of the test.
+ PARALLEL_TESTS = 1;
+ SimpleTest.waitForExplicitFinish();
+ var manager = new MediaTestManager;
+
+ function checkStats(v, aShouldBeEnabled) {
+ if (aShouldBeEnabled) {
+ ok(v.mozParsedFrames != 0,
+ "At least one value should be different from 0 if stats are enabled");
+ } else {
+ ok(!v.mozParsedFrames,
+ "mozParsedFrames should be 0 if stats are disabled");
+ ok(!v.mozDecodedFrames,
+ "mozDecodedFrames should be 0 if stats are disabled");
+ ok(!v.mozPresentedFrames,
+ "mozPresentedFrames should be 0 if stats are disabled");
+ ok(!v.mozPaintedFrames,
+ "mozPaintedFrames should be 0 if stats are disabled");
+ }
+
+ }
+
+ function ontimeupdate_statsEnabled(event) {
+ var v = event.target;
+ v.removeEventListener('timeupdate', ontimeupdate_statsEnabled, false);
+ checkStats(v, true);
+ SpecialPowers.popPrefEnv(
+ function() {
+ v.addEventListener("timeupdate", ontimeupdate_statsDisabled);
+ });
+ }
+
+ function ontimeupdate_statsDisabled(event) {
+ var v = event.target;
+ v.removeEventListener('timeupdate', ontimeupdate_statsDisabled, false);
+ checkStats(v, false);
+ removeNodeAndSource(v);
+ manager.finished(v.token);
+ }
+
+ function startTest(test, token) {
+ var v = document.createElement('video');
+ v.token = token;
+ v.src = test.name;
+ // playback may reach the end before pref is changed for the duration is short
+ // set 'loop' to true to keep playing so that we won't miss 'timeupdate' events
+ v.loop = true;
+ manager.started(token);
+ SpecialPowers.pushPrefEnv({"set": [["media.video_stats.enabled", true]]},
+ function() {
+ v.play();
+ v.addEventListener("timeupdate", ontimeupdate_statsEnabled);
+ });
+ }
+
+ SpecialPowers.pushPrefEnv({"set": [["media.video_stats.enabled", false]]},
+ function() {
+ manager.runTests(gVideoTests, startTest);
+ });
+
+</script>
+</pre>
+</body>
+</html>