summaryrefslogtreecommitdiffstats
path: root/browser/components/preferences/tests/browser_performance.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/preferences/tests/browser_performance.js')
-rw-r--r--browser/components/preferences/tests/browser_performance.js300
1 files changed, 300 insertions, 0 deletions
diff --git a/browser/components/preferences/tests/browser_performance.js b/browser/components/preferences/tests/browser_performance.js
new file mode 100644
index 0000000000..bd7ff70c51
--- /dev/null
+++ b/browser/components/preferences/tests/browser_performance.js
@@ -0,0 +1,300 @@
+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);
+});