<!DOCTYPE html>
<html>
    <head>
        <title>media file served as 'text/plain'</title>
        <script src=../../media-resources/media-file.js></script>
        <script src=../../media-resources/video-test.js></script>
        <script>
            function loadedmetadata(evt) 
            {
                logResult(true, "loaded media file served as text with type= attribute");
                endTest();
            }

            function error(evt)
            {
                logResult(false, "failed trying to load media file served as text");
                endTest();
            }

            function start() 
            {
                findMediaElement();

                waitForEvent('loadedmetadata', loadedmetadata);
                waitForEvent("error", error);
                waitForEvent("loadstart");
                testExpected("video.error", null);                

                var movie = findMediaFile("video", "resources/test");
                var source = document.createElement('source');
                source.src = "/media/video-throttled-load.cgi?name=" + movie + "&throttle=99999&nph=1&type=text/plain";
                source.type = mimeTypeForFile(movie);
                video.appendChild(source);
            }
        </script>
    </head>

    <body onload="start()">
        <video controls></video>
    </body>
</html>
