browser_cookiePermission_subDomains_v2.js (8794B)
1 const { SiteDataTestUtils } = ChromeUtils.importESModule( 2 "resource://testing-common/SiteDataTestUtils.sys.mjs" 3 ); 4 5 add_setup(async function () { 6 await SpecialPowers.pushPrefEnv({ 7 set: [ 8 ["privacy.sanitize.sanitizeOnShutdown", true], 9 ["privacy.clearOnShutdown.cookiesAndStorage", true], 10 ["privacy.clearOnShutdown.cache", false], 11 ["privacy.clearOnShutdown.historyAndFormData", false], 12 ["privacy.clearOnShutdown.downloads", false], 13 ["privacy.clearOnShutdown.siteSettings", false], 14 ["browser.sanitizer.loglevel", "All"], 15 ["privacy.sanitize.useOldClearHistoryDialog", false], 16 ], 17 }); 18 }); 19 // 2 domains: www.mozilla.org (session-only) mozilla.org (allowed) - after the 20 // cleanp, mozilla.org must have data. 21 add_task(async function subDomains1() { 22 info("Test subdomains and custom setting"); 23 24 // Let's clean up all the data. 25 await new Promise(resolve => { 26 Services.clearData.deleteData(Ci.nsIClearDataService.CLEAR_ALL, resolve); 27 }); 28 29 // Domains and data 30 let originA = "https://www.mozilla.org"; 31 PermissionTestUtils.add( 32 originA, 33 "cookie", 34 Ci.nsICookiePermission.ACCESS_SESSION 35 ); 36 37 SiteDataTestUtils.addToCookies({ origin: originA }); 38 await SiteDataTestUtils.addToIndexedDB(originA); 39 40 let originB = "https://mozilla.org"; 41 PermissionTestUtils.add( 42 originB, 43 "cookie", 44 Ci.nsICookiePermission.ACCESS_ALLOW 45 ); 46 47 SiteDataTestUtils.addToCookies({ origin: originB }); 48 await SiteDataTestUtils.addToIndexedDB(originB); 49 50 // Check 51 ok(SiteDataTestUtils.hasCookies(originA), "We have cookies for " + originA); 52 ok( 53 await SiteDataTestUtils.hasIndexedDB(originA), 54 "We have IDB for " + originA 55 ); 56 ok(SiteDataTestUtils.hasCookies(originB), "We have cookies for " + originB); 57 ok( 58 await SiteDataTestUtils.hasIndexedDB(originB), 59 "We have IDB for " + originB 60 ); 61 62 // Cleaning up 63 await Sanitizer.runSanitizeOnShutdown(); 64 65 // Check again 66 ok( 67 !SiteDataTestUtils.hasCookies(originA), 68 "We should not have cookies for " + originA 69 ); 70 ok( 71 !(await SiteDataTestUtils.hasIndexedDB(originA)), 72 "We should not have IDB for " + originA 73 ); 74 ok(SiteDataTestUtils.hasCookies(originB), "We have cookies for " + originB); 75 ok( 76 await SiteDataTestUtils.hasIndexedDB(originB), 77 "We have IDB for " + originB 78 ); 79 80 // Cleaning up permissions 81 PermissionTestUtils.remove(originA, "cookie"); 82 PermissionTestUtils.remove(originB, "cookie"); 83 }); 84 85 // session only cookie life-time, 2 domains (sub.mozilla.org, www.mozilla.org), 86 // only the former has a cookie permission. 87 add_task(async function subDomains2() { 88 info("Test subdomains and custom setting with cookieBehavior == 2"); 89 90 // Let's clean up all the data. 91 await new Promise(resolve => { 92 Services.clearData.deleteData(Ci.nsIClearDataService.CLEAR_ALL, resolve); 93 }); 94 95 // Domains and data 96 let originA = "https://sub.mozilla.org"; 97 PermissionTestUtils.add( 98 originA, 99 "cookie", 100 Ci.nsICookiePermission.ACCESS_ALLOW 101 ); 102 103 SiteDataTestUtils.addToCookies({ origin: originA }); 104 await SiteDataTestUtils.addToIndexedDB(originA); 105 106 let originB = "https://www.mozilla.org"; 107 108 SiteDataTestUtils.addToCookies({ origin: originB }); 109 await SiteDataTestUtils.addToIndexedDB(originB); 110 111 // Check 112 ok(SiteDataTestUtils.hasCookies(originA), "We have cookies for " + originA); 113 ok( 114 await SiteDataTestUtils.hasIndexedDB(originA), 115 "We have IDB for " + originA 116 ); 117 ok(SiteDataTestUtils.hasCookies(originB), "We have cookies for " + originB); 118 ok( 119 await SiteDataTestUtils.hasIndexedDB(originB), 120 "We have IDB for " + originB 121 ); 122 123 // Cleaning up 124 await Sanitizer.runSanitizeOnShutdown(); 125 126 // Check again 127 ok(SiteDataTestUtils.hasCookies(originA), "We have cookies for " + originA); 128 ok( 129 await SiteDataTestUtils.hasIndexedDB(originA), 130 "We have IDB for " + originA 131 ); 132 ok( 133 !SiteDataTestUtils.hasCookies(originB), 134 "We should not have cookies for " + originB 135 ); 136 ok( 137 !(await SiteDataTestUtils.hasIndexedDB(originB)), 138 "We should not have IDB for " + originB 139 ); 140 141 // Cleaning up permissions 142 PermissionTestUtils.remove(originA, "cookie"); 143 }); 144 145 // session only cookie life-time, 3 domains (sub.mozilla.org, www.mozilla.org, mozilla.org), 146 // only the former has a cookie permission. Both sub.mozilla.org and mozilla.org should 147 // be sustained. 148 add_task(async function subDomains3() { 149 info( 150 "Test base domain and subdomains and custom setting with cookieBehavior == 2" 151 ); 152 153 // Let's clean up all the data. 154 await new Promise(resolve => { 155 Services.clearData.deleteData(Ci.nsIClearDataService.CLEAR_ALL, resolve); 156 }); 157 158 // Domains and data 159 let originA = "https://sub.mozilla.org"; 160 PermissionTestUtils.add( 161 originA, 162 "cookie", 163 Ci.nsICookiePermission.ACCESS_ALLOW 164 ); 165 SiteDataTestUtils.addToCookies({ origin: originA }); 166 await SiteDataTestUtils.addToIndexedDB(originA); 167 168 let originB = "https://mozilla.org"; 169 SiteDataTestUtils.addToCookies({ origin: originB }); 170 await SiteDataTestUtils.addToIndexedDB(originB); 171 172 let originC = "https://www.mozilla.org"; 173 SiteDataTestUtils.addToCookies({ origin: originC }); 174 await SiteDataTestUtils.addToIndexedDB(originC); 175 176 // Check 177 ok(SiteDataTestUtils.hasCookies(originA), "We have cookies for " + originA); 178 ok( 179 await SiteDataTestUtils.hasIndexedDB(originA), 180 "We have IDB for " + originA 181 ); 182 ok(SiteDataTestUtils.hasCookies(originB), "We have cookies for " + originB); 183 ok( 184 await SiteDataTestUtils.hasIndexedDB(originB), 185 "We have IDB for " + originB 186 ); 187 ok(SiteDataTestUtils.hasCookies(originC), "We have cookies for " + originC); 188 ok( 189 await SiteDataTestUtils.hasIndexedDB(originC), 190 "We have IDB for " + originC 191 ); 192 193 // Cleaning up 194 await Sanitizer.runSanitizeOnShutdown(); 195 196 // Check again 197 ok(SiteDataTestUtils.hasCookies(originA), "We have cookies for " + originA); 198 ok( 199 await SiteDataTestUtils.hasIndexedDB(originA), 200 "We have IDB for " + originA 201 ); 202 ok(SiteDataTestUtils.hasCookies(originB), "We have cookies for " + originB); 203 ok( 204 await SiteDataTestUtils.hasIndexedDB(originB), 205 "We have IDB for " + originB 206 ); 207 ok( 208 !SiteDataTestUtils.hasCookies(originC), 209 "We should not have cookies for " + originC 210 ); 211 ok( 212 !(await SiteDataTestUtils.hasIndexedDB(originC)), 213 "We should not have IDB for " + originC 214 ); 215 216 // Cleaning up permissions 217 PermissionTestUtils.remove(originA, "cookie"); 218 }); 219 220 // clear on shutdown, 3 domains (sub.sub.mozilla.org, sub.mozilla.org, mozilla.org), 221 // only the former has a cookie permission. Both sub.mozilla.org and mozilla.org should 222 // be sustained due to Permission of sub.sub.mozilla.org 223 add_task(async function subDomains4() { 224 info("Test subdomain cookie permission inheritance with two subdomains"); 225 226 // Let's clean up all the data. 227 await new Promise(resolve => { 228 Services.clearData.deleteData(Ci.nsIClearDataService.CLEAR_ALL, resolve); 229 }); 230 231 // Domains and data 232 let originA = "https://sub.sub.mozilla.org"; 233 PermissionTestUtils.add( 234 originA, 235 "cookie", 236 Ci.nsICookiePermission.ACCESS_ALLOW 237 ); 238 SiteDataTestUtils.addToCookies({ origin: originA }); 239 await SiteDataTestUtils.addToIndexedDB(originA); 240 241 let originB = "https://sub.mozilla.org"; 242 SiteDataTestUtils.addToCookies({ origin: originB }); 243 await SiteDataTestUtils.addToIndexedDB(originB); 244 245 let originC = "https://mozilla.org"; 246 SiteDataTestUtils.addToCookies({ origin: originC }); 247 await SiteDataTestUtils.addToIndexedDB(originC); 248 249 // Check 250 ok(SiteDataTestUtils.hasCookies(originA), "We have cookies for " + originA); 251 ok( 252 await SiteDataTestUtils.hasIndexedDB(originA), 253 "We have IDB for " + originA 254 ); 255 ok(SiteDataTestUtils.hasCookies(originB), "We have cookies for " + originB); 256 ok( 257 await SiteDataTestUtils.hasIndexedDB(originB), 258 "We have IDB for " + originB 259 ); 260 ok(SiteDataTestUtils.hasCookies(originC), "We have cookies for " + originC); 261 ok( 262 await SiteDataTestUtils.hasIndexedDB(originC), 263 "We have IDB for " + originC 264 ); 265 266 // Cleaning up 267 await Sanitizer.runSanitizeOnShutdown(); 268 269 // Check again 270 ok(SiteDataTestUtils.hasCookies(originA), "We have cookies for " + originA); 271 ok( 272 await SiteDataTestUtils.hasIndexedDB(originA), 273 "We have IDB for " + originA 274 ); 275 ok(SiteDataTestUtils.hasCookies(originB), "We have cookies for " + originB); 276 ok( 277 await SiteDataTestUtils.hasIndexedDB(originB), 278 "We have IDB for " + originB 279 ); 280 ok(SiteDataTestUtils.hasCookies(originC), "We have cookies for " + originC); 281 ok( 282 await SiteDataTestUtils.hasIndexedDB(originC), 283 "We have IDB for " + originC 284 ); 285 286 // Cleaning up permissions 287 PermissionTestUtils.remove(originA, "cookie"); 288 });