<!DOCTYPE html>
<html>
<head>
    <title>mock-media-source</title>
    <script src="mock-media-source.js"></script>
    <script src="../video-test.js"></script>
    <script>
    var source;
    var sourceBuffer;

    var requestLength = 200000;
    var nextRequest = 0;
    var totalLength = 100;

    if (window.internals)
        internals.initializeMockMediaSource();

    function runTest() {
        findMediaElement();
        source = new MediaSource();
        source.addEventListener('sourceopen', startLoad);
        waitForEvent('loadedmetadata');
        waitForEvent('loadeddata');
        waitForEvent('canplay');
        waitForEventAndEnd('canplaythrough');
        run('video.src = URL.createObjectURL(source)');
    }

    function startLoad() {
        sourceBuffer = source.addSourceBuffer('video/mock; codecs="mock"');
        sourceBuffer.addEventListener('update', sourceUpdated);
        nextRequest = 0;

        // Make an init segment with 1 video track
        var init = makeAInit(100, [makeATrack(1, 'mock', TRACK_KIND.VIDEO)]);
        sourceBuffer.appendBuffer(init)
    }

    function sourceUpdated() {
        source.activeSourceBuffers.length;
        if (nextRequest < totalLength) {
            sourceBuffer.appendBuffer(makeASample(nextRequest, nextRequest, 1, 1, 0));
            ++nextRequest;
        }
    }
    </script>
</head>
<body onload="runTest()">
    <video controls width=960 height=510></video>
</body>
</html>
