<!doctype html>
<html>
    <head>
        <title>VideoTrack properties read from input stream metadata</title>
        <script src="../../resources/testharness.js"></script>
        <script src="../../resources/testharnessreport.js"></script>
        <script src="../media-file.js"></script>
    </head>
    <body>
        <div id="log"></div>
        <script>
            async_test(function(t)
            {
                var e = document.createElement("video");
                e.src = "../content/test.webm";

                e.onloadedmetadata = t.step_func_done(function()
                {
                    assert_equals(e.videoTracks.length, 1, "videoTracks.length");
                    assert_true(e.videoTracks[0].selected, "videoTrack.selected");
                    assert_equals(e.videoTracks[0].id, "1", "videoTrack.id");
                    assert_equals(e.videoTracks[0].kind, "main", "videoTrack.kind");
                    assert_equals(e.videoTracks[0].label, "", "videoTrack.label");
                    assert_equals(e.videoTracks[0].language, "", "videoTrack.language");
                });
            });
        </script>
    </body>
</html>
