| Index: LayoutTests/http/tests/media/media-source/mediasource-trackdefault.html
 | 
| diff --git a/LayoutTests/http/tests/media/media-source/mediasource-trackdefault.html b/LayoutTests/http/tests/media/media-source/mediasource-trackdefault.html
 | 
| new file mode 100644
 | 
| index 0000000000000000000000000000000000000000..643750992e61be7efb50edd6e7b4946b8713595b
 | 
| --- /dev/null
 | 
| +++ b/LayoutTests/http/tests/media/media-source/mediasource-trackdefault.html
 | 
| @@ -0,0 +1,95 @@
 | 
| +<!DOCTYPE html>
 | 
| +<html>
 | 
| +    <head>
 | 
| +        <script src="/w3c/resources/testharness.js"></script>
 | 
| +        <script src="/w3c/resources/testharnessreport.js"></script>
 | 
| +
 | 
| +        <link rel='stylesheet' href='/w3c/resources/testharness.css'>
 | 
| +    </head>
 | 
| +    <body>
 | 
| +        <div id="log"></div>
 | 
| +        <script>
 | 
| +            function checkConstructionSucceeds(type, language, label, kinds, byteStreamTrackID)
 | 
| +            {
 | 
| +                var trackDefault = new TrackDefault(type, language, label, kinds, byteStreamTrackID);
 | 
| +                assert_equals(trackDefault.type, type, "type()");
 | 
| +                assert_equals(trackDefault.language, language, "language()");
 | 
| +                assert_equals(trackDefault.label, label, "label()");
 | 
| +                assert_equals(trackDefault.byteStreamTrackID, byteStreamTrackID, "byteStreamTrackID()");
 | 
| +                assert_equals(trackDefault.kinds.length, kinds.length, "kinds().length");
 | 
| +                for (var i = 0; i < kinds.length; ++i) {
 | 
| +                    assert_equals(trackDefault.kinds[i], kinds[i], "kinds() contents");
 | 
| +                }
 | 
| +            }
 | 
| +
 | 
| +            function checkConstructionFails(type, language, label, kinds, byteStreamTrackID)
 | 
| +            {
 | 
| +                var trackDefault = null;
 | 
| +                assert_throws("InvalidAccessError",
 | 
| +                    function() { trackDefault = new TrackDefault(type, language, label, kinds, byteStreamTrackID); },
 | 
| +                    "TrackDefault construction threw an exception");
 | 
| +            }
 | 
| +
 | 
| +            function trackDefaultConstructionTest(type, language, label, kinds, byteStreamTrackID, expectation, description)
 | 
| +            {
 | 
| +                test(function()
 | 
| +                {
 | 
| +                    if (expectation)
 | 
| +                        checkConstructionSucceeds(type, language, label, kinds, byteStreamTrackID);
 | 
| +                    else
 | 
| +                        checkConstructionFails(type, language, label, kinds, byteStreamTrackID);
 | 
| +                }, description + ": type '" + type + "', language '" + language + "', label '" + label + "', multiple kinds, byteStreamTrackID '" + byteStreamTrackID + "'");
 | 
| +
 | 
| +                // If all of |kinds| are expected to succeed, also test each kind individually.
 | 
| +                if (!expectation || kinds.length <= 1)
 | 
| +                    return;
 | 
| +                for (var i = 0; i < kinds.length; ++i) {
 | 
| +                    test(function()
 | 
| +                    {
 | 
| +                        checkConstructionSucceeds(type, language, label, new Array(kinds[i]), byteStreamTrackID);
 | 
| +                    }, description + ": type '" + type + "', language '" + language + "', label '" + label + "', kind '" + kinds[i] + "', byteStreamTrackID '" + byteStreamTrackID + "'");
 | 
| +                }
 | 
| +            }
 | 
| +
 | 
| +            var VALID_AUDIO_TRACK_KINDS = [
 | 
| +                "alternative",
 | 
| +                "descriptions",
 | 
| +                "main",
 | 
| +                "main-desc",
 | 
| +                "translation",
 | 
| +                "commentary",
 | 
| +                "",
 | 
| +            ];
 | 
| +
 | 
| +            var VALID_VIDEO_TRACK_KINDS = [
 | 
| +                "alternative",
 | 
| +                "captions",
 | 
| +                "main",
 | 
| +                "sign",
 | 
| +                "subtitles",
 | 
| +                "commentary",
 | 
| +                "",
 | 
| +            ];
 | 
| +
 | 
| +            var VALID_TEXT_TRACK_KINDS = [
 | 
| +                "subtitles",
 | 
| +                "captions",
 | 
| +                "descriptions",
 | 
| +                "chapters",
 | 
| +                "metadata",
 | 
| +            ];
 | 
| +
 | 
| +            trackDefaultConstructionTest("audio", "en-US", "audio label", VALID_AUDIO_TRACK_KINDS, "1", true, "Test valid audio kinds");
 | 
| +
 | 
| +            trackDefaultConstructionTest("video", "en-US", "video label", VALID_VIDEO_TRACK_KINDS, "1", true, "Test valid video kinds");
 | 
| +
 | 
| +            trackDefaultConstructionTest("text", "en-US", "text label", VALID_TEXT_TRACK_KINDS, "1", true, "Test valid text kinds");
 | 
| +
 | 
| +            trackDefaultConstructionTest("audio", "en-US", "audio label", VALID_VIDEO_TRACK_KINDS, "1", false, "Test mixed valid and invalid audio kinds");
 | 
| +
 | 
| +            trackDefaultConstructionTest("video", "en-US", "video label", VALID_AUDIO_TRACK_KINDS, "1", false, "Test mixed valid and invalid video kinds");
 | 
| +
 | 
| +            trackDefaultConstructionTest("text", "en-US", "text label", VALID_VIDEO_TRACK_KINDS, "1", false, "Test mixed valid and invalid text kinds");
 | 
| +        </script>
 | 
| +    </body>
 | 
| +</html>
 | 
| 
 |