tor-browser

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

browser_pip_settings.js (2496B)


      1 /* Any copyright is dedicated to the Public Domain.
      2   https://creativecommons.org/publicdomain/zero/1.0/ */
      3 
      4 "use strict";
      5 
      6 let knownSettingPanes = {
      7  pictureInPictureToggleEnabled: "paneGeneral",
      8 };
      9 
     10 async function withSettingVisible(settingId, testFn) {
     11  let pane = knownSettingPanes[settingId];
     12  let prefs = await openPreferencesViaOpenPreferencesAPI(pane, {
     13    leaveOpen: true,
     14  });
     15  Assert.equal(prefs.selectedPane, pane, "General pane was selected");
     16  let win = gBrowser.contentWindow;
     17  let el = win.document.getElementById(settingId);
     18  if (el) {
     19    el.scrollIntoView();
     20  }
     21  await new Promise(r => requestAnimationFrame(r));
     22  await testFn(win, el);
     23  let tabClosed = BrowserTestUtils.waitForTabClosing(gBrowser.selectedTab);
     24  BrowserTestUtils.removeTab(gBrowser.selectedTab);
     25  await tabClosed;
     26 }
     27 
     28 const PIP_SETTING_ID = "pictureInPictureToggleEnabled";
     29 const PIP_ENABLED_PREF =
     30  "media.videocontrols.picture-in-picture.video-toggle.enabled";
     31 const PIP_TOGGLE_ENABLED_PREF =
     32  "media.videocontrols.picture-in-picture.enabled";
     33 
     34 add_task(async function testPiPSettingHiddenByPref() {
     35  await withSettingVisible(PIP_SETTING_ID, async function (_, el) {
     36    ok(BrowserTestUtils.isVisible(el), "checkbox is visible");
     37  });
     38 
     39  await SpecialPowers.pushPrefEnv({
     40    set: [[PIP_TOGGLE_ENABLED_PREF, false]],
     41  });
     42  await withSettingVisible(PIP_SETTING_ID, async function (_, el) {
     43    ok(!el || BrowserTestUtils.isHidden(el), "checkbox is hidden");
     44  });
     45  await SpecialPowers.popPrefEnv();
     46 });
     47 
     48 add_task(async function testPiPSettingTelemetry() {
     49  await withSettingVisible(PIP_SETTING_ID, async function (win, el) {
     50    Services.fog.testResetFOG();
     51    ok(Services.prefs.getBoolPref(PIP_ENABLED_PREF), "PiP enabled by default");
     52    ok(el.checked, "Checked by default");
     53    EventUtils.synthesizeMouseAtCenter(el.labelEl, {}, win);
     54    ok(!el.checked, "Unchecked after click");
     55    ok(!Services.prefs.getBoolPref(PIP_ENABLED_PREF), "PiP is now disabled");
     56    let events = Glean.pictureinpictureSettings.disableSettings.testGetValue();
     57    is(events.length, 1, "There was a Glean event");
     58    is(events[0].category, "pictureinpicture.settings", "Category is correct");
     59    is(events[0].name, "disable_settings", "Name is correct");
     60    Services.fog.testResetFOG();
     61    EventUtils.synthesizeMouseAtCenter(el.labelEl, {}, win);
     62    events = Glean.pictureinpictureSettings.disableSettings.testGetValue();
     63    ok(!events, "There were no new Glean events when enabling");
     64  });
     65 });