fune/toolkit/content/tests/browser/browser_autoplay_videoDocument.js
alwu b19b9b34f5 Bug 1513039 - part11 : remove pref 'media.autoplay.ask-permission'. r=cpearce
Depends on D14335

Differential Revision: https://phabricator.services.mozilla.com/D14336

--HG--
extra : moz-landing-system : lando
2019-01-07 18:41:58 +00:00

66 lines
2.1 KiB
JavaScript

"use strict";
const PAGE = "https://example.com/browser/toolkit/content/tests/browser/audio.ogg";
function setup_test_preference() {
return SpecialPowers.pushPrefEnv({"set": [
["media.autoplay.default", SpecialPowers.Ci.nsIAutoplay.BLOCKED],
["media.autoplay.enabled.user-gestures-needed", true],
]});
}
function checkIsVideoDocumentAutoplay(browser) {
return ContentTask.spawn(browser, null, async () => {
const video = content.document.getElementsByTagName("video")[0];
const played = video && await video.play().then(() => true, () => false);
ok(played, "Should be able to play in video document.");
});
}
async function checkIsIframeVideoDocumentAutoplay(browser) {
info("- create iframe video document -");
await ContentTask.spawn(browser, PAGE, async (pageURL) => {
const iframe = content.document.createElement("iframe");
iframe.src = pageURL;
content.document.body.appendChild(iframe);
const iframeLoaded = new Promise((resolve, reject) => {
iframe.addEventListener("load", e => resolve(), {once: true});
});
await iframeLoaded;
});
info("- check whether iframe video document starts playing -");
await ContentTask.spawn(browser, null, async () => {
const iframe = content.document.querySelector("iframe");
const video = iframe.contentDocument.querySelector("video");
ok(video.paused, "Subdoc video should not have played");
is(video.played.length, 0, "Should have empty played ranges");
});
}
add_task(async () => {
await BrowserTestUtils.withNewTab({
gBrowser,
url: PAGE,
}, async (browser) => {
info("- setup test preference -");
await setup_test_preference();
info(`- check whether video document is autoplay -`);
await checkIsVideoDocumentAutoplay(browser);
});
});
add_task(async () => {
await BrowserTestUtils.withNewTab({
gBrowser,
url: "about:blank",
}, async (browser) => {
info("- setup test preference -");
await setup_test_preference();
info(`- check whether video document in iframe is autoplay -`);
await checkIsIframeVideoDocumentAutoplay(browser);
});
});