test_bug654550.html (2635B)
1 <!DOCTYPE HTML> 2 <html> 3 <!-- 4 https://bugzilla.mozilla.org/show_bug.cgi?id=654550 5 --> 6 7 <head> 8 <title>Test for Bug 654550</title> 9 <script src="/tests/SimpleTest/SimpleTest.js"></script> 10 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/> 11 <script type="text/javascript" src="manifest.js"></script> 12 </head> 13 <body> 14 <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=654550">Mozilla Bug 654550</a> 15 <pre id="test"> 16 <script class="testbody" type="text/javascript"> 17 18 /* Test for Bug 654550 */ 19 20 // Parallel test must be disabled for media.video_stats.enabled is a global setting 21 // to prevent the setting from changing unexpectedly in the middle of the test. 22 PARALLEL_TESTS = 1; 23 SimpleTest.waitForExplicitFinish(); 24 var manager = new MediaTestManager; 25 26 function checkStats(v, aShouldBeEnabled) { 27 if (aShouldBeEnabled) { 28 ok(v.mozParsedFrames != 0, 29 "At least one value should be different from 0 if stats are enabled"); 30 } else { 31 ok(!v.mozParsedFrames, 32 "mozParsedFrames should be 0 if stats are disabled"); 33 ok(!v.mozDecodedFrames, 34 "mozDecodedFrames should be 0 if stats are disabled"); 35 ok(!v.mozPresentedFrames, 36 "mozPresentedFrames should be 0 if stats are disabled"); 37 ok(!v.mozPaintedFrames, 38 "mozPaintedFrames should be 0 if stats are disabled"); 39 } 40 41 } 42 43 function ontimeupdate_statsEnabled(event) { 44 var v = event.target; 45 v.removeEventListener('timeupdate', ontimeupdate_statsEnabled); 46 checkStats(v, true); 47 SpecialPowers.popPrefEnv( 48 function() { 49 v.addEventListener("timeupdate", ontimeupdate_statsDisabled); 50 }); 51 } 52 53 function ontimeupdate_statsDisabled(event) { 54 var v = event.target; 55 v.removeEventListener('timeupdate', ontimeupdate_statsDisabled); 56 checkStats(v, false); 57 removeNodeAndSource(v); 58 manager.finished(v.token); 59 } 60 61 function startTest(test, token) { 62 var v = document.createElement('video'); 63 v.token = token; 64 v.src = test.name; 65 // playback may reach the end before pref is changed for the duration is short 66 // set 'loop' to true to keep playing so that we won't miss 'timeupdate' events 67 v.loop = true; 68 manager.started(token); 69 SpecialPowers.pushPrefEnv({"set": [["media.video_stats.enabled", true]]}, 70 function() { 71 v.play(); 72 v.addEventListener("timeupdate", ontimeupdate_statsEnabled); 73 }); 74 } 75 76 SpecialPowers.pushPrefEnv({"set": [["media.video_stats.enabled", false]]}, 77 function() { 78 manager.runTests(gVideoTests, startTest); 79 }); 80 81 </script> 82 </pre> 83 </body> 84 </html>