<!DOCTYPE HTML> <html> <head> <title>MSE: seekable attribute before end of stream</title> <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> <script type="text/javascript" src="mediasource.js"></script> <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> </head> <body> <pre id="test"> <script class="testbody" type="text/javascript"> SimpleTest.waitForExplicitFinish(); runWithMSE(function (ms, v) { ms.addEventListener("sourceopen", function () { var sb = ms.addSourceBuffer("video/mp4"); fetchWithXHR("bipbop/bipbop2s.mp4", function (arrayBuffer) { // 25819 is the offset of the first media segment's end sb.appendBuffer(new Uint8Array(arrayBuffer, 0, 25819)); }); var target = 1.3; v.addEventListener("loadeddata", function onloadeddata() { v.removeEventListener("loadeddata", onloadeddata); ok(v.readyState >= v.HAVE_CURRENT_DATA, "readyState is >= CURRENT_DATA"); v.currentTime = target; }); v.addEventListener("seeking", function () { is(v.readyState, v.HAVE_METADATA, "readyState is HAVE_METADATA"); fetchWithXHR("bipbop/bipbop2s.mp4", function (arrayBuffer) { // 25819 is the offset of the first media segment's end sb.addEventListener("updateend", function () { ms.endOfStream(); }); sb.appendBuffer(new Uint8Array(arrayBuffer, 25819)); }); }); v.addEventListener("seeked", function () { SimpleTest.finish(); }); }); }); </script> </pre> </body> </html>