blob: 0e43a0827f4c845e71f13f059797be37ca550e0c [file] [log] [blame]
<!DOCTYPE html>
<title>Tests that tracks can be turned on and off through the track selection menu.</title>
<script src='../../resources/testharness.js'></script>
<script src='../../resources/testharnessreport.js'></script>
<script src='../media-controls.js'></script>
<video controls></video>
<script>
async_test(t => {
var captions = ['First', 'Second', 'Third'];
var video = document.querySelector('video');
enableTestMode(video);
video.oncanplaythrough = t.step_func(_ => {
video.oncanplaythrough = undefined;
var track1 = video.addTextTrack('captions');
var track2 = video.addTextTrack('captions');
for (var i = 0; i < captions.length; ++i) {
track1.addCue(new VTTCue(0, 120, captions[i]));
track2.addCue(new VTTCue(0, 120, captions[i]));
}
// The controls are updated asynchronously.
assert_false(isClosedCaptionsButtonEnabled(video));
setTimeout(t.step_func(_ => {
assert_true(isClosedCaptionsButtonEnabled(video));
// The captions track should be listed in textTracks, but not yet loaded.
assert_equals(video.textTracks.length, 2);
assert_equals(video.textTracks[0].mode, 'hidden');
assert_equals(video.textTracks[1].mode, 'hidden');
checkCaptionsHidden(video);
// Captions track should become visible after the track is selected and playback begins.
clickTextTrackAtIndex(video, 0, t.step_func(() => {
checkCaptionsHidden(video, captions);
video.play();
video.onplay = t.step_func(() => {
checkCaptionsVisible(video, captions);
// Captions should not be visible after they're turned off through the menu.
turnClosedCaptionsOff(video, t.step_func(() => {
checkCaptionsHidden(video);
// Captions track should become visible after the track is selected again.
clickTextTrackAtIndex(video, 0, t.step_func_done(() => {
checkCaptionsVisible(video, captions);
}));
}));
});
}));
}));
});
video.src = '../content/counting.ogv';
});
</script>