tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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 });