Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Warnings

  • This test has a WPT meta file that expects 1 subtest issues.
  • This WPT test may be referenced by the following Test IDs:
<!DOCTYPE html>
<title>A track appended after the initial track configuration does not change other tracks</title>
<script src="/common/media.js"></script>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<video>
<track kind="metadata" src="resources/metadata.vtt">
</video>
<script>
async_test(function(t) {
var video = document.querySelector('video');
var track1 = document.querySelectorAll('track')[0];
assert_equals(track1.readyState, HTMLTrackElement.NONE);
assert_equals(track1.track.mode, 'disabled');
video.src = getVideoURI('/media/test');
video.oncanplaythrough = t.step_func(canplaythrough);
track1.onload = t.step_func(metadataTrackLoaded);
function canplaythrough() {
// check initial metadata track state.
assert_equals(track1.readyState, HTMLTrackElement.NONE);
assert_equals(track1.track.mode, 'disabled');
assert_equals(track1.track.cues, null);
track1.track.mode = 'hidden';
}
function metadataTrackLoaded() {
// check metadata track state.
assert_equals(track1.readyState, HTMLTrackElement.LOADED);
assert_equals(track1.track.mode, 'hidden');
assert_equals(track1.track.cues.length, 12);
assert_equals(track1.track.cues[11].startTime, 22);
// Add a caption track, and explicitly enable it.
track2 = document.createElement('track');
track2.setAttribute('kind', 'captions');
track2.setAttribute('default', 'default');
track2.setAttribute('src', 'resources/webvtt-file.vtt');
track2.track.mode = 'showing';
track2.onload = t.step_func(captionsTrackLoaded);
video.appendChild(track2);
}
function captionsTrackLoaded() {
// Check that metadata track state has not changed.
assert_equals(track1.readyState, HTMLTrackElement.LOADED);
assert_equals(track1.track.mode, 'hidden');
// and that the caption track state is correct.
assert_equals(track2.readyState, HTMLTrackElement.LOADED);
assert_equals(track2.track.mode, 'showing');
video.textTracks.onaddtrack = t.step_func_done(trackAdded);
// add a subtitle track with video.addTextTrack().
track3 = video.addTextTrack('subtitles', 'Subtitle Track', 'en');
track3.mode = 'showing';
}
function trackAdded(event) {
// Check that metadata track state has not changed.
assert_equals(track1.readyState, HTMLTrackElement.LOADED);
assert_equals(track1.track.mode, 'hidden');
// and that the caption track state has not changed.
assert_equals(track2.readyState, HTMLTrackElement.LOADED);
assert_equals(track2.track.mode, 'showing');
// and that the subtitle track state is correct.
assert_equals(event.target, video.textTracks);
assert_true(event instanceof window.TrackEvent);
assert_equals(event.track, video.textTracks[video.textTracks.length - 1]);
assert_equals(track3.mode, 'showing');
}
});
</script>