test_SeekedEvent_mp4.html (1694B)
1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <title>MSE: Check that seeked event is fired prior loadeddata</title> 5 <script src="/tests/SimpleTest/SimpleTest.js"></script> 6 <script type="text/javascript" src="mediasource.js"></script> 7 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> 8 </head> 9 <body> 10 <pre id="test"> 11 <script class="testbody" type="text/javascript"> 12 13 SimpleTest.waitForExplicitFinish(); 14 15 runWithMSE(async (ms, el) => { 16 el.controls = true; 17 const events = ["seeked", "loadeddata", "playing"]; 18 let eventCount = 0; 19 events.forEach(type => el.addEventListener(type, 20 () => is(events[eventCount++], type, "events must come in order"))); 21 await once(ms, "sourceopen"); 22 ok(true, "Receive a sourceopen event"); 23 const videosb = ms.addSourceBuffer("video/mp4"); 24 is(el.readyState, el.HAVE_NOTHING, "readyState is HAVE_NOTHING"); 25 let p = once(el, "loadedmetadata"); 26 await fetchAndLoad(videosb, "bipbop/bipbop_video", ["init"], ".mp4"); 27 await p; 28 el.play(); 29 videosb.timestampOffset = 2; 30 is(el.readyState, el.HAVE_METADATA, "readyState is HAVE_METADATA"); 31 // Load [2, 3.606). 32 p = once(el, "play"); 33 await fetchAndLoad(videosb, "bipbop/bipbop_video", ["1"], ".m4s"); 34 await p; 35 await fetchAndLoad(videosb, "bipbop/bipbop_video", ["2"], ".m4s"); 36 // TODO: readyState should be at least HAVE_CURRENTDATA, see bug 1367993. 37 ok(el.readyState >= el.HAVE_METADATA, "readyState is HAVE_METADATA"); 38 el.currentTime = 2; 39 await Promise.all([once(el, "seeked"), once(el, "playing")]); 40 ok(true, "completed seek"); 41 is(eventCount, events.length, "Received expected number of events"); 42 SimpleTest.finish(); 43 }); 44 45 </script> 46 </pre> 47 </body> 48 </html>