test_permmanager_removepermission.js (1612B)
1 /* Any copyright is dedicated to the Public Domain. 2 http://creativecommons.org/publicdomain/zero/1.0/ */ 3 4 function run_test() { 5 // initialize the permission manager service 6 let pm = Services.perms; 7 8 Assert.equal(pm.all.length, 0); 9 10 // add some permissions 11 let principal = 12 Services.scriptSecurityManager.createContentPrincipalFromOrigin( 13 "http://amazon.com:8080" 14 ); 15 let principal2 = 16 Services.scriptSecurityManager.createContentPrincipalFromOrigin( 17 "http://google.com:2048" 18 ); 19 20 pm.addFromPrincipal(principal, "apple", 0); 21 pm.addFromPrincipal(principal, "apple", 3); 22 pm.addFromPrincipal(principal, "pear", 3); 23 pm.addFromPrincipal(principal, "pear", 1); 24 pm.addFromPrincipal(principal, "cucumber", 1); 25 pm.addFromPrincipal(principal, "cucumber", 1); 26 pm.addFromPrincipal(principal, "cucumber", 1); 27 28 pm.addFromPrincipal(principal2, "apple", 2); 29 pm.addFromPrincipal(principal2, "pear", 0); 30 pm.addFromPrincipal(principal2, "pear", 2); 31 32 // Make sure that removePermission doesn't remove more than one permission each time 33 Assert.equal(pm.all.length, 5); 34 35 remove_one_by_type("apple"); 36 Assert.equal(pm.all.length, 4); 37 38 remove_one_by_type("apple"); 39 Assert.equal(pm.all.length, 3); 40 41 remove_one_by_type("pear"); 42 Assert.equal(pm.all.length, 2); 43 44 remove_one_by_type("cucumber"); 45 Assert.equal(pm.all.length, 1); 46 47 remove_one_by_type("pear"); 48 Assert.equal(pm.all.length, 0); 49 50 function remove_one_by_type(type) { 51 for (let perm of pm.all) { 52 if (perm.type == type) { 53 pm.removePermission(perm); 54 break; 55 } 56 } 57 } 58 }