test_permmanager_removePermissionsWithAttributes.js (6020B)
1 /* Any copyright is dedicated to the Public Domain. 2 http://creativecommons.org/publicdomain/zero/1.0/ */ 3 4 add_task(function testRemovePermissionsByOriginAttributes() { 5 // initialize the permission manager service 6 let pm = Services.perms; 7 8 Assert.equal(pm.all.length, 0, "Should start with no permissions"); 9 10 // add some permissions 11 let attrs1 = { 12 privateBrowsingId: 1, 13 }; 14 let principal = Services.scriptSecurityManager.createContentPrincipal( 15 Services.io.newURI("http://amazon.com:8080"), 16 attrs1 17 ); 18 19 let attrs2 = { 20 partitionKey: "example.com", 21 privateBrowsingId: 1, 22 }; 23 let principal2 = Services.scriptSecurityManager.createContentPrincipal( 24 Services.io.newURI("http://google.com:2048"), 25 attrs2 26 ); 27 28 let attrs3 = { 29 privateBrowsingId: 0, 30 }; 31 let principal3 = Services.scriptSecurityManager.createContentPrincipal( 32 Services.io.newURI("https://google.com"), 33 attrs3 34 ); 35 36 let principal4 = Services.scriptSecurityManager.createContentPrincipal( 37 Services.io.newURI("https://mozilla.org"), 38 {} 39 ); 40 41 pm.addFromPrincipal(principal, "type", Ci.nsIPermissionManager.ALLOW_ACTION); 42 pm.addFromPrincipal(principal2, "type", Ci.nsIPermissionManager.ALLOW_ACTION); 43 pm.addFromPrincipal(principal3, "type", Ci.nsIPermissionManager.ALLOW_ACTION); 44 pm.addFromPrincipal(principal4, "type", Ci.nsIPermissionManager.ALLOW_ACTION); 45 46 Assert.equal(pm.all.length, 4, "Check all permissions added"); 47 48 pm.removePermissionsWithAttributes(JSON.stringify(attrs1), [], []); 49 50 // check exact match removed 51 Assert.equal( 52 pm.testPermissionFromPrincipal( 53 principal, 54 "type", 55 "Check exact match removed" 56 ), 57 Ci.nsIPermissionManager.UNKNOWN_ACTION 58 ); 59 60 // check non-exact match removed 61 Assert.equal( 62 pm.testPermissionFromPrincipal( 63 principal2, 64 "type", 65 "Check non-exact match removed" 66 ), 67 Ci.nsIPermissionManager.UNKNOWN_ACTION 68 ); 69 70 // check non-match not removed 71 Assert.equal( 72 pm.testPermissionFromPrincipal( 73 principal3, 74 "type", 75 "Check non-match not removed" 76 ), 77 Ci.nsIPermissionManager.ALLOW_ACTION 78 ); 79 80 // check default originattributes (privateBrowsingId=0) not removed 81 Assert.equal( 82 pm.testPermissionFromPrincipal( 83 principal4, 84 "type", 85 "Check default not removed" 86 ), 87 Ci.nsIPermissionManager.ALLOW_ACTION 88 ); 89 90 pm.removePermissionsWithAttributes(JSON.stringify({}), [], []); 91 92 // check all removed 93 Assert.equal(pm.all.length, 0, "All permissions should be removed"); 94 }); 95 96 add_task(function testRemovePermissionsByOriginAttributesWithExceptions() { 97 // initialize the permission manager service 98 let pm = Services.perms; 99 100 Assert.equal(pm.all.length, 0, "Should start with no permissions"); 101 102 // add some permissions 103 let attrs = { partitionKey: "mozilla.org" }; 104 let principal = Services.scriptSecurityManager.createContentPrincipal( 105 Services.io.newURI("http://amazon.com:8080"), 106 attrs 107 ); 108 109 let principal2 = Services.scriptSecurityManager.createContentPrincipal( 110 Services.io.newURI("http://google.com:2048"), 111 attrs 112 ); 113 114 let principal3 = Services.scriptSecurityManager.createContentPrincipal( 115 Services.io.newURI("https://google.com"), 116 {} 117 ); 118 119 pm.addFromPrincipal( 120 principal, 121 "apple", 122 Ci.nsIPermissionManager.PROMPT_ACTION 123 ); 124 pm.addFromPrincipal(principal, "pear", Ci.nsIPermissionManager.ALLOW_ACTION); 125 pm.addFromPrincipal( 126 principal, 127 "cucumber", 128 Ci.nsIPermissionManager.ALLOW_ACTION 129 ); 130 pm.addFromPrincipal( 131 principal, 132 "watermelon", 133 Ci.nsIPermissionManager.ALLOW_ACTION 134 ); 135 136 pm.addFromPrincipal(principal2, "apple", Ci.nsIPermissionManager.DENY_ACTION); 137 pm.addFromPrincipal(principal2, "pear", Ci.nsIPermissionManager.DENY_ACTION); 138 139 pm.addFromPrincipal( 140 principal3, 141 "cucumber", 142 Ci.nsIPermissionManager.PROMPT_ACTION 143 ); 144 pm.addFromPrincipal( 145 principal3, 146 "apple", 147 Ci.nsIPermissionManager.ALLOW_ACTION 148 ); 149 150 Assert.equal(pm.all.length, 8, "Check all permissions added"); 151 152 // remove all of type "apple" with originAttributes attrs 153 pm.removePermissionsWithAttributes(JSON.stringify(attrs), ["apple"], []); 154 Assert.equal( 155 pm.all.length, 156 6, 157 '"apple" permissions with attr should be removed' 158 ); 159 160 Assert.equal(pm.testPermissionFromPrincipal(principal, "apple"), 0); 161 Assert.equal( 162 pm.testPermissionFromPrincipal(principal, "pear"), 163 Ci.nsIPermissionManager.ALLOW_ACTION 164 ); 165 Assert.equal( 166 pm.testPermissionFromPrincipal(principal, "cucumber"), 167 Ci.nsIPermissionManager.ALLOW_ACTION 168 ); 169 Assert.equal( 170 pm.testPermissionFromPrincipal(principal, "watermelon"), 171 Ci.nsIPermissionManager.ALLOW_ACTION 172 ); 173 174 Assert.equal( 175 pm.testPermissionFromPrincipal(principal2, "apple"), 176 Ci.nsIPermissionManager.UNKNOWN_ACTION 177 ); 178 Assert.equal( 179 pm.testPermissionFromPrincipal(principal2, "pear"), 180 Ci.nsIPermissionManager.DENY_ACTION 181 ); 182 183 Assert.equal( 184 pm.testPermissionFromPrincipal(principal3, "cucumber"), 185 Ci.nsIPermissionManager.PROMPT_ACTION 186 ); 187 Assert.equal( 188 pm.testPermissionFromPrincipal(principal3, "apple"), 189 Ci.nsIPermissionManager.ALLOW_ACTION 190 ); 191 192 // remove rest except for perm with type "watermelon" 193 pm.removePermissionsWithAttributes(JSON.stringify(attrs), [], ["watermelon"]); 194 Assert.equal( 195 pm.all.length, 196 3, 197 'All permissions with attrs should be removed except type "watermelon"' 198 ); 199 200 Assert.equal( 201 pm.testPermissionFromPrincipal(principal, "watermelon"), 202 Ci.nsIPermissionManager.ALLOW_ACTION 203 ); 204 205 Assert.equal( 206 pm.testPermissionFromPrincipal(principal3, "cucumber"), 207 Ci.nsIPermissionManager.PROMPT_ACTION 208 ); 209 Assert.equal( 210 pm.testPermissionFromPrincipal(principal3, "apple"), 211 Ci.nsIPermissionManager.ALLOW_ACTION 212 ); 213 214 // remove all 215 pm.removePermissionsWithAttributes(JSON.stringify({}), [], []); 216 Assert.equal(pm.all.length, 0, "All permissions should be removed"); 217 });