diff options
Diffstat (limited to 'dom/media/test/test_looping_eventsOrder.html')
-rw-r--r-- | dom/media/test/test_looping_eventsOrder.html | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/dom/media/test/test_looping_eventsOrder.html b/dom/media/test/test_looping_eventsOrder.html new file mode 100644 index 0000000000..7d070de72f --- /dev/null +++ b/dom/media/test/test_looping_eventsOrder.html @@ -0,0 +1,52 @@ +<!DOCTYPE HTML> +<html> +<head> + <title>Looping events order</title> + <script 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> +<script type="text/javascript"> +/** + * This test is used to ensure the events order when media is looping back to + * the start position. We should see events in following order. + * 'seeking' -> 'timeupdate' -> 'seeked'. + */ +SimpleTest.waitForExplicitFinish(); + +var tests = [ + { name:"small-shot.ogg", type:"audio/ogg" }, + { name:"seek-short.webm", type:"video/webm" } +]; + +async function testTimeupdateChanged({name, type}) { + info(`- start testPlay for name=${name} -`); + const element = document.createElement(getMajorMimeType(type)); + element.src = name; + element.loop = true; + + await once(element, "canplay"); + ok(await element.play().then(() => true, () => false), `start playing ${name}`); + + let gotTimeUpdated = false; + await once(element, "seeking"); + element.addEventListener("timeupdate", function() { + gotTimeUpdated = true; + }, {once: true}); + await once(element, "seeked"); + ok(gotTimeUpdated, "Got timeupdate between seeking and seeked."); + + removeNodeAndSource(element); +} + +(async function startTest() { + for (let test of tests) { + await testTimeupdateChanged(test); + } + SimpleTest.finish(); +})(); + +</script> +</pre> +</body> +</html> |