test_SeekNoData_mp4.html (1893B)
1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <title>MSE: basic functionality</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 await once(ms, "sourceopen"); 18 ok(true, "Receive a sourceopen event"); 19 const audiosb = ms.addSourceBuffer("audio/mp4"); 20 const videosb = ms.addSourceBuffer("video/mp4"); 21 el.addEventListener("error", e => { 22 ok(false, `should not fire ${e.type} event`); 23 SimpleTest.finish(); 24 }); 25 is(el.readyState, el.HAVE_NOTHING, "readyState is HAVE_NOTHING"); 26 must_not_throw(() => el.currentTime = 3, "setting currentTime is valid"); 27 is(el.currentTime, 3, "currentTime is default playback start position"); 28 is(el.seeking, false, "seek not started with HAVE_NOTHING"); 29 await Promise.all([ 30 fetchAndLoad(audiosb, "bipbop/bipbop_audio", ["init"], ".mp4"), 31 fetchAndLoad(videosb, "bipbop/bipbop_video", ["init"], ".mp4"), 32 once(el, "loadedmetadata"), 33 ]); 34 const p = once(el, "seeking"); 35 el.play(); 36 el.currentTime = 5; 37 is(el.readyState, el.HAVE_METADATA, "readyState is HAVE_METADATA"); 38 is(el.seeking, true, "seek not started with HAVE_METADATA"); 39 is(el.currentTime, 5, "currentTime is seek position"); 40 await p; 41 ok(true, "Got seeking event"); 42 await Promise.all([ 43 once(el, "seeked"), 44 fetchAndLoad(audiosb, "bipbop/bipbop_audio", range(5, 9), ".m4s"), 45 fetchAndLoad(videosb, "bipbop/bipbop_video", range(6, 10), ".m4s"), 46 ]); 47 ok(true, "Got seeked event"); 48 ok(el.currentTime >= 5, "Time >= 5"); 49 ms.endOfStream(); 50 await once(el, "ended"); 51 SimpleTest.finish(); 52 }); 53 54 </script> 55 </pre> 56 </body> 57 </html>