Source code
Revision control
Copy as Markdown
Other Tools
Test Info: Warnings
- This test runs only with pattern: os != 'android'
- Manifest: browser/components/tests/unit/xpcshell.toml
/* Any copyright is dedicated to the Public Domain.
/**
* Tests that distribution correctly imports preferences from distribution.ini.
*/
const TOPIC_PREFERENCES_COMPLETE = "distribution-preferences-complete";
var gTestDir = do_get_cwd();
function run_test() {
// Set special pref to load distribution.ini from the profile folder.
Services.prefs.setBoolPref("distribution.testing.loadFromProfile", true);
// Copy distribution.ini file to the profile dir.
let distroDir = gProfD.clone();
distroDir.leafName = "distribution";
let iniFile = distroDir.clone();
iniFile.append("distribution.ini");
if (iniFile.exists()) {
iniFile.remove(false);
print("distribution.ini already exists, did some test forget to cleanup?");
}
let testDistributionFile = gTestDir.clone();
testDistributionFile.append("distribution.ini");
testDistributionFile.copyTo(distroDir, "distribution.ini");
Assert.ok(testDistributionFile.exists());
run_next_test();
}
registerCleanupFunction(function () {
// Remove the distribution file, even if the test failed, otherwise all
// next tests will import it.
let iniFile = gProfD.clone();
iniFile.leafName = "distribution";
iniFile.append("distribution.ini");
if (iniFile.exists()) {
iniFile.remove(false);
}
Assert.ok(!iniFile.exists());
});
add_task(async function test_preferences_observer() {
print("test_preferences_observer()");
let { DistributionManagement } = ChromeUtils.importESModule(
"resource:///modules/distribution.sys.mjs"
);
const observerPromise = new Promise(resolve => {
Services.obs.addObserver(function observe(
aObsSubject,
aObsTopic,
aObsData
) {
Services.obs.removeObserver(observe, aObsTopic);
resolve([aObsSubject, aObsData]);
}, TOPIC_PREFERENCES_COMPLETE);
});
// Force distribution.
DistributionManagement.applyCustomizations();
await observerPromise;
// Test succeeds when topic is observed
});