fune/modules/libpref/test/unit_ipc/test_user_default_prefs.js
Victor Porof 8c3cfe4881 Bug 1561435 - Format modules/, a=automatic-formatting
# ignore-this-changeset

Differential Revision: https://phabricator.services.mozilla.com/D35916

--HG--
extra : source : 3faab607a196e49a51059a8639b8e44afb078edc
2019-07-05 10:54:01 +02:00

73 lines
2.2 KiB
JavaScript

const { Services } = ChromeUtils.import("resource://gre/modules/Services.jsm");
const pb = Services.prefs;
// This pref is chosen somewhat arbitrarily --- we just need one
// that's guaranteed to have a default value.
const kPrefName = "intl.accept_languages"; // of type char, which we
// assume below
var initialValue = null;
function check_child_pref_info_eq(continuation) {
sendCommand(
'var pb = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);\n' +
// Returns concatenation "[value],[isUser]"
'pb.getCharPref("' +
kPrefName +
'")+ "," +' +
'pb.prefHasUserValue("' +
kPrefName +
'");',
function(info) {
let [value, isUser] = info.split(",");
Assert.equal(pb.getCharPref(kPrefName), value);
Assert.equal(pb.prefHasUserValue(kPrefName), isUser == "true");
continuation();
}
);
}
function run_test() {
// We finish in clean_up()
do_test_pending();
initialValue = pb.getCharPref(kPrefName);
test_user_setting();
}
function test_user_setting() {
// We rely on setting this before the content process starts up.
// When it starts up, it should recognize this as a user pref, not
// a default pref.
pb.setCharPref(kPrefName, "i-imaginarylanguage");
// NB: processing of the value-change notification in the child
// process triggered by the above set happens-before the remaining
// code here
check_child_pref_info_eq(function() {
Assert.equal(pb.prefHasUserValue(kPrefName), true);
test_cleared_is_default();
});
}
function test_cleared_is_default() {
pb.clearUserPref(kPrefName);
// NB: processing of the value-change notification in the child
// process triggered by the above set happens-before the remaining
// code here
check_child_pref_info_eq(function() {
Assert.equal(pb.prefHasUserValue(kPrefName), false);
clean_up();
});
}
function clean_up() {
pb.setCharPref(kPrefName, initialValue);
// NB: processing of the value-change notification in the child
// process triggered by the above set happens-before the remaining
// code here
check_child_pref_info_eq(function() {
do_test_finished();
});
}