| 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..61dcd786e194baed09f04f75c7706accf63e62ac
|
| --- /dev/null
|
| +++ b/LayoutTests/http/tests/media/media-source/mediasource-trackdefault.html
|
| @@ -0,0 +1,109 @@
|
| +<!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_array_equals(trackDefault.kinds, kinds, "kinds");
|
| + }
|
| +
|
| + function checkConstructionFails(type, language, label, kinds, byteStreamTrackID)
|
| + {
|
| + assert_throws(new TypeError(),
|
| + function() { 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");
|
| +
|
| + trackDefaultConstructionTest("invalid type", "en-US", "label", VALID_AUDIO_TRACK_KINDS, "1", false, "Test invalid 'type' parameter type passed to TrackDefault constructor");
|
| +
|
| + test(function()
|
| + {
|
| + checkConstructionFails("audio", "en-US", "label", "this is not a valid sequence", "1");
|
| + }, "Test invalid 'kinds' parameter type passed to TrackDefault constructor");
|
| +
|
| + test(function()
|
| + {
|
| + var trackDefault = new TrackDefault("audio", "en-US", "label", VALID_AUDIO_TRACK_KINDS, "1");
|
| + var kinds = trackDefault.kinds;
|
| + kinds[0] = "invalid kind";
|
| + assert_equals(kinds[0], "invalid kind", "local kinds is updated");
|
| + assert_equals(VALID_AUDIO_TRACK_KINDS[0], "alternative", "local original kinds unchanged");
|
| + assert_array_equals(trackDefault.kinds, VALID_AUDIO_TRACK_KINDS, "trackDefault kinds unchanged");
|
| + }, "Test updating the retval of TrackDefault.kinds does not modify TrackDefault.kinds");
|
| +
|
| + </script>
|
| + </body>
|
| +</html>
|
|
|