tor-browser

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

browser_cookiePermission_subDomains.js (8868B)


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