Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

const VIDEO_PAGE = GetTestWebBasedURL("file_video.html");
function setup_test_preference(enableUserGesture) {
let state = enableUserGesture ? "enable" : "disable";
info(`- set pref : ${state} user gesture -`);
return SpecialPowers.pushPrefEnv({
set: [
["media.autoplay.default", SpecialPowers.Ci.nsIAutoplay.BLOCKED],
["media.autoplay.blocking_policy", enableUserGesture ? 0 : 1],
],
});
}
async function allow_play_for_played_video() {
info("- open new tab -");
let tab = await BrowserTestUtils.openNewForegroundTab(
window.gBrowser,
"about:blank"
);
BrowserTestUtils.startLoadingURIString(tab.linkedBrowser, VIDEO_PAGE);
await BrowserTestUtils.browserLoaded(tab.linkedBrowser);
info("- simulate user-click to start video -");
await BrowserTestUtils.synthesizeMouseAtCenter(
"#v",
{ button: 0 },
tab.linkedBrowser
);
async function play_video_again() {
let video = content.document.getElementById("v");
ok(!video.paused, "video is playing");
info("- call video play() again -");
try {
await video.play();
ok(true, "success to resolve play promise");
} catch (e) {
ok(false, "promise should not be rejected");
}
}
await SpecialPowers.spawn(tab.linkedBrowser, [], play_video_again);
info("- remove tab -");
BrowserTestUtils.removeTab(tab);
}
add_task(async function start_test() {
await setup_test_preference(true);
await allow_play_for_played_video();
await setup_test_preference(false);
await allow_play_for_played_video();
});