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 });