fune/dom/media/test/test_background_video_suspend.html
Narcis Beleuzu 6a96b612b6 Backed out 5 changesets (bug 1556854) for mda failures on /test_media_selection.html CLOSED TREE
Backed out changeset 61a4022333fa (bug 1556854)
Backed out changeset cfd809c63877 (bug 1556854)
Backed out changeset 057cc9878594 (bug 1556854)
Backed out changeset 0f02ff8a5c67 (bug 1556854)
Backed out changeset 8719996c65b3 (bug 1556854)
2019-10-24 13:47:37 +03:00

81 lines
No EOL
2.1 KiB
HTML

<!DOCTYPE html>
<meta charset="utf-8">
<title>Test Background Video Suspends</title>
<script src="/tests/SimpleTest/SimpleTest.js"></script>
<script src="manifest.js"></script>
<script src="background_video.js"></script>
<link rel="stylesheet" href="/tests/SimpleTest/test.css" />
<script type="text/javascript">
"use strict";
var manager = new MediaTestManager;
var MIN_DELAY = 100;
function testDelay(v, start, min) {
let end = performance.now();
let delay = end - start;
ok(delay > min, `${v.token} suspended with a delay of ${delay} ms`);
}
async function runTest(test, token) {
let video = appendVideoToDocWithoutLoad(token);
manager.started(token);
let visible = waitUntilVisible(video);
let ended = nextVideoEnded(video);
let playing = nextVideoPlaying(video);
let resumes = nextVideoResumes(video);
let suspends = nextVideoSuspends(video);
Log(token, "Waiting until video becomes visible");
await visible;
Log(token, "Waiting for metadata loaded");
await loadAndWaitUntilLoadedmetadata(video, test.name);
Log(token, "Start playing");
video.play();
Log(token, "Waiting for video playing");
await playing;
let start = performance.now();
Log(token, "Set hidden");
video.setVisible(false);
Log(token, "Waiting for video suspend");
await suspends;
testDelay(video, start, MIN_DELAY);
Log(token, "Set visible");
video.setVisible(true);
Log(token, "Waiting for video resume");
await resumes;
Log(token, "Waiting for ended");
await ended;
ok(video.currentTime >= video.duration, 'current time approximates duration.');
removeNodeAndSource(video);
manager.finished(token);
}
startTest({
desc: 'Test Background Video Suspends',
prefs: [
["media.test.video-suspend", true],
["media.suspend-bkgnd-video.enabled", true],
// Use a short delay to ensure video decode suspend happens before end
// of video.
["media.suspend-bkgnd-video.delay-ms", MIN_DELAY],
["privacy.reduceTimerPrecision", false]
],
tests: gDecodeSuspendTests,
runTest: runTest
});
</script>