| Index: third_party/WebKit/LayoutTests/media/video-controls-captions.html | 
| diff --git a/third_party/WebKit/LayoutTests/media/video-controls-captions.html b/third_party/WebKit/LayoutTests/media/video-controls-captions.html | 
| index 9f9dfa58f6b78176f8415b4c3c127d132dbf94e2..aea44b909edaa7e03608e7acb4e117a89b9c1ecd 100644 | 
| --- a/third_party/WebKit/LayoutTests/media/video-controls-captions.html | 
| +++ b/third_party/WebKit/LayoutTests/media/video-controls-captions.html | 
| @@ -1,126 +1,67 @@ | 
| <!DOCTYPE html> | 
| -<html> | 
| -<head> | 
| -    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> | 
| -    <title>Test closed caption track selection functionality.</title> | 
| -    <script src=media-file.js></script> | 
| -    <script src=media-controls.js></script> | 
| -    <!-- TODO(foolip): 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 track; | 
| - | 
| -        function addTextTrackThroughJS() | 
| -        { | 
| -            consoleWrite(""); | 
| -            consoleWrite("** Add a text track through JS to the video element **"); | 
| -            var t = video.addTextTrack('captions', 'English', 'en'); | 
| -            t.addCue(new VTTCue(0.0, 10.0, 'Some random caption text')); | 
| -        } | 
| - | 
| -        function addUnloadableHTMLTrackElement() | 
| -        { | 
| -            consoleWrite(""); | 
| -            consoleWrite("** Add non-default text track through HTML with unloadable URI **"); | 
| - | 
| -            track = document.createElement("track"); | 
| -            track.setAttribute("kind", "captions"); | 
| -            track.setAttribute("srclang", "en"); | 
| -            track.setAttribute("src", "invalid.vtt"); | 
| - | 
| -            track.addEventListener("error", trackError); | 
| - | 
| -            video.appendChild(track); | 
| -            testExpected("track.readyState", HTMLTrackElement.NONE); | 
| -            testExpected("track.track.mode", "disabled"); | 
| -            testExpected("video.textTracks.length", 1); | 
| -        } | 
| - | 
| -        function removeHTMLTrackElement() | 
| -        { | 
| -            consoleWrite(""); | 
| -            consoleWrite("** Remove DOM node representing the track element **"); | 
| -            var htmlTrack = video.children[0]; | 
| -            video.removeChild(htmlTrack); | 
| -        } | 
| - | 
| -        function checkCaptionsDisplay() | 
| -        { | 
| -            // When no tracks are loaded, this should report no text track container, | 
| -            // when tracks are loaded but not visible, should report no cues visible, | 
| -            // when tracks are loaded and visible, should properly check the text. | 
| -            testExpected("textTrackDisplayElement(video, 'display').innerText", "Lorem"); | 
| -        } | 
| - | 
| -        function startTest() | 
| -        { | 
| -            if (!window.eventSender) { | 
| -                consoleWrite("No eventSender found."); | 
| -                failTest(); | 
| -            } | 
| - | 
| -            findMediaElement(); | 
| -            testClosedCaptionsButtonVisibility(true); | 
| - | 
| -            consoleWrite(""); | 
| -            consoleWrite("** The captions track should be listed in textTracks, but not yet loaded. **"); | 
| -            testExpected("video.textTracks.length", 1); | 
| -            testExpected("video.textTracks[0].mode", "disabled"); | 
| -            checkCaptionsDisplay(); | 
| - | 
| -            consoleWrite(""); | 
| -            consoleWrite("** Captions track should load and captions should become visible after a track is selected **"); | 
| - | 
| -            // Note: the test flow continues with "testCCTrackSelectionFunctionality" when the | 
| -            // "load" event of the single TextTrack fires up. While the test structure | 
| -            // might seem weird, this avoids timeouts. | 
| -            selectTextTrack(video, 0); | 
| -        } | 
| - | 
| -        function testCCTrackSelectionFunctionality() | 
| -        { | 
| -            checkCaptionsDisplay(); | 
| - | 
| -            consoleWrite(""); | 
| -            consoleWrite("** Captions should not be visible after Off is clicked **"); | 
| +<title>Tests that the closed captions button enables track switching.</title> | 
| +<script src="../resources/testharness.js"></script> | 
| +<script src="../resources/testharnessreport.js"></script> | 
| +<script src="media-file.js"></script> | 
| +<script src="media-controls.js"></script> | 
| +<video controls> | 
| +    <track src="track/captions-webvtt/captions-fast.vtt" kind="captions"> | 
| +</video> | 
| +<script> | 
| +async_test(function(t) { | 
| +    var video = document.querySelector("video"); | 
| + | 
| +    video.oncanplaythrough = t.step_func(function() { | 
| +        assert_true(isClosedCaptionsButtonVisible(video)); | 
| + | 
| +        // The captions track should be listed in textTracks, but not yet loaded. | 
| +        assert_equals(video.textTracks.length, 1); | 
| +        assert_equals(video.textTracks[0].mode, "disabled"); | 
| +        assert_equals(textTrackContainerElement(video), null); | 
| + | 
| +        var track = document.querySelector("track"); | 
| +        track.onload = t.step_func(function() { | 
| +            assert_equals(textTrackCueElementByIndex(video, 0).innerText, "Lorem"); | 
| + | 
| +            // Captions should not be visible after Off is clicked. | 
| turnClosedCaptionsOff(video); | 
| -            checkCaptionsDisplay(); | 
| +            assert_equals(textTrackCueDisplayElement(video), null); | 
|  | 
| -            removeHTMLTrackElement(); | 
| -            testClosedCaptionsButtonVisibility(false); | 
| +            // Remove DOM node representing the track element. | 
| +            track.remove(); | 
| +            assert_false(isClosedCaptionsButtonVisible(video)); | 
|  | 
| addUnloadableHTMLTrackElement(); | 
| -            testClosedCaptionsButtonVisibility(true); | 
| - | 
| -            consoleWrite(""); | 
| -            selectTextTrack(video, 0); | 
| -        } | 
| - | 
| -        function trackError() | 
| -        { | 
| -            consoleWrite("** Track failed to load **"); | 
| -            testClosedCaptionsButtonVisibility(false); | 
| - | 
| -            addTextTrackThroughJS(); | 
| -            testClosedCaptionsButtonVisibility(true); | 
| - | 
| -            endTest(); | 
| -        } | 
| - | 
| -        function loaded() | 
| -        { | 
| -            findMediaElement(); | 
| -            waitForEvent('canplaythrough', startTest); | 
| - | 
| -            video.src = findMediaFile('video', 'content/counting'); | 
| -        } | 
| -    </script> | 
| -</head> | 
| -<body onload="loaded()"> | 
| -    <p>Tests that the closed captions button enables track switching</p> | 
| -    <video controls> | 
| -        <track src="track/captions-webvtt/captions-fast.vtt" kind="captions" onload="testCCTrackSelectionFunctionality()"> | 
| -    </video> | 
| -</body> | 
| -</html> | 
| +            assert_true(isClosedCaptionsButtonVisible(video)); | 
| + | 
| +            clickTextTrackAtIndex(video, 0); | 
| +        }); | 
| + | 
| +        // Captions track should load and captions should become visible after a track is selected. | 
| +        clickTextTrackAtIndex(video, 0); | 
| +    }); | 
| + | 
| +    function addUnloadableHTMLTrackElement() { | 
| +        // Add non-default text track through HTML with unloadable URI. | 
| +        var track = document.createElement("track"); | 
| +        track.setAttribute("kind", "captions"); | 
| +        track.setAttribute("srclang", "en"); | 
| +        track.setAttribute("src", "invalid.vtt"); | 
| + | 
| +        track.onerror = t.step_func_done(function() { | 
| +            // Track failed to load. | 
| +            assert_false(isClosedCaptionsButtonVisible(video)); | 
| +            // Add a text track through JS to the video element. | 
| +            var newTrack = video.addTextTrack("captions", "English", "en"); | 
| +            assert_true(isClosedCaptionsButtonVisible(video)); | 
| +        }); | 
| + | 
| +        video.appendChild(track); | 
| +        assert_equals(track.readyState, HTMLTrackElement.NONE); | 
| +        assert_equals(track.track.mode, "disabled"); | 
| +        assert_equals(video.textTracks.length, 1); | 
| +    } | 
| + | 
| +    video.src = findMediaFile("video", "content/counting"); | 
| +}); | 
| +</script> | 
|  |