/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
/* Tests for handling of the preferences 'dirty' flag (bug 985998) */
function run_test() { const ps = Services.prefs;
let defaultBranch = ps.getDefaultBranch("");
let userBranch = ps.getBranch("");
let prefFile = do_get_profile();
prefFile.append("prefs.js");
//* *************************************************************************// // prefs are not dirty after a write
ps.savePrefFile(null); Assert.ok(!ps.dirty);
// set a new a user value, we should become dirty
userBranch.setBoolPref("DirtyTest.new.bool", true); Assert.ok(ps.dirty);
ps.savePrefFile(null); // Overwrite a pref with the same value => not dirty
userBranch.setBoolPref("DirtyTest.new.bool", true); Assert.ok(!ps.dirty);
// Repeat for the other two types
userBranch.setIntPref("DirtyTest.new.int", 1); Assert.ok(ps.dirty);
ps.savePrefFile(null); // Overwrite a pref with the same value => not dirty
userBranch.setIntPref("DirtyTest.new.int", 1); Assert.ok(!ps.dirty);
userBranch.setCharPref("DirtyTest.new.char", "oop"); Assert.ok(ps.dirty);
ps.savePrefFile(null); // Overwrite a pref with the same value => not dirty
userBranch.setCharPref("DirtyTest.new.char", "oop"); Assert.ok(!ps.dirty);
// change *type* of a user value -> dirty
userBranch.setBoolPref("DirtyTest.new.char", false); Assert.ok(ps.dirty);
ps.savePrefFile(null);
// Set a default pref => not dirty (defaults don't go into prefs.js)
defaultBranch.setBoolPref("DirtyTest.existing.bool", true); Assert.ok(!ps.dirty); // Fail to change type of a pref with default value -> not dirty
do_check_throws(function () {
userBranch.setCharPref("DirtyTest.existing.bool", "boo");
}, Cr.NS_ERROR_UNEXPECTED); Assert.ok(!ps.dirty);
// Set user value same as default, not dirty
userBranch.setBoolPref("DirtyTest.existing.bool", true); Assert.ok(!ps.dirty); // User value different from default, dirty
userBranch.setBoolPref("DirtyTest.existing.bool", false); Assert.ok(ps.dirty);
ps.savePrefFile(null); // Back to default value, dirty again
userBranch.setBoolPref("DirtyTest.existing.bool", true); Assert.ok(ps.dirty);
ps.savePrefFile(null);
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.