test_background_video_suspend.html (2178B)
1 <!DOCTYPE html> 2 <meta charset="utf-8"> 3 <title>Test Background Video Suspends</title> 4 <script src="/tests/SimpleTest/SimpleTest.js"></script> 5 <script src="manifest.js"></script> 6 <script src="background_video.js"></script> 7 <link rel="stylesheet" href="/tests/SimpleTest/test.css" /> 8 <script type="text/javascript"> 9 "use strict"; 10 11 var manager = new MediaTestManager; 12 13 var MIN_DELAY = 100; 14 15 function testDelay(v, start, min) { 16 let end = performance.now(); 17 let delay = end - start; 18 ok(delay > min, `${v.token} suspended with a delay of ${delay} ms`); 19 } 20 21 async function runTest(test, token) { 22 let video = appendVideoToDocWithoutLoad(token); 23 manager.started(token); 24 25 let visible = waitUntilVisible(video); 26 let ended = nextVideoEnded(video); 27 let playing = nextVideoPlaying(video); 28 let resumes = nextVideoResumes(video); 29 let suspends = nextVideoSuspends(video); 30 31 Log(token, "Waiting until video becomes visible"); 32 await visible; 33 34 Log(token, "Waiting for metadata loaded"); 35 await loadAndWaitUntilLoadedmetadata(video, test.name); 36 37 Log(token, "Start playing"); 38 video.play(); 39 40 Log(token, "Waiting for video playing"); 41 await playing; 42 43 let start = performance.now(); 44 45 Log(token, "Set hidden"); 46 video.setVisible(false); 47 48 Log(token, "Waiting for video suspend"); 49 await suspends; 50 51 testDelay(video, start, MIN_DELAY); 52 53 Log(token, "Set visible"); 54 video.setVisible(true); 55 56 Log(token, "Waiting for video resume"); 57 await resumes; 58 59 Log(token, "Waiting for ended"); 60 await ended; 61 62 ok(video.currentTime >= video.duration, 'current time approximates duration.'); 63 64 removeNodeAndSource(video); 65 manager.finished(token); 66 } 67 68 startTest({ 69 desc: 'Test Background Video Suspends', 70 prefs: [ 71 ["media.test.video-suspend", true], 72 ["media.suspend-background-video.enabled", true], 73 // Use a short delay to ensure video decode suspend happens before end 74 // of video. 75 ["media.suspend-background-video.delay-ms", MIN_DELAY], 76 ["privacy.reduceTimerPrecision", false] 77 ], 78 tests: gDecodeSuspendTests, 79 runTest 80 }); 81 </script>