<html>
    <head>

        <script src=video-test.js></script>
        <script>
            function testOnLoadStart()
            {
                consoleWrite("EVENT(" + event.type + ")");
                testExpected("!event.lengthComputable", true);
                testExpected("event.total", 0);
                testExpected("event.loaded", 0);
            }
        
            function testOnLoad()
            {
                consoleWrite("EVENT(" + event.type + ")");
                testExpected("event.lengthComputable", true);
                testExpected("event.loaded", 0, '>');
                testExpected("event.total", 0, '>');
                endTest();
            }

            function start()
            {
                findMediaElement();
            }
        </script>
    </head>

    <body onload="start()">

        <video src="content/test.mp4" controls onloadstart="testOnLoadStart()" onload="testOnLoad()">
        </video>

    </body>
</html>
