зеркало из https://github.com/mozilla/gecko-dev.git
100 строки
3.3 KiB
JavaScript
100 строки
3.3 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
function run_test() {
|
|
// initialize the permission manager service
|
|
let ssm = Services.scriptSecurityManager;
|
|
let pm = Services.perms;
|
|
|
|
function mkPrin(uri, appId, inIsolatedMozBrowser) {
|
|
return ssm.createCodebasePrincipal(Services.io.newURI(uri),
|
|
{appId: appId, inIsolatedMozBrowser: inIsolatedMozBrowser});
|
|
}
|
|
|
|
function checkPerms(perms) {
|
|
perms.forEach((perm) => {
|
|
// Look up the expected permission
|
|
do_check_eq(pm.getPermissionObject(mkPrin(perm[0], perm[1], perm[2]),
|
|
perm[3], true).capability,
|
|
perm[4], "Permission is expected in the permission database");
|
|
});
|
|
|
|
// Count the entries
|
|
let count = 0;
|
|
let enumerator = Services.perms.enumerator;
|
|
while (enumerator.hasMoreElements()) { enumerator.getNext(); count++; }
|
|
|
|
do_check_eq(count, perms.length, "There should be the right number of permissions in the DB");
|
|
}
|
|
|
|
checkPerms([]);
|
|
|
|
let permissions = [
|
|
['http://google.com', 1001, false, 'a', 1],
|
|
['http://google.com', 1001, false, 'b', 1],
|
|
['http://mozilla.com', 1001, false, 'b', 1],
|
|
['http://mozilla.com', 1001, false, 'a', 1],
|
|
|
|
['http://google.com', 1001, true, 'a', 1],
|
|
['http://google.com', 1001, true, 'b', 1],
|
|
['http://mozilla.com', 1001, true, 'b', 1],
|
|
['http://mozilla.com', 1001, true, 'a', 1],
|
|
|
|
['http://google.com', 1011, false, 'a', 1],
|
|
['http://google.com', 1011, false, 'b', 1],
|
|
['http://mozilla.com', 1011, false, 'b', 1],
|
|
['http://mozilla.com', 1011, false, 'a', 1],
|
|
];
|
|
|
|
permissions.forEach((perm) => {
|
|
pm.addFromPrincipal(mkPrin(perm[0], perm[1], perm[2]), perm[3], perm[4]);
|
|
});
|
|
|
|
checkPerms(permissions);
|
|
|
|
let remove_false_perms = [
|
|
['http://google.com', 1011, false, 'a', 1],
|
|
['http://google.com', 1011, false, 'b', 1],
|
|
['http://mozilla.com', 1011, false, 'b', 1],
|
|
['http://mozilla.com', 1011, false, 'a', 1],
|
|
];
|
|
|
|
let attrs = { appId: 1001 };
|
|
pm.removePermissionsWithAttributes(JSON.stringify(attrs));
|
|
checkPerms(remove_false_perms);
|
|
|
|
let restore = [
|
|
['http://google.com', 1001, false, 'a', 1],
|
|
['http://google.com', 1001, false, 'b', 1],
|
|
['http://mozilla.com', 1001, false, 'b', 1],
|
|
['http://mozilla.com', 1001, false, 'a', 1],
|
|
|
|
['http://google.com', 1001, true, 'a', 1],
|
|
['http://google.com', 1001, true, 'b', 1],
|
|
['http://mozilla.com', 1001, true, 'b', 1],
|
|
['http://mozilla.com', 1001, true, 'a', 1],
|
|
];
|
|
|
|
restore.forEach((perm) => {
|
|
pm.addFromPrincipal(mkPrin(perm[0], perm[1], perm[2]), perm[3], perm[4]);
|
|
});
|
|
checkPerms(permissions);
|
|
|
|
let remove_true_perms = [
|
|
['http://google.com', 1001, false, 'a', 1],
|
|
['http://google.com', 1001, false, 'b', 1],
|
|
['http://mozilla.com', 1001, false, 'b', 1],
|
|
['http://mozilla.com', 1001, false, 'a', 1],
|
|
|
|
['http://google.com', 1011, false, 'a', 1],
|
|
['http://google.com', 1011, false, 'b', 1],
|
|
['http://mozilla.com', 1011, false, 'b', 1],
|
|
['http://mozilla.com', 1011, false, 'a', 1],
|
|
];
|
|
|
|
attrs = { appId: 1001,
|
|
inIsolatedMozBrowser: true };
|
|
pm.removePermissionsWithAttributes(JSON.stringify(attrs));
|
|
checkPerms(remove_true_perms);
|
|
}
|