tenfourfox/b2g/components/test/mochitest/killswitch.js
Cameron Kaiser c9b2922b70 hello FPR
2017-04-19 00:56:45 -07:00

150 lines
3.8 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";
function setupSettings(target) {
ok((Object.keys(initialSettingsValues).length > 0), "Has at least one setting");
Object.keys(initialSettingsValues).forEach(k => {
ok(Object.keys(target).indexOf(k) !== -1, "Same settings set");
});
var lock = navigator.mozSettings.createLock();
lock.set(initialSettingsValues);
}
function testSettingsInitial(next) {
var promises = [];
for (var setting in initialSettingsValues) {
promises.push(navigator.mozSettings.createLock().get(setting));
}
Promise.all(promises).then(values => {
values.forEach(set => {
var key = Object.keys(set)[0];
var value = set[key];
is(value, initialSettingsValues[key], "Value of " + key + " is initial one");
});
next();
});
}
function testSettingsExpected(target, next) {
var promises = [];
for (var setting in initialSettingsValues) {
promises.push(navigator.mozSettings.createLock().get(setting));
}
Promise.all(promises).then(values => {
values.forEach(set => {
var key = Object.keys(set)[0];
var value = set[key];
is(value, target[key], "Value of " + key + " is expected one");
});
next();
});
}
function testSetPrefValue(prefName, prefValue) {
switch (typeof prefValue) {
case "boolean":
SpecialPowers.setBoolPref(prefName, prefValue);
break;
case "number":
SpecialPowers.setIntPref(prefName, prefValue);
break;
case "string":
SpecialPowers.setCharPref(prefName, prefValue);
break;
default:
is(false, "Unexpected pref type");
break;
}
}
function testGetPrefValue(prefName, prefValue) {
var rv = undefined;
switch (typeof prefValue) {
case "boolean":
rv = SpecialPowers.getBoolPref(prefName);
break;
case "number":
rv = SpecialPowers.getIntPref(prefName);
break;
case "string":
rv = SpecialPowers.getCharPref(prefName);
break;
default:
is(false, "Unexpected pref type");
break;
}
return rv;
}
function setupPrefs(target) {
ok((Object.keys(initialPrefsValues).length > 0), "Has at least one pref");
Object.keys(initialPrefsValues).forEach(k => {
ok(Object.keys(target).indexOf(k) !== -1, "Same pref set");
});
Object.keys(initialPrefsValues).forEach(key => {
testSetPrefValue(key, initialPrefsValues[key]);
});
}
function testPrefsInitial() {
Object.keys(initialPrefsValues).forEach(key => {
var value = testGetPrefValue(key, initialPrefsValues[key]);
is(value, initialPrefsValues[key], "Value of " + key + " is initial one");
});
}
function testPrefsExpected(target) {
Object.keys(target).forEach(key => {
var value = testGetPrefValue(key, target[key]);
is(value, target[key], "Value of " + key + " is initial one");
});
}
function finish() {
SpecialPowers.removePermission("killswitch", document);
SimpleTest.finish();
}
function addPermissions() {
if (SpecialPowers.hasPermission("killswitch", document)) {
startTests();
} else {
var allow = SpecialPowers.Ci.nsIPermissionManager.ALLOW_ACTION;
[ "killswitch", "settings-api-read", "settings-api-write",
"settings-read", "settings-write", "settings-clear"
].forEach(perm => {
SpecialPowers.addPermission(perm, allow, document);
});
window.location.reload();
}
}
function loadSettings() {
var url = SimpleTest.getTestFileURL("file_loadserver.js");
var script = SpecialPowers.loadChromeScript(url);
}
function addPrefs() {
SpecialPowers.pushPrefEnv({"set": [
["dom.ignore_webidl_scope_checks", true],
["dom.mozKillSwitch.enabled", true],
]}, addPermissions);
}