summaryrefslogtreecommitdiffstats
path: root/devtools/server/tests/mochitest/test_preference.html
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/server/tests/mochitest/test_preference.html')
-rw-r--r--devtools/server/tests/mochitest/test_preference.html115
1 files changed, 115 insertions, 0 deletions
diff --git a/devtools/server/tests/mochitest/test_preference.html b/devtools/server/tests/mochitest/test_preference.html
new file mode 100644
index 000000000..54903f455
--- /dev/null
+++ b/devtools/server/tests/mochitest/test_preference.html
@@ -0,0 +1,115 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+Bug 943251 - Allow accessing about:config from WebIDE
+-->
+<head>
+ <meta charset="utf-8">
+ <title>Test Preference Actor</title>
+ <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
+ <link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css">
+</head>
+<body>
+<pre id="test">
+<script>
+
+function runTests() {
+ var Cu = Components.utils;
+ var Cc = Components.classes;
+ var Ci = Components.interfaces;
+
+ var {require} = Cu.import("resource://devtools/shared/Loader.jsm", {});
+ var {DebuggerClient} = require("devtools/shared/client/main");
+ var {DebuggerServer} = require("devtools/server/main");
+ var Services = require("Services");
+
+ SimpleTest.waitForExplicitFinish();
+
+ var {getPreferenceFront} = require("devtools/shared/fronts/preference");
+
+ DebuggerServer.init();
+ DebuggerServer.addBrowserActors();
+
+ var client = new DebuggerClient(DebuggerServer.connectPipe());
+ client.connect().then(function onConnect() {
+ client.listTabs(function onListTabs(aResponse) {
+ var p = getPreferenceFront(client, aResponse);
+
+ var prefs = {};
+
+ var localPref = {
+ boolPref: true,
+ intPref: 0x1234,
+ charPref: "Hello World",
+ };
+
+
+ function checkValues() {
+ is(prefs.boolPref, localPref.boolPref, "read/write bool pref");
+ is(prefs.intPref, localPref.intPref, "read/write int pref");
+ is(prefs.charPref, localPref.charPref, "read/write string pref");
+
+ ["test.all.bool", "test.all.int", "test.all.string"].forEach(function(key) {
+ var expectedValue;
+ switch(Services.prefs.getPrefType(key)) {
+ case Ci.nsIPrefBranch.PREF_STRING:
+ expectedValue = Services.prefs.getCharPref(key);
+ break;
+ case Ci.nsIPrefBranch.PREF_INT:
+ expectedValue = Services.prefs.getIntPref(key);
+ break;
+ case Ci.nsIPrefBranch.PREF_BOOL:
+ expectedValue = Services.prefs.getBoolPref(key);
+ break;
+ default:
+ ok(false, "unexpected pref type (" + key + ")");
+ break;
+ }
+
+ is(prefs.allPrefs[key].value, expectedValue, "valid preference value (" + key + ")");
+ is(prefs.allPrefs[key].hasUserValue, Services.prefs.prefHasUserValue(key), "valid hasUserValue (" + key + ")");
+ });
+
+ ["test.bool", "test.int", "test.string"].forEach(function(key) {
+ ok(!prefs.allPrefs.hasOwnProperty(key), "expect no pref (" + key + ")");
+ is(Services.prefs.getPrefType(key), Ci.nsIPrefBranch.PREF_INVALID, "pref (" + key + ") is clear");
+ });
+
+ client.close().then(() => {
+ DebuggerServer.destroy();
+ SimpleTest.finish()
+ });
+ }
+
+
+ p.getAllPrefs().then((json) => prefs["allPrefs"] = json)
+ .then(() => p.setBoolPref("test.bool", localPref.boolPref))
+ .then(() => p.setIntPref("test.int", localPref.intPref))
+ .then(() => p.setCharPref("test.string", localPref.charPref))
+ .then(() => p.getBoolPref("test.bool")).then((value) => prefs["boolPref"] = value)
+ .then(() => p.getIntPref("test.int")).then((value) => prefs["intPref"] = value)
+ .then(() => p.getCharPref("test.string")).then((value) => prefs["charPref"] = value)
+ .then(() => p.clearUserPref("test.bool"))
+ .then(() => p.clearUserPref("test.int"))
+ .then(() => p.clearUserPref("test.string"))
+ .then(checkValues);
+
+ });
+ });
+
+}
+
+window.onload = function () {
+ SpecialPowers.pushPrefEnv({
+ "set": [
+ ["devtools.debugger.forbid-certified-apps", false],
+ ["test.all.bool", true],
+ ["test.all.int", 0x4321],
+ ["test.all.string", "allizom"],
+ ]
+ }, runTests);
+}
+</script>
+</pre>
+</body>
+</html>