const DEFAULT_HW_ACCEL_PREF = Services.prefs .getDefaultBranch(null) .getBoolPref("layers.acceleration.disabled"); const DEFAULT_PROCESS_COUNT = Services.prefs .getDefaultBranch(null) .getIntPref("dom.ipc.processCount"); add_task(async function () { // We must temporarily disable `Once` StaticPrefs check for the duration of // this test (see bug 1556131). We must do so in a separate operation as // pushPrefEnv doesn't set the preferences in the order one could expect. await SpecialPowers.pushPrefEnv({ set: [["preferences.force-disable.check.once.policy", true]], }); await SpecialPowers.pushPrefEnv({ set: [ ["layers.acceleration.disabled", DEFAULT_HW_ACCEL_PREF], ["dom.ipc.processCount", DEFAULT_PROCESS_COUNT], ["browser.preferences.defaultPerformanceSettings.enabled", true], ], }); }); add_task(async function () { let prefs = await openPreferencesViaOpenPreferencesAPI("paneGeneral", { leaveOpen: true, }); is(prefs.selectedPane, "paneGeneral", "General pane was selected"); let doc = gBrowser.contentDocument; let useRecommendedPerformanceSettings = doc.querySelector( "#useRecommendedPerformanceSettings" ); is( Services.prefs.getBoolPref( "browser.preferences.defaultPerformanceSettings.enabled" ), true, "pref value should be true before clicking on checkbox" ); ok( useRecommendedPerformanceSettings.checked, "checkbox should be checked before clicking on checkbox" ); useRecommendedPerformanceSettings.click(); let performanceSettings = doc.querySelector("#performanceSettings"); is( performanceSettings.hidden, false, "performance settings section is shown" ); is( Services.prefs.getBoolPref( "browser.preferences.defaultPerformanceSettings.enabled" ), false, "pref value should be false after clicking on checkbox" ); ok( !useRecommendedPerformanceSettings.checked, "checkbox should not be checked after clicking on checkbox" ); let allowHWAccel = doc.querySelector("#allowHWAccel"); let allowHWAccelPref = Services.prefs.getBoolPref( "layers.acceleration.disabled" ); is( allowHWAccelPref, DEFAULT_HW_ACCEL_PREF, "pref value should be the default value before clicking on checkbox" ); is( allowHWAccel.checked, !DEFAULT_HW_ACCEL_PREF, "checkbox should show the invert of the default value" ); let contentProcessCount = doc.querySelector("#contentProcessCount"); is( contentProcessCount.disabled, false, "process count control should be enabled" ); is( Services.prefs.getIntPref("dom.ipc.processCount"), DEFAULT_PROCESS_COUNT, "default pref value should be default value" ); is( contentProcessCount.selectedItem.value, "" + DEFAULT_PROCESS_COUNT, "selected item should be the default one" ); allowHWAccel.click(); allowHWAccelPref = Services.prefs.getBoolPref("layers.acceleration.disabled"); is( allowHWAccelPref, !DEFAULT_HW_ACCEL_PREF, "pref value should be opposite of the default value after clicking on checkbox" ); is( allowHWAccel.checked, !allowHWAccelPref, "checkbox should show the invert of the current value" ); contentProcessCount.value = 7; contentProcessCount.doCommand(); is( Services.prefs.getIntPref("dom.ipc.processCount"), 7, "pref value should be 7" ); is(contentProcessCount.selectedItem.value, "7", "selected item should be 7"); allowHWAccel.click(); allowHWAccelPref = Services.prefs.getBoolPref("layers.acceleration.disabled"); is( allowHWAccelPref, DEFAULT_HW_ACCEL_PREF, "pref value should be the default value after clicking on checkbox" ); is( allowHWAccel.checked, !allowHWAccelPref, "checkbox should show the invert of the current value" ); contentProcessCount.value = DEFAULT_PROCESS_COUNT; contentProcessCount.doCommand(); is( Services.prefs.getIntPref("dom.ipc.processCount"), DEFAULT_PROCESS_COUNT, "pref value should be default value" ); is( contentProcessCount.selectedItem.value, "" + DEFAULT_PROCESS_COUNT, "selected item should be default one" ); is( performanceSettings.hidden, false, "performance settings section should be still shown" ); Services.prefs.setBoolPref( "browser.preferences.defaultPerformanceSettings.enabled", true ); BrowserTestUtils.removeTab(gBrowser.selectedTab); }); add_task(async function () { let prefs = await openPreferencesViaOpenPreferencesAPI("paneGeneral", { leaveOpen: true, }); is(prefs.selectedPane, "paneGeneral", "General pane was selected"); let doc = gBrowser.contentDocument; let useRecommendedPerformanceSettings = doc.querySelector( "#useRecommendedPerformanceSettings" ); let allowHWAccel = doc.querySelector("#allowHWAccel"); let contentProcessCount = doc.querySelector("#contentProcessCount"); let performanceSettings = doc.querySelector("#performanceSettings"); useRecommendedPerformanceSettings.click(); allowHWAccel.click(); contentProcessCount.value = 7; contentProcessCount.doCommand(); useRecommendedPerformanceSettings.click(); is( Services.prefs.getBoolPref( "browser.preferences.defaultPerformanceSettings.enabled" ), true, "pref value should be true before clicking on checkbox" ); ok( useRecommendedPerformanceSettings.checked, "checkbox should be checked before clicking on checkbox" ); is( performanceSettings.hidden, true, "performance settings section should be still shown" ); Services.prefs.setBoolPref( "browser.preferences.defaultPerformanceSettings.enabled", true ); BrowserTestUtils.removeTab(gBrowser.selectedTab); }); add_task(async function () { let prefs = await openPreferencesViaOpenPreferencesAPI("paneGeneral", { leaveOpen: true, }); is(prefs.selectedPane, "paneGeneral", "General pane was selected"); let doc = gBrowser.contentDocument; let performanceSettings = doc.querySelector("#performanceSettings"); is( performanceSettings.hidden, true, "performance settings section should not be shown" ); Services.prefs.setBoolPref( "browser.preferences.defaultPerformanceSettings.enabled", false ); is( performanceSettings.hidden, false, "performance settings section should be shown" ); Services.prefs.setBoolPref( "browser.preferences.defaultPerformanceSettings.enabled", true ); BrowserTestUtils.removeTab(gBrowser.selectedTab); }); add_task(async function () { Services.prefs.setIntPref("dom.ipc.processCount", 7); let prefs = await openPreferencesViaOpenPreferencesAPI("paneGeneral", { leaveOpen: true, }); is(prefs.selectedPane, "paneGeneral", "General pane was selected"); let doc = gBrowser.contentDocument; let performanceSettings = doc.querySelector("#performanceSettings"); is( performanceSettings.hidden, false, "performance settings section should be shown" ); let contentProcessCount = doc.querySelector("#contentProcessCount"); is( Services.prefs.getIntPref("dom.ipc.processCount"), 7, "pref value should be 7" ); is(contentProcessCount.selectedItem.value, "7", "selected item should be 7"); Services.prefs.setBoolPref( "browser.preferences.defaultPerformanceSettings.enabled", true ); BrowserTestUtils.removeTab(gBrowser.selectedTab); }); add_task(async function () { Services.prefs.setBoolPref("layers.acceleration.disabled", true); let prefs = await openPreferencesViaOpenPreferencesAPI("paneGeneral", { leaveOpen: true, }); is(prefs.selectedPane, "paneGeneral", "General pane was selected"); let doc = gBrowser.contentDocument; let performanceSettings = doc.querySelector("#performanceSettings"); is( performanceSettings.hidden, false, "performance settings section should be shown" ); let allowHWAccel = doc.querySelector("#allowHWAccel"); is( Services.prefs.getBoolPref("layers.acceleration.disabled"), true, "pref value is false" ); ok(!allowHWAccel.checked, "checkbox should not be checked"); Services.prefs.setBoolPref( "browser.preferences.defaultPerformanceSettings.enabled", true ); BrowserTestUtils.removeTab(gBrowser.selectedTab); });