blob: 0fa8b05c3580670c05bc88059ae9ef7b2caf59fd [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style>
video { background-color: yellow; width: 320px; height: 240px;}
</style>
<script src=../media-file.js></script>
<script src=../video-test.js></script>
<script>
var timer = null;
var expectedLanguage;
var testList =
{
current : -1,
tests :
[
{
description: "a track language matches one of the user's preferred languages exactly",
languages : ['fr', 'en', 'jp'],
expectedLanguage : "jp",
},
{
description: "a track language without locale exactly matches one of the user's preferred languages",
languages : ['fr-CH', 'da'],
expectedLanguage : "fr-CH",
},
{
description: "a track language without locale matches one of the user's preferred languages without locale",
languages : ['fr', 'es-MX'],
expectedLanguage : "es-MX",
},
{
description: "no track language matches any of the user's preferred languages",
languages : ['fa', 'ru', 'no'],
expectedLanguage : "fa",
},
]
};
function runNextTest()
{
consoleWrite("");
testList.current++;
if (testList.current >= testList.tests.length) {
var tracks = document.querySelectorAll('track');
testExpected("video.textTracks.length", tracks.length);
endTest();
return;
}
consoleWrite("<b>Test: </b> <em>"+ testList.tests[testList.current].description + ".</em>");
createTrackElements(testList.tests[testList.current].languages);
}
function trackLoaded()
{
consoleWrite("EVENT(load)");
// Don't log the event name because the order of the two events in not predictable.
track = event.target;
testExpected("track.readyState", HTMLTrackElement.LOADED);
testExpected("track.srclang", testList.tests[testList.current].expectedLanguage);
timer = setTimeout(runNextTest, 200);
}
function setPreferences()
{
if (!window.internals) {
consoleWrite("<b>** This test only works in DRT! **<" + "/b>");
return;
}
consoleWrite("<i>**Set track preferences and user preferred languages<" + "/i>");
run("internals.settings.setShouldDisplayTrackKind('Captions', true)");
run("internals.setUserPreferredLanguages(['jp', 'es-ES', 'en', 'fr'])");
}
function createTrackElement(language, src)
{
var track = document.createElement('track');
track.setAttribute('kind', "captions");
track.setAttribute('src', src);
track.setAttribute('srclang', language);
track.setAttribute('onload', 'trackLoaded()');
video.appendChild(track);
}
function createTrackElements(languages)
{
var tracks = document.querySelectorAll('track');
for (var ndx = 0; ndx < tracks.length; ++ndx)
video.removeChild(tracks[ndx]);
consoleWrite("<i>- creating tracks for: [" + languages + "].<" + "/i>");
for (var ndx = 0; ndx < languages.length; ++ndx)
createTrackElement(languages[ndx], "captions-webvtt/tc004-webvtt-file.vtt");
}
function setup()
{
findMediaElement();
setPreferences("Subtitles", true);
runNextTest();
}
</script>
</head>
<body onload="setup()">
<p>Tests that the user's preferred languages are honored.</p>
<video>
</video>
</body>
</html>