tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

browser_autoplay_policy_play_twice.js (1690B)


      1 const VIDEO_PAGE = GetTestWebBasedURL("file_video.html");
      2 
      3 add_setup(async function () {
      4  await SpecialPowers.pushPrefEnv({
      5    set: [["test.wait300msAfterTabSwitch", true]],
      6  });
      7 });
      8 
      9 function setup_test_preference(enableUserGesture) {
     10  let state = enableUserGesture ? "enable" : "disable";
     11  info(`- set pref : ${state} user gesture -`);
     12  return SpecialPowers.pushPrefEnv({
     13    set: [
     14      ["media.autoplay.default", SpecialPowers.Ci.nsIAutoplay.BLOCKED],
     15      ["media.autoplay.blocking_policy", enableUserGesture ? 0 : 1],
     16    ],
     17  });
     18 }
     19 
     20 async function allow_play_for_played_video() {
     21  info("- open new tab  -");
     22  let tab = await BrowserTestUtils.openNewForegroundTab(
     23    window.gBrowser,
     24    "about:blank"
     25  );
     26  BrowserTestUtils.startLoadingURIString(tab.linkedBrowser, VIDEO_PAGE);
     27  await BrowserTestUtils.browserLoaded(tab.linkedBrowser);
     28 
     29  info("- simulate user-click to start video -");
     30  await BrowserTestUtils.synthesizeMouseAtCenter(
     31    "#v",
     32    { button: 0 },
     33    tab.linkedBrowser
     34  );
     35 
     36  async function play_video_again() {
     37    let video = content.document.getElementById("v");
     38    ok(!video.paused, "video is playing");
     39 
     40    info("- call video play() again -");
     41    try {
     42      await video.play();
     43      ok(true, "success to resolve play promise");
     44    } catch (e) {
     45      ok(false, "promise should not be rejected");
     46    }
     47  }
     48  await SpecialPowers.spawn(tab.linkedBrowser, [], play_video_again);
     49 
     50  info("- remove tab -");
     51  BrowserTestUtils.removeTab(tab);
     52 }
     53 
     54 add_task(async function start_test() {
     55  await setup_test_preference(true);
     56  await allow_play_for_played_video();
     57 
     58  await setup_test_preference(false);
     59  await allow_play_for_played_video();
     60 });