Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

/* Any copyright is dedicated to the Public Domain.
"use strict";
/**
* Tests that the subtitles button hides after switching to a video that does not have subtitles
*/
add_task(async () => {
await SpecialPowers.pushPrefEnv({
set: [
[
"media.videocontrols.picture-in-picture.display-text-tracks.enabled",
true,
],
],
});
let videoID = "with-controls";
await BrowserTestUtils.withNewTab(
{
url: TEST_PAGE_WITH_WEBVTT,
gBrowser,
},
async browser => {
await prepareVideosAndWebVTTTracks(browser, videoID);
let pipWin = await triggerPictureInPicture(browser, videoID);
ok(pipWin, "Got Picture-in-Picture window.");
// Need to make sure that the PiP window is at least the minimum height
let multiplier = 1;
while (true) {
if (multiplier * pipWin.innerHeight > 325) {
break;
}
multiplier += 0.5;
}
pipWin.moveTo(50, 50);
pipWin.resizeTo(
pipWin.innerWidth * multiplier,
pipWin.innerHeight * multiplier
);
let subtitlesButton = pipWin.document.querySelector("#closed-caption");
await TestUtils.waitForCondition(() => {
return !subtitlesButton.disabled;
}, "Waiting for subtitles button to be enabled");
ok(!subtitlesButton.disabled, "The subtitles button is enabled");
let emptied = SpecialPowers.spawn(browser, [{ videoID }], async args => {
let video = content.document.getElementById(args.videoID);
info("Waiting for emptied event to be called");
await ContentTaskUtils.waitForEvent(video, "emptied");
});
await SpecialPowers.spawn(browser, [{ videoID }], async args => {
let video = content.document.getElementById(args.videoID);
video.setAttribute("src", video.src);
let len = video.textTracks.length;
for (let i = 0; i < len; i++) {
video.removeChild(video.children[0]);
}
video.load();
});
await emptied;
await TestUtils.waitForCondition(() => {
return subtitlesButton.disabled;
}, "Waiting for subtitles button to be disabled after it was enabled");
ok(subtitlesButton.disabled, "The subtitles button is disabled");
await BrowserTestUtils.closeWindow(pipWin);
}
);
});
/**
* Tests the the subtitles button shows after switching from a video with no subtitles to a video with subtitles
*/
add_task(async () => {
const videoID = "with-controls";
const videoID2 = "with-controls-no-tracks";
await BrowserTestUtils.withNewTab(
{
url: TEST_PAGE_WITH_WEBVTT,
gBrowser,
},
async browser => {
let pipWin = await triggerPictureInPicture(browser, videoID2);
ok(pipWin, "Got Picture-in-Picture window.");
// Need to make sure that the PiP window is at least the minimum height
let multiplier = 1;
while (true) {
if (multiplier * pipWin.innerHeight > 325) {
break;
}
multiplier += 0.5;
}
pipWin.moveTo(50, 50);
pipWin.resizeTo(
pipWin.innerWidth * multiplier,
pipWin.innerHeight * multiplier
);
let subtitlesButton = pipWin.document.querySelector("#closed-caption");
await TestUtils.waitForCondition(() => {
return subtitlesButton.disabled;
}, "Making sure the subtitles button is disabled initially");
ok(subtitlesButton.disabled, "The subtitles button is disabled");
await SpecialPowers.spawn(
browser,
[{ videoID, videoID2 }],
async args => {
let video2 = content.document.getElementById(args.videoID2);
let track = video2.addTextTrack("captions", "English", "en");
track.mode = "showing";
track.addCue(
new content.window.VTTCue(0, 12, "[Test] This is the first cue")
);
track.addCue(
new content.window.VTTCue(18.7, 21.5, "This is the second cue")
);
video2.setAttribute("src", video2.src);
video2.load();
is(
video2.textTracks.length,
1,
"Number of tracks loaded should be 1"
);
video2.play();
video2.pause();
}
);
subtitlesButton = pipWin.document.querySelector("#closed-caption");
await TestUtils.waitForCondition(() => {
return !subtitlesButton.disabled;
}, "Waiting for the subtitles button to be enabled after switching to a video with subtitles.");
ok(!subtitlesButton.disabled, "The subtitles button is enabled");
await BrowserTestUtils.closeWindow(pipWin);
}
);
});