58 lines
1.6 KiB
JavaScript
58 lines
1.6 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 pm = Services.perms;
|
|
|
|
Assert.equal(pm.all.length, 0);
|
|
|
|
// add some permissions
|
|
let principal =
|
|
Services.scriptSecurityManager.createContentPrincipalFromOrigin(
|
|
"http://amazon.com:8080"
|
|
);
|
|
let principal2 =
|
|
Services.scriptSecurityManager.createContentPrincipalFromOrigin(
|
|
"http://google.com:2048"
|
|
);
|
|
|
|
pm.addFromPrincipal(principal, "apple", 0);
|
|
pm.addFromPrincipal(principal, "apple", 3);
|
|
pm.addFromPrincipal(principal, "pear", 3);
|
|
pm.addFromPrincipal(principal, "pear", 1);
|
|
pm.addFromPrincipal(principal, "cucumber", 1);
|
|
pm.addFromPrincipal(principal, "cucumber", 1);
|
|
pm.addFromPrincipal(principal, "cucumber", 1);
|
|
|
|
pm.addFromPrincipal(principal2, "apple", 2);
|
|
pm.addFromPrincipal(principal2, "pear", 0);
|
|
pm.addFromPrincipal(principal2, "pear", 2);
|
|
|
|
// Make sure that removePermission doesn't remove more than one permission each time
|
|
Assert.equal(pm.all.length, 5);
|
|
|
|
remove_one_by_type("apple");
|
|
Assert.equal(pm.all.length, 4);
|
|
|
|
remove_one_by_type("apple");
|
|
Assert.equal(pm.all.length, 3);
|
|
|
|
remove_one_by_type("pear");
|
|
Assert.equal(pm.all.length, 2);
|
|
|
|
remove_one_by_type("cucumber");
|
|
Assert.equal(pm.all.length, 1);
|
|
|
|
remove_one_by_type("pear");
|
|
Assert.equal(pm.all.length, 0);
|
|
|
|
function remove_one_by_type(type) {
|
|
for (let perm of pm.all) {
|
|
if (perm.type == type) {
|
|
pm.removePermission(perm);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|