| Index: LayoutTests/media/track/track-remove-track.html
 | 
| diff --git a/LayoutTests/media/track/track-remove-track.html b/LayoutTests/media/track/track-remove-track.html
 | 
| index 49c28ad765cdaba753d00ce1a52c404618a4fea7..430ce9463c6d47465fa8aceed4c94db7787b1ab1 100644
 | 
| --- a/LayoutTests/media/track/track-remove-track.html
 | 
| +++ b/LayoutTests/media/track/track-remove-track.html
 | 
| @@ -3,48 +3,105 @@
 | 
|      <head>
 | 
|          <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 | 
|  
 | 
| -        <script src=../media-file.js></script>
 | 
| -        <script src=../video-test.js></script>
 | 
| +        <script src="../media-file.js"></script>
 | 
| +        <script src="../video-test.js"></script>
 | 
| +        <script src="../../resources/testharness.js"></script>
 | 
| +        <script src="../../resources/testharnessreport.js"></script>
 | 
| +    </head>
 | 
| +    <body>
 | 
|          <script>
 | 
| +            async_test(function(test)
 | 
| +            {
 | 
| +                var video = document.createElement("video");
 | 
| +                var track;
 | 
|  
 | 
| -            var trackElement;
 | 
| -            var track;
 | 
| +                function trackRemoved()
 | 
| +                {
 | 
| +                    assert_equals(event.target, video.textTracks);
 | 
| +                    assert_equals(event instanceof window.TrackEvent, true);
 | 
| +                    assert_equals(event.track, track);
 | 
| +                    test.done();
 | 
| +                }
 | 
|  
 | 
| -            function trackRemoved()
 | 
| -            {
 | 
| -                consoleWrite("EVENT(" + event.type + ")");
 | 
| +                var trackElement = document.createElement('track');
 | 
| +                video.appendChild(trackElement);
 | 
|  
 | 
| -                testExpected("event.target", video.textTracks);
 | 
| -                testExpected("event instanceof window.TrackEvent", true);
 | 
| -                testExpected("event.track", track);
 | 
| +                trackElement.src = 'captions-webvtt/tc004-webvtt-file.vtt';
 | 
| +                trackElement.track.mode = 'hidden';
 | 
|  
 | 
| -                consoleWrite("");
 | 
| -                endTest();
 | 
| -            }
 | 
| +                assert_equals(video.textTracks.length, 1);
 | 
|  
 | 
| -            function start()
 | 
| +                track = video.textTracks[0];
 | 
| +                video.removeChild(trackElement);
 | 
| +                video.textTracks.addEventListener("removetrack", test.step_func(trackRemoved));
 | 
| +            }, "Tests that the 'removetrack' event is fired when an out-of-band TextTrack is removed.");
 | 
| +
 | 
| +            async_test(function(test)
 | 
|              {
 | 
| -                findMediaElement();
 | 
| +                var video = document.createElement("video");
 | 
|  
 | 
| -                consoleWrite("** Test a TextTrack created for a <track> element.");
 | 
| -                run("trackElement = document.createElement('track')");
 | 
| -                run("video.appendChild(trackElement)");
 | 
| +                // Create an out-of-band text track by adding a track element.
 | 
| +                var trackElement = document.createElement('track');
 | 
|  
 | 
| -                run("trackElement.src = 'captions-webvtt/tc004-webvtt-file.vtt'");
 | 
| -                run("trackElement.track.mode = 'hidden'");
 | 
| -                testExpected("video.textTracks.length", 1);
 | 
| +                trackElement.addEventListener("error", test.step_func(function()
 | 
| +                {
 | 
| +                    assert_unreached("'error' event on track element should not fire.")
 | 
| +                }));
 | 
|  
 | 
| -                track = video.textTracks[0];
 | 
| -                video.removeChild(trackElement);
 | 
| +                video.appendChild(trackElement);
 | 
| +                trackElement.src = 'captions-webvtt/tc004-webvtt-file.vtt';
 | 
| +                trackElement.track.mode = 'hidden';
 | 
| +
 | 
| +                assert_equals(video.textTracks.length, 1);
 | 
| +                var outOfBandTrack = video.textTracks[0];
 | 
|  
 | 
| -                video.textTracks.addEventListener("removetrack", trackRemoved);
 | 
| -            }
 | 
| +                // Load a media file with an inband text track.
 | 
| +                var inbandTrack = null;
 | 
| +                var url = "../content/test-vp8-vorbis-webvtt.webm"
 | 
| +
 | 
| +                var firstAddTrackHandler = test.step_func(function()
 | 
| +                {
 | 
| +                    assert_equals(event.target, video.textTracks);
 | 
| +                    assert_equals(event instanceof window.TrackEvent, true);
 | 
| +                    if (event.track == outOfBandTrack) {
 | 
| +                        return;
 | 
| +                    }
 | 
| +
 | 
| +                    assert_equals(inbandTrack, null);
 | 
| +                    assert_equals(video.textTracks.length, 2);
 | 
| +                    assert_equals(event.track, video.textTracks[1]);
 | 
| +                    inbandTrack = event.track;
 | 
| +
 | 
| +                    video.textTracks.removeEventListener("addtrack", firstAddTrackHandler);
 | 
| +
 | 
| +                    // Clear .src to force the inband track to get destroyed.
 | 
| +                    video.src = "";
 | 
| +
 | 
| +                    // Verify that the inband track was removed.
 | 
| +                    assert_not_equals(inbandTrack, null);
 | 
| +                    assert_equals(video.textTracks.length, 1);
 | 
| +                    assert_equals(video.textTracks[0], outOfBandTrack);
 | 
| +
 | 
| +                    // Load the URL again to trigger another 'addtrack' event to make sure
 | 
| +                    // no 'removetrack' event was queued.
 | 
| +                    video.src = url;
 | 
| +                    video.textTracks.addEventListener("addtrack", test.step_func(function()
 | 
| +                    {
 | 
| +                        assert_equals(video.textTracks.length, 2);
 | 
| +                        test.done();
 | 
| +                    }));
 | 
| +                });
 | 
| +                video.textTracks.addEventListener("addtrack", firstAddTrackHandler);
 | 
| +
 | 
| +                video.textTracks.addEventListener("removetrack", test.step_func(function()
 | 
| +                {
 | 
| +                    assert_unreached("'removetrack' event should not fire.")
 | 
| +                }));
 | 
| +
 | 
| +                video.src = url;
 | 
| +            }, "Tests that the 'removetrack' event is NOT fired for inband TextTrack on a failed load.");
 | 
|  
 | 
|          </script>
 | 
| -    </head>
 | 
| -    <body onload="start()">
 | 
| -        <p>Tests that the 'removetrack' event is fired when a TextTrack is removed.</p>
 | 
| -        <video>
 | 
| -        </video>
 | 
| +        <div id="log"></div>
 | 
|      </body>
 | 
|  </html>
 | 
| 
 |