65 lines
2.4 KiB
JavaScript
65 lines
2.4 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
https://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
"use strict";
|
|
|
|
let knownSettingPanes = {
|
|
pictureInPictureToggleEnabled: "paneGeneral",
|
|
};
|
|
|
|
async function withSettingVisible(settingId, testFn) {
|
|
let pane = knownSettingPanes[settingId];
|
|
let prefs = await openPreferencesViaOpenPreferencesAPI(pane, {
|
|
leaveOpen: true,
|
|
});
|
|
Assert.equal(prefs.selectedPane, pane, "General pane was selected");
|
|
let win = gBrowser.contentWindow;
|
|
let el = win.document.getElementById(settingId);
|
|
if (el) {
|
|
el.scrollIntoView();
|
|
}
|
|
await new Promise(r => requestAnimationFrame(r));
|
|
await testFn(win, el);
|
|
let tabClosed = BrowserTestUtils.waitForTabClosing(gBrowser.selectedTab);
|
|
BrowserTestUtils.removeTab(gBrowser.selectedTab);
|
|
await tabClosed;
|
|
}
|
|
|
|
const PIP_SETTING_ID = "pictureInPictureToggleEnabled";
|
|
const PIP_ENABLED_PREF =
|
|
"media.videocontrols.picture-in-picture.video-toggle.enabled";
|
|
const PIP_TOGGLE_ENABLED_PREF =
|
|
"media.videocontrols.picture-in-picture.enabled";
|
|
|
|
add_task(async function testPiPSettingHiddenByPref() {
|
|
await withSettingVisible(PIP_SETTING_ID, async function (_, el) {
|
|
ok(BrowserTestUtils.isVisible(el), "checkbox is visible");
|
|
});
|
|
|
|
await SpecialPowers.pushPrefEnv({
|
|
set: [[PIP_TOGGLE_ENABLED_PREF, false]],
|
|
});
|
|
await withSettingVisible(PIP_SETTING_ID, async function (_, el) {
|
|
ok(!el || BrowserTestUtils.isHidden(el), "checkbox is hidden");
|
|
});
|
|
await SpecialPowers.popPrefEnv();
|
|
});
|
|
|
|
add_task(async function testPiPSettingTelemetry() {
|
|
await withSettingVisible(PIP_SETTING_ID, async function (win, el) {
|
|
Services.fog.testResetFOG();
|
|
ok(Services.prefs.getBoolPref(PIP_ENABLED_PREF), "PiP enabled by default");
|
|
ok(el.checked, "Checked by default");
|
|
EventUtils.synthesizeMouseAtCenter(el.labelEl, {}, win);
|
|
ok(!el.checked, "Unchecked after click");
|
|
ok(!Services.prefs.getBoolPref(PIP_ENABLED_PREF), "PiP is now disabled");
|
|
let events = Glean.pictureinpictureSettings.disableSettings.testGetValue();
|
|
is(events.length, 1, "There was a Glean event");
|
|
is(events[0].category, "pictureinpicture.settings", "Category is correct");
|
|
is(events[0].name, "disable_settings", "Name is correct");
|
|
Services.fog.testResetFOG();
|
|
EventUtils.synthesizeMouseAtCenter(el.labelEl, {}, win);
|
|
events = Glean.pictureinpictureSettings.disableSettings.testGetValue();
|
|
ok(!events, "There were no new Glean events when enabling");
|
|
});
|
|
});
|