1
0
mirror of https://github.com/roytam1/UXP.git synced 2026-06-10 18:38:34 +00:00
Files
UXP/devtools/client/shared/shim/test/test_service_prefs.html
T

245 lines
7.0 KiB
HTML

<!DOCTYPE html>
<html>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=1265808
-->
<head>
<title>Test for Bug 1265808 - replace Services.prefs</title>
<script type="text/javascript" src="/MochiKit/MochiKit.js"></script>
<script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css"
href="chrome://mochikit/content/tests/SimpleTest/test.css">
<script type="application/javascript;version=1.8">
"use strict";
var exports = {}
var module = {exports};
// Add some starter prefs.
localStorage.setItem("Services.prefs:devtools.branch1.somebool", JSON.stringify({
// bool
type: 128,
defaultValue: false,
hasUserValue: false,
userValue: false
}));
localStorage.setItem("Services.prefs:devtools.branch1.somestring", JSON.stringify({
// string
type: 32,
defaultValue: "dinosaurs",
hasUserValue: true,
userValue: "elephants"
}));
localStorage.setItem("Services.prefs:devtools.branch2.someint", JSON.stringify({
// string
type: 64,
defaultValue: -16,
hasUserValue: false,
userValue: null
}));
</script>
<script type="application/javascript;version=1.8"
src="prefs-wrapper.js"></script>
<script type="application/javascript;version=1.8"
src="resource://devtools/client/shared/shim/Services.js"></script>
</head>
<body>
<script type="application/javascript;version=1.8">
"use strict";
function do_tests() {
// We can't load the defaults in this context.
Services._defaultPrefsEnabled = false;
is(Services.prefs.getBoolPref("devtools.branch1.somebool"), false,
"bool pref value");
Services.prefs.setBoolPref("devtools.branch1.somebool", true);
is(Services.prefs.getBoolPref("devtools.branch1.somebool"), true,
"bool pref value after setting");
let threw;
try {
threw = false;
WrappedPrefs.getIntPref("devtools.branch1.somebool");
} catch (e) {
threw = true;
}
ok(threw, "type-checking for bool pref");
try {
threw = false;
Services.prefs.setIntPref("devtools.branch1.somebool", 27);
} catch (e) {
threw = true;
}
ok(threw, "type-checking for setting bool pref");
try {
threw = false;
Services.prefs.setBoolPref("devtools.branch1.somebool", 27);
} catch (e) {
threw = true;
}
ok(threw, "setting bool pref to wrong type");
try {
threw = false;
Services.prefs.getCharPref("devtools.branch2.someint");
} catch (e) {
threw = true;
}
ok(threw, "type-checking for int pref");
try {
threw = false;
Services.prefs.setCharPref("devtools.branch2.someint", "whatever");
} catch (e) {
threw = true;
}
ok(threw, "type-checking for setting int pref");
try {
threw = false;
Services.prefs.setIntPref("devtools.branch2.someint", "whatever");
} catch (e) {
threw = true;
}
ok(threw, "setting int pref to wrong type");
try {
threw = false;
Services.prefs.getBoolPref("devtools.branch1.somestring");
} catch (e) {
threw = true;
}
ok(threw, "type-checking for char pref");
try {
threw = false;
Services.prefs.setBoolPref("devtools.branch1.somestring", true);
} catch (e) {
threw = true;
}
ok(threw, "type-checking for setting char pref");
try {
threw = false;
Services.prefs.setCharPref("devtools.branch1.somestring", true);
} catch (e) {
threw = true;
}
ok(threw, "setting char pref to wrong type");
is(Services.prefs.getPrefType("devtools.branch1.somebool"),
Services.prefs.PREF_BOOL, "type of bool pref");
is(Services.prefs.getPrefType("devtools.branch2.someint"),
Services.prefs.PREF_INT, "type of int pref");
is(Services.prefs.getPrefType("devtools.branch1.somestring"),
Services.prefs.PREF_STRING, "type of string pref");
WrappedPrefs.setBoolPref("devtools.branch1.somebool", true);
ok(WrappedPrefs.getBoolPref("devtools.branch1.somebool"), "set bool pref");
WrappedPrefs.setIntPref("devtools.branch2.someint", -93);
is(WrappedPrefs.getIntPref("devtools.branch2.someint"), -93, "set int pref");
WrappedPrefs.setCharPref("devtools.branch1.somestring", "hello");
is(WrappedPrefs.getCharPref("devtools.branch1.somestring"), "hello",
"set string pref");
Services.prefs.clearUserPref("devtools.branch1.somestring");
is(Services.prefs.getCharPref("devtools.branch1.somestring"), "dinosaurs",
"clear string pref");
ok(Services.prefs.prefHasUserValue("devtools.branch1.somebool"),
"bool pref has user value");
ok(!Services.prefs.prefHasUserValue("devtools.branch1.somestring"),
"string pref does not have user value");
Services.prefs.savePrefFile(null);
ok(true, "saved pref file without error");
let branch0 = Services.prefs.getBranch(null);
let branch1 = Services.prefs.getBranch("devtools.branch1.");
branch1.setCharPref("somestring", "octopus");
Services.prefs.setCharPref("devtools.branch1.somestring", "octopus");
is(Services.prefs.getCharPref("devtools.branch1.somestring"), "octopus",
"set correctly via branch");
is(branch0.getCharPref("devtools.branch1.somestring"), "octopus",
"get via base branch");
is(branch1.getCharPref("somestring"), "octopus", "get via branch");
let notifications = {};
let clearNotificationList = () => { notifications = {}; }
let observer = {
observe: function (subject, topic, data) {
notifications[data] = true;
}
};
branch0.addObserver("devtools.branch1", null, null);
branch0.addObserver("devtools.branch1.", observer, false);
branch1.addObserver("", observer, false);
Services.prefs.setCharPref("devtools.branch1.somestring", "elf owl");
isDeeply(notifications, {
"devtools.branch1.somestring": true,
"somestring": true
}, "notifications sent to two listeners");
clearNotificationList();
Services.prefs.setIntPref("devtools.branch2.someint", 1729);
isDeeply(notifications, {}, "no notifications sent");
clearNotificationList();
branch0.removeObserver("devtools.branch1.", observer);
Services.prefs.setCharPref("devtools.branch1.somestring", "tapir");
isDeeply(notifications, {
"somestring": true
}, "removeObserver worked");
clearNotificationList();
branch0.addObserver("devtools.branch1.somestring", observer, false);
Services.prefs.setCharPref("devtools.branch1.somestring", "northern shoveler");
isDeeply(notifications, {
"devtools.branch1.somestring": true,
"somestring": true
}, "notifications sent to two listeners");
branch0.removeObserver("devtools.branch1.somestring", observer);
// Make sure we update if the pref change comes from somewhere else.
clearNotificationList();
pref("devtools.branch1.someotherstring", "lazuli bunting");
isDeeply(notifications, {
"someotherstring": true
}, "pref worked");
// Regression test for bug 1296427.
pref("devtools.hud.loglimit", 1000);
pref("devtools.hud.loglimit.network", 1000);
// Clean up.
localStorage.clear();
SimpleTest.finish();
}
SimpleTest.waitForExplicitFinish();
SpecialPowers.pushPrefEnv(
{"set": [
["devtools.branch1.somestring", "elephants"],
["devtools.branch1.somebool", false],
["devtools.branch2.someint", "-16"],
]},
do_tests);
</script>
</body>