mirror of
https://github.com/classilla/tenfourfox.git
synced 2024-10-10 13:23:42 +00:00
76 lines
2.6 KiB
JavaScript
76 lines
2.6 KiB
JavaScript
/* 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) */
|
|
|
|
const PREF_INVALID = 0;
|
|
const PREF_BOOL = 128;
|
|
const PREF_INT = 64;
|
|
const PREF_STRING = 32;
|
|
|
|
function run_test() {
|
|
|
|
var ps = Cc["@mozilla.org/preferences-service;1"].
|
|
getService(Ci.nsIPrefService);
|
|
|
|
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(prefFile);
|
|
do_check_false(ps.dirty);
|
|
|
|
// set a new a user value, we should become dirty
|
|
userBranch.setBoolPref("DirtyTest.new.bool", true);
|
|
do_check_true(ps.dirty);
|
|
ps.savePrefFile(prefFile);
|
|
// Overwrite a pref with the same value => not dirty
|
|
userBranch.setBoolPref("DirtyTest.new.bool", true);
|
|
do_check_false(ps.dirty);
|
|
|
|
// Repeat for the other two types
|
|
userBranch.setIntPref("DirtyTest.new.int", 1);
|
|
do_check_true(ps.dirty);
|
|
ps.savePrefFile(prefFile);
|
|
// Overwrite a pref with the same value => not dirty
|
|
userBranch.setIntPref("DirtyTest.new.int", 1);
|
|
do_check_false(ps.dirty);
|
|
|
|
userBranch.setCharPref("DirtyTest.new.char", "oop");
|
|
do_check_true(ps.dirty);
|
|
ps.savePrefFile(prefFile);
|
|
// Overwrite a pref with the same value => not dirty
|
|
userBranch.setCharPref("DirtyTest.new.char", "oop");
|
|
do_check_false(ps.dirty);
|
|
|
|
// change *type* of a user value -> dirty
|
|
userBranch.setBoolPref("DirtyTest.new.char", false);
|
|
do_check_true(ps.dirty);
|
|
ps.savePrefFile(prefFile);
|
|
|
|
// Set a default pref => not dirty (defaults don't go into prefs.js)
|
|
defaultBranch.setBoolPref("DirtyTest.existing.bool", true);
|
|
do_check_false(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);
|
|
do_check_false(ps.dirty);
|
|
|
|
// Set user value same as default, not dirty
|
|
userBranch.setBoolPref("DirtyTest.existing.bool", true);
|
|
do_check_false(ps.dirty);
|
|
// User value different from default, dirty
|
|
userBranch.setBoolPref("DirtyTest.existing.bool", false);
|
|
do_check_true(ps.dirty);
|
|
ps.savePrefFile(prefFile);
|
|
// Back to default value, dirty again
|
|
userBranch.setBoolPref("DirtyTest.existing.bool", true);
|
|
do_check_true(ps.dirty);
|
|
ps.savePrefFile(prefFile);
|
|
}
|