test_looping_eventsOrder.html (1443B)
1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <title>Looping events order</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 <script type="text/javascript"> 10 /** 11 * This test is used to ensure the events order when media is looping back to 12 * the start position. We should see events in following order. 13 * 'seeking' -> 'timeupdate' -> 'seeked'. 14 */ 15 SimpleTest.waitForExplicitFinish(); 16 17 var tests = [ 18 { name:"small-shot.ogg", type:"audio/ogg" }, 19 { name:"seek-short.webm", type:"video/webm" } 20 ]; 21 22 async function testTimeupdateChanged({name, type}) { 23 info(`- start testPlay for name=${name} -`); 24 const element = document.createElement(getMajorMimeType(type)); 25 element.src = name; 26 element.loop = true; 27 28 await once(element, "canplay"); 29 ok(await element.play().then(() => true, () => false), `start playing ${name}`); 30 31 let gotTimeUpdated = false; 32 await once(element, "seeking"); 33 element.addEventListener("timeupdate", function() { 34 gotTimeUpdated = true; 35 }, {once: true}); 36 await once(element, "seeked"); 37 ok(gotTimeUpdated, "Got timeupdate between seeking and seeked."); 38 39 removeNodeAndSource(element); 40 } 41 42 (async function startTest() { 43 for (let test of tests) { 44 await testTimeupdateChanged(test); 45 } 46 SimpleTest.finish(); 47 })(); 48 49 </script> 50 </pre> 51 </body> 52 </html>