forked from mirrors/gecko-dev
112 lines
3.6 KiB
JavaScript
112 lines
3.6 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
"use strict";
|
|
|
|
// It doesn't matter what two preferences are used here, as long as the first is a built-in
|
|
// one that defaults to false and the second defaults to true.
|
|
const KNOWN_PREF_1 = "browser.display.use_system_colors";
|
|
const KNOWN_PREF_2 = "browser.underline_anchors";
|
|
|
|
// This test verifies that pressing the reset all button for experimental features
|
|
// resets all of the checkboxes to their default state.
|
|
add_task(async function testResetAll() {
|
|
await SpecialPowers.pushPrefEnv({
|
|
set: [
|
|
["browser.preferences.experimental", true],
|
|
["test.featureA", false],
|
|
["test.featureB", true],
|
|
[KNOWN_PREF_1, false],
|
|
[KNOWN_PREF_2, true],
|
|
],
|
|
});
|
|
|
|
// Add a number of test features.
|
|
const server = new DefinitionServer();
|
|
let definitions = [
|
|
{
|
|
id: "test-featureA",
|
|
preference: "test.featureA",
|
|
defaultValue: false,
|
|
},
|
|
{
|
|
id: "test-featureB",
|
|
preference: "test.featureB",
|
|
defaultValue: true,
|
|
},
|
|
{
|
|
id: "test-featureC",
|
|
preference: KNOWN_PREF_1,
|
|
defaultValue: false,
|
|
},
|
|
{
|
|
id: "test-featureD",
|
|
preference: KNOWN_PREF_2,
|
|
defaultValue: true,
|
|
},
|
|
];
|
|
for (let { id, preference, defaultValue } of definitions) {
|
|
server.addDefinition({ id, preference, defaultValue, isPublic: true });
|
|
}
|
|
|
|
await BrowserTestUtils.openNewForegroundTab(
|
|
gBrowser,
|
|
`about:preferences?definitionsUrl=${encodeURIComponent(
|
|
server.definitionsUrl
|
|
)}#paneExperimental`
|
|
);
|
|
let doc = gBrowser.contentDocument;
|
|
|
|
await TestUtils.waitForCondition(
|
|
() => doc.getElementById(definitions[definitions.length - 1].id),
|
|
"wait for the first public feature to get added to the DOM"
|
|
);
|
|
|
|
// Check the initial state of each feature.
|
|
ok(!Services.prefs.getBoolPref("test.featureA"), "initial state A");
|
|
ok(Services.prefs.getBoolPref("test.featureB"), "initial state B");
|
|
ok(!Services.prefs.getBoolPref(KNOWN_PREF_1), "initial state C");
|
|
ok(Services.prefs.getBoolPref(KNOWN_PREF_2), "initial state D");
|
|
|
|
// Modify the state of some of the features.
|
|
doc.getElementById("test-featureC").click();
|
|
doc.getElementById("test-featureD").click();
|
|
ok(!Services.prefs.getBoolPref("test.featureA"), "modified state A");
|
|
ok(Services.prefs.getBoolPref("test.featureB"), "modified state B");
|
|
ok(Services.prefs.getBoolPref(KNOWN_PREF_1), "modified state C");
|
|
ok(!Services.prefs.getBoolPref(KNOWN_PREF_2), "modified state D");
|
|
|
|
// State after reset.
|
|
let prefChangedPromise = new Promise(resolve => {
|
|
Services.prefs.addObserver(KNOWN_PREF_2, function observer() {
|
|
Services.prefs.removeObserver(KNOWN_PREF_2, observer);
|
|
resolve();
|
|
});
|
|
});
|
|
doc.getElementById("experimentalCategory-reset").click();
|
|
await prefChangedPromise;
|
|
|
|
// The preferences will be reset to the default value for the feature.
|
|
ok(!Services.prefs.getBoolPref("test.featureA"), "after reset state A");
|
|
ok(Services.prefs.getBoolPref("test.featureB"), "after reset state B");
|
|
ok(!Services.prefs.getBoolPref(KNOWN_PREF_1), "after reset state C");
|
|
ok(Services.prefs.getBoolPref(KNOWN_PREF_2), "after reset state D");
|
|
ok(
|
|
!doc.getElementById("test-featureA").checked,
|
|
"after reset checkbox state A"
|
|
);
|
|
ok(
|
|
doc.getElementById("test-featureB").checked,
|
|
"after reset checkbox state B"
|
|
);
|
|
ok(
|
|
!doc.getElementById("test-featureC").checked,
|
|
"after reset checkbox state C"
|
|
);
|
|
ok(
|
|
doc.getElementById("test-featureD").checked,
|
|
"after reset checkbox state D"
|
|
);
|
|
|
|
BrowserTestUtils.removeTab(gBrowser.selectedTab);
|
|
});
|