mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
156 lines
5.6 KiB
JavaScript
156 lines
5.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/. */
|
|
"use strict";
|
|
|
|
const { Cc, Ci, Cu } = require("chrome");
|
|
const prefs = require("sdk/preferences/service");
|
|
const Branch = prefs.Branch;
|
|
const BundleService = Cc["@mozilla.org/intl/stringbundle;1"].getService(Ci.nsIStringBundleService);
|
|
|
|
const specialChars = "!@#$%^&*()_-=+[]{}~`\'\"<>,./?;:";
|
|
|
|
exports.testReset = function(assert) {
|
|
prefs.reset("test_reset_pref");
|
|
assert.equal(prefs.has("test_reset_pref"), false);
|
|
assert.equal(prefs.isSet("test_reset_pref"), false);
|
|
prefs.set("test_reset_pref", 5);
|
|
assert.equal(prefs.has("test_reset_pref"), true);
|
|
assert.equal(prefs.isSet("test_reset_pref"), true);
|
|
assert.equal(prefs.keys("test_reset_pref").toString(), "test_reset_pref");
|
|
};
|
|
|
|
exports.testGetAndSet = function(assert) {
|
|
let svc = Cc["@mozilla.org/preferences-service;1"].
|
|
getService(Ci.nsIPrefService).
|
|
getBranch(null);
|
|
svc.setCharPref("test_set_get_pref", "a normal string");
|
|
assert.equal(prefs.get("test_set_get_pref"), "a normal string",
|
|
"preferences-service should read from " +
|
|
"application-wide preferences service");
|
|
|
|
// test getting a pref that does not exist,
|
|
// and where we provide no default
|
|
assert.equal(
|
|
prefs.get("test_dne_get_pref", "default"),
|
|
"default",
|
|
"default was used for a pref that does not exist");
|
|
assert.equal(
|
|
prefs.get("test_dne_get_pref"),
|
|
undefined,
|
|
"undefined was returned for a pref that does not exist with no default");
|
|
|
|
prefs.set("test_set_get_pref.integer", 1);
|
|
assert.equal(prefs.get("test_set_get_pref.integer"), 1,
|
|
"set/get integer preference should work");
|
|
|
|
assert.equal(
|
|
prefs.keys("test_set_get_pref").sort().toString(),
|
|
["test_set_get_pref.integer","test_set_get_pref"].sort().toString(),
|
|
"the key list is correct");
|
|
|
|
prefs.set("test_set_get_number_pref", 42);
|
|
assert.throws(
|
|
() => prefs.set("test_set_get_number_pref", 3.14159),
|
|
/cannot store non-integer number: 3.14159/,
|
|
"setting a float preference should raise an error"
|
|
);
|
|
assert.equal(prefs.get("test_set_get_number_pref"),
|
|
42,
|
|
"bad-type write attempt should not overwrite");
|
|
|
|
// 0x80000000 (bad), 0x7fffffff (ok), -0x80000000 (ok), -0x80000001 (bad)
|
|
assert.throws(
|
|
() => prefs.set("test_set_get_number_pref", 0x80000000),
|
|
/32\-bit/,
|
|
"setting an int pref above 2^31-1 shouldn't work"
|
|
);
|
|
|
|
assert.equal(prefs.get("test_set_get_number_pref"), 42,
|
|
"out-of-range write attempt should not overwrite 1");
|
|
|
|
prefs.set("test_set_get_number_pref", 0x7fffffff);
|
|
assert.equal(prefs.get("test_set_get_number_pref"),
|
|
0x7fffffff,
|
|
"in-range write attempt should work 1");
|
|
|
|
prefs.set("test_set_get_number_pref", -0x80000000);
|
|
assert.equal(prefs.get("test_set_get_number_pref"),
|
|
-0x80000000,
|
|
"in-range write attempt should work 2");
|
|
assert.throws(
|
|
() => prefs.set("test_set_get_number_pref", -0x80000001),
|
|
/32\-bit/,
|
|
"setting an int pref below -(2^31) shouldn't work"
|
|
);
|
|
assert.equal(prefs.get("test_set_get_number_pref"), -0x80000000,
|
|
"out-of-range write attempt should not overwrite 2");
|
|
|
|
|
|
prefs.set("test_set_get_pref.string", "foo");
|
|
assert.equal(prefs.get("test_set_get_pref.string"), "foo",
|
|
"set/get string preference should work");
|
|
|
|
prefs.set("test_set_get_pref.boolean", true);
|
|
assert.equal(prefs.get("test_set_get_pref.boolean"), true,
|
|
"set/get boolean preference should work");
|
|
|
|
prefs.set("test_set_get_unicode_pref", String.fromCharCode(960));
|
|
assert.equal(prefs.get("test_set_get_unicode_pref"),
|
|
String.fromCharCode(960),
|
|
"set/get unicode preference should work");
|
|
|
|
[ null, [], undefined ].forEach((value) => {
|
|
assert.throws(
|
|
() => prefs.set("test_set_pref", value),
|
|
new RegExp("can't set pref test_set_pref to value '" + value + "'; " +
|
|
"it isn't a string, number, or boolean", "i"),
|
|
"Setting a pref to " + uneval(value) + " should raise error"
|
|
);
|
|
});
|
|
};
|
|
|
|
exports.testPrefClass = function(assert) {
|
|
var branch = Branch("test_foo");
|
|
|
|
assert.equal(branch.test, undefined, "test_foo.test is undefined");
|
|
branch.test = true;
|
|
assert.equal(branch.test, true, "test_foo.test is true");
|
|
delete branch.test;
|
|
assert.equal(branch.test, undefined, "test_foo.test is undefined");
|
|
};
|
|
|
|
exports.testGetSetLocalized = function(assert) {
|
|
let prefName = "general.useragent.locale";
|
|
|
|
// Ensure that "general.useragent.locale" is a 'localized' pref
|
|
let bundleURL = "chrome://global/locale/intl.properties";
|
|
prefs.setLocalized(prefName, bundleURL);
|
|
|
|
// Fetch the expected value directly from the property file
|
|
let expectedValue = BundleService.createBundle(bundleURL).
|
|
GetStringFromName(prefName).
|
|
toLowerCase();
|
|
|
|
assert.equal(prefs.getLocalized(prefName).toLowerCase(),
|
|
expectedValue,
|
|
"get localized preference");
|
|
|
|
// Undo our modification
|
|
prefs.reset(prefName);
|
|
}
|
|
|
|
// TEST: setting and getting preferences with special characters work
|
|
exports.testSpecialChars = function(assert) {
|
|
let chars = specialChars.split('');
|
|
const ROOT = "test.";
|
|
|
|
chars.forEach((char) => {
|
|
let rand = Math.random() + "";
|
|
prefs.set(ROOT + char, rand);
|
|
assert.equal(prefs.get(ROOT+char), rand, "setting pref with a name that is a special char, " + char + ", worked!");
|
|
});
|
|
};
|
|
|
|
require("sdk/test").run(exports);
|