fune/toolkit/modules/tests/browser/browser_AsyncPrefs.js
Kris Maglione 918ed6c474 Bug 1431533: Part 5a - Auto-rewrite code to use ChromeUtils import methods. r=florian
This was done using the following script:
37e3803c7a/processors/chromeutils-import.jsm

MozReview-Commit-ID: 1Nc3XDu0wGl

--HG--
extra : source : 12fc4dee861c812fd2bd032c63ef17af61800c70
extra : intermediate-source : 34c999fa006bffe8705cf50c54708aa21a962e62
extra : histedit_source : b2be2c5e5d226e6c347312456a6ae339c1e634b0
2018-01-29 15:20:18 -08:00

97 lines
3.4 KiB
JavaScript

"use strict";
const kWhiteListedBool = "testing.allowed-prefs.some-bool-pref";
const kWhiteListedChar = "testing.allowed-prefs.some-char-pref";
const kWhiteListedInt = "testing.allowed-prefs.some-int-pref";
function resetPrefs() {
for (let pref of [kWhiteListedBool, kWhiteListedChar, kWhiteListedBool]) {
Services.prefs.clearUserPref(pref);
}
}
registerCleanupFunction(resetPrefs);
Services.prefs.getDefaultBranch("testing.allowed-prefs.").setBoolPref("some-bool-pref", false);
Services.prefs.getDefaultBranch("testing.allowed-prefs.").setCharPref("some-char-pref", "");
Services.prefs.getDefaultBranch("testing.allowed-prefs.").setIntPref("some-int-pref", 0);
async function runTest() {
let {AsyncPrefs} = ChromeUtils.import("resource://gre/modules/AsyncPrefs.jsm", {});
const kInChildProcess = Services.appinfo.processType == Services.appinfo.PROCESS_TYPE_CONTENT;
// Need to define these again because when run in a content task we have no scope access.
const kNotWhiteListed = "some.pref.thats.not.whitelisted";
const kWhiteListedBool = "testing.allowed-prefs.some-bool-pref";
const kWhiteListedChar = "testing.allowed-prefs.some-char-pref";
const kWhiteListedInt = "testing.allowed-prefs.some-int-pref";
const procDesc = kInChildProcess ? "child process" : "parent process";
const valueResultMap = [
[true, "Bool"],
[false, "Bool"],
[10, "Int"],
[-1, "Int"],
["", "Char"],
["stuff", "Char"],
[[], false],
[{}, false],
[Services.io.newURI("http://mozilla.org/"), false],
];
const prefMap = [
["Bool", kWhiteListedBool],
["Char", kWhiteListedChar],
["Int", kWhiteListedInt],
];
function doesFail(pref, value) {
let msg = `Should not succeed setting ${pref} to ${value} in ${procDesc}`;
return AsyncPrefs.set(pref, value).then(() => ok(false, msg), error => ok(true, msg + "; " + error));
}
function doesWork(pref, value) {
let msg = `Should be able to set ${pref} to ${value} in ${procDesc}`;
return AsyncPrefs.set(pref, value).then(() => ok(true, msg), error => ok(false, msg + "; " + error));
}
function doReset(pref) {
let msg = `Should be able to reset ${pref} in ${procDesc}`;
return AsyncPrefs.reset(pref).then(() => ok(true, msg), () => ok(false, msg));
}
for (let [val, ] of valueResultMap) {
await doesFail(kNotWhiteListed, val);
is(Services.prefs.prefHasUserValue(kNotWhiteListed), false, "Pref shouldn't get changed");
}
let resetMsg = `Should not succeed resetting ${kNotWhiteListed} in ${procDesc}`;
AsyncPrefs.reset(kNotWhiteListed).then(() => ok(false, resetMsg), error => ok(true, resetMsg + "; " + error));
for (let [type, pref] of prefMap) {
for (let [val, result] of valueResultMap) {
if (result == type) {
await doesWork(pref, val);
is(Services.prefs["get" + type + "Pref"](pref), val, "Pref should have been updated");
await doReset(pref);
} else {
await doesFail(pref, val);
is(Services.prefs.prefHasUserValue(pref), false, `Pref ${pref} shouldn't get changed`);
}
}
}
}
add_task(async function runInParent() {
await runTest();
resetPrefs();
});
if (gMultiProcessBrowser) {
add_task(async function runInChild() {
ok(gBrowser.selectedBrowser.isRemoteBrowser, "Should actually run this in child process");
await ContentTask.spawn(gBrowser.selectedBrowser, null, runTest);
resetPrefs();
});
}