| Index: third_party/WebKit/LayoutTests/media/track/track-language-preference.html | 
| diff --git a/third_party/WebKit/LayoutTests/media/track/track-language-preference.html b/third_party/WebKit/LayoutTests/media/track/track-language-preference.html | 
| index 02ca7009040c1bffc81b7da4479945786f1a48c9..2ccaf3ccf2271f96e5759c697a578590cc371b67 100644 | 
| --- a/third_party/WebKit/LayoutTests/media/track/track-language-preference.html | 
| +++ b/third_party/WebKit/LayoutTests/media/track/track-language-preference.html | 
| @@ -1,121 +1,87 @@ | 
| <!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> | 
| -        <!-- TODO(philipj): Convert test to testharness.js. crbug.com/588956 | 
| -             (Please avoid writing new tests using video-test.js) --> | 
| -        <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() | 
| +<title>Tests that the user's preferred languages are honored.</title> | 
| +<video></video> | 
| +<script src="../media-file.js"></script> | 
| +<script src="../../resources/testharness.js"></script> | 
| +<script src="../../resources/testharnessreport.js"></script> | 
| +<script> | 
| +async_test(function(t) { | 
| +    var video = document.querySelector("video"); | 
| + | 
| +    // Set user preferred languages. | 
| +    internals.setUserPreferredLanguages(['jp', 'es-ES', 'en', 'fr']); | 
| +    internals.settings.setTextTrackKindUserPreference('captions'); | 
| + | 
| +    var timer; | 
| +    var expectedLanguage; | 
| +    var testList = | 
| +    { | 
| +        currentTestIndex : -1, | 
| +        tests : | 
| +        [ | 
| { | 
| -                if (!window.internals) { | 
| -                    consoleWrite("<b>** This test only works in DRT! **<" + "/b>"); | 
| -                    return; | 
| -                } | 
| - | 
| -                consoleWrite("<i>**Set user preferred languages<" + "/i>"); | 
| -                run("internals.setUserPreferredLanguages(['jp', 'es-ES', 'en', 'fr'])"); | 
| -                window.internals.settings.setTextTrackKindUserPreference('captions'); | 
| -            } | 
| - | 
| -            function createTrackElement(language, src) | 
| +                // A track language matches one of the user's preferred languages exactly. | 
| +                languages : ['fr', 'en', 'jp'], | 
| +                expectedLanguage : "jp" | 
| +            }, | 
| { | 
| -                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) | 
| +                // A track language without locale exactly matches | 
| +                // one of the user's preferred languages. | 
| +                languages : ['fr-CH', 'da'], | 
| +                expectedLanguage : "fr-CH" | 
| +            }, | 
| { | 
| -                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() | 
| +                // A track language without locale matches one of | 
| +                // the user's preferred languages without locale. | 
| +                languages : ['fr', 'es-MX'], | 
| +                expectedLanguage : "es-MX" | 
| +            }, | 
| { | 
| -                findMediaElement(); | 
| - | 
| -                setPreferences(); | 
| - | 
| -                runNextTest(); | 
| +                // No track language matches any of the user's preferred languages. | 
| +                languages : ['fa', 'ru', 'no'], | 
| +                expectedLanguage : "fa" | 
| } | 
| - | 
| -        </script> | 
| -    </head> | 
| -    <body onload="setup()"> | 
| -        <p>Tests that the user's preferred languages are honored.</p> | 
| -        <video> | 
| -        </video> | 
| -    </body> | 
| -</html> | 
| +        ] | 
| +    }; | 
| + | 
| +    runNextTest(); | 
| + | 
| +    function runNextTest() { | 
| +        testList.currentTestIndex++; | 
| +        if (testList.currentTestIndex >= testList.tests.length) { | 
| +            var tracks = document.querySelectorAll('track'); | 
| +            assert_equals(video.textTracks.length, tracks.length); | 
| +            t.done(); | 
| +            return; | 
| +        } | 
| + | 
| +        createTrackElements(testList.tests[testList.currentTestIndex].languages); | 
| +    } | 
| + | 
| +    function createTrackElements(languages) { | 
| +        var tracks = document.querySelectorAll('track'); | 
| +        for (var index = 0; index < tracks.length; ++index) | 
| +            video.removeChild(tracks[index]); | 
| + | 
| +        for (var index = 0; index < languages.length; ++index) | 
| +            createTrackElement(languages[index], "captions-webvtt/tc004-webvtt-file.vtt"); | 
| +    } | 
| + | 
| +    function createTrackElement(language, src) { | 
| +        var track = document.createElement('track'); | 
| +        track.setAttribute('kind', "captions"); | 
| +        track.setAttribute('src', src); | 
| +        track.setAttribute('srclang', language); | 
| +        track.onload = t.step_func(trackLoaded); | 
| +        video.appendChild(track); | 
| +    } | 
| + | 
| +    function trackLoaded() { | 
| +        var track = event.target; | 
| +        assert_equals(track.readyState, HTMLTrackElement.LOADED); | 
| +        assert_equals(track.srclang, testList.tests[testList.currentTestIndex].expectedLanguage); | 
| + | 
| +        timer = setTimeout(runNextTest, 200); | 
| +    } | 
| +}); | 
| +</script> | 
|  |