mirror of
https://github.com/ManchildProductions/UXP-Fixed.git
synced 2026-06-10 15:08:45 +00:00
245 lines
7.0 KiB
HTML
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>
|