Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

/* Any copyright is dedicated to the Public Domain.
"use strict";
/**
* Tests that setting src to empty is handled correctly based on auto close pref
*/
add_task(async () => {
for (let autoCloseEnabledPref of [true, false]) {
await SpecialPowers.pushPrefEnv({
set: [
[AUTO_CLOSE_ENABLED_PREF, autoCloseEnabledPref],
[AUTO_CLOSE_TIMEOUT_PREF, 0],
],
});
for (let videoID of ["with-controls", "no-controls"]) {
info(`Testing ${videoID} case.`);
await BrowserTestUtils.withNewTab(
{
url: TEST_PAGE,
gBrowser,
},
async browser => {
let pipWin = await triggerPictureInPicture(browser, videoID);
Assert.ok(pipWin, "Got PiP window.");
Assert.ok(!pipWin.closed, "PiP window should be open.");
await SpecialPowers.spawn(browser, [videoID], async videoID => {
let doc = content.document;
let video = doc.querySelector(`#${videoID}`);
video.removeAttribute("src");
video.load();
});
// Wait for after autoclose's hardcoded time limit to pass
try {
await BrowserTestUtils.waitForCondition(
() => pipWin.closed,
"Player window closed.",
10,
2
);
} catch {}
if (autoCloseEnabledPref) {
Assert.ok(pipWin.closed, "PiP window should be closed.");
} else {
Assert.ok(!pipWin.closed, "PiP window should still be open.");
await BrowserTestUtils.closeWindow(pipWin);
}
}
);
}
}
});