test_seekToNextFrame.html (2390B)
1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <title>Test seekToNextFrame of media files that should play OK</title> 5 <script src="/tests/SimpleTest/SimpleTest.js"></script> 6 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> 7 <script type="text/javascript" src="manifest.js"></script> 8 </head> 9 <body> 10 <pre id="test"> 11 <script class="testbody" type="text/javascript"> 12 13 var manager = new MediaTestManager; 14 15 function startTest(test, token) { 16 var video = document.createElement('video'); 17 video.preload = "metadata"; 18 video.token = token; 19 video.seenSeeking = false; 20 video.seenEnded = false; 21 22 var handler = { 23 "ontimeout": function() { 24 Log(token, "timed out: ended=" + video.seenEnded); 25 } 26 }; 27 manager.started(token, handler); 28 29 video.src = test.name; 30 video.name = test.name; 31 32 function callSeekToNextFrame() { 33 video.seekToNextFrame().then( 34 () => { 35 if (!video.seenSeeking) { 36 ok(false, video.token + ": Should have already received seeking event."); 37 } 38 video.seenSeeking = false; 39 if (!video.ended) { 40 callSeekToNextFrame(); 41 } 42 }, 43 () => { 44 ok(false, video.token + ": seekToNextFrame() failed."); 45 } 46 ); 47 } 48 49 var onLoadedmetadata = function() { return function() { 50 callSeekToNextFrame(); 51 }}(test, video); 52 53 var finish = function() { 54 video.finished = true; 55 video.removeEventListener("loadedmetadata", onLoadedmetadata); 56 video.removeEventListener("seeking", onSeeking); 57 removeNodeAndSource(video); 58 manager.finished(video.token); 59 } 60 61 var onEnded = function(t, v) { return function() { 62 v.seenEnded = true; 63 finish(); 64 }}(test, video); 65 66 var onSeeking = function(t, v) { return function() { 67 if (v.seenSeeking) { 68 ok(false, v.token + ": Should yet receive seeking event."); 69 } 70 v.seenSeeking = true; 71 }}(test, video); 72 73 video.addEventListener("loadedmetadata", onLoadedmetadata); 74 video.addEventListener("seeking", onSeeking); 75 video.addEventListener("ended", onEnded); 76 77 document.body.appendChild(video); 78 } 79 80 SimpleTest.waitForExplicitFinish(); 81 SpecialPowers.pushPrefEnv( 82 { 83 "set": [ 84 ["media.seekToNextFrame.enabled", true ], 85 ["media.dormant-on-pause-timeout-ms", -1] 86 ] 87 }, 88 function() { 89 manager.runTests(gSeekToNextFrameTests, startTest); 90 }); 91 92 </script> 93 </pre> 94 </body> 95 </html>