tor-browser

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

test_permmanager_site_scope.js (3817B)


      1 const TEST_SITE_URI = Services.io.newURI("http://example.com");
      2 const TEST_FQDN_1_URI = Services.io.newURI("http://test1.example.com");
      3 const TEST_FQDN_2_URI = Services.io.newURI("http://test2.example.com");
      4 const TEST_OTHER_URI = Services.io.newURI("http://example.net");
      5 const TEST_PERMISSION = "3rdPartyStorage^https://example.org";
      6 const TEST_FRAME_PERMISSION = "3rdPartyFrameStorage^https://example.org";
      7 
      8 async function do_test(permission) {
      9  let pm = Services.perms;
     10 
     11  let principal = Services.scriptSecurityManager.createContentPrincipal(
     12    TEST_SITE_URI,
     13    {}
     14  );
     15 
     16  let subdomain1Principal =
     17    Services.scriptSecurityManager.createContentPrincipal(TEST_FQDN_1_URI, {});
     18 
     19  let subdomain2Principal =
     20    Services.scriptSecurityManager.createContentPrincipal(TEST_FQDN_2_URI, {});
     21 
     22  let otherPrincipal = Services.scriptSecurityManager.createContentPrincipal(
     23    TEST_OTHER_URI,
     24    {}
     25  );
     26 
     27  // Set test permission for site
     28  pm.addFromPrincipal(principal, permission, pm.ALLOW_ACTION);
     29 
     30  // Check normal site permission
     31  Assert.equal(
     32    Ci.nsIPermissionManager.ALLOW_ACTION,
     33    pm.testPermissionFromPrincipal(principal, permission)
     34  );
     35 
     36  // Check subdomain permission
     37  Assert.equal(
     38    Ci.nsIPermissionManager.ALLOW_ACTION,
     39    pm.testPermissionFromPrincipal(subdomain1Principal, permission)
     40  );
     41 
     42  // Check other site permission
     43  Assert.equal(
     44    Ci.nsIPermissionManager.UNKNOWN_ACTION,
     45    pm.testPermissionFromPrincipal(otherPrincipal, permission)
     46  );
     47 
     48  // Remove the permission from the site
     49  pm.removeFromPrincipal(principal, permission);
     50  Assert.equal(
     51    pm.testPermissionFromPrincipal(principal, permission),
     52    Ci.nsIPermissionManager.UNKNOWN_ACTION
     53  );
     54  Assert.equal(
     55    pm.testPermissionFromPrincipal(subdomain1Principal, permission),
     56    Ci.nsIPermissionManager.UNKNOWN_ACTION
     57  );
     58 
     59  // Set test permission for subdomain
     60  pm.addFromPrincipal(subdomain1Principal, permission, pm.ALLOW_ACTION);
     61 
     62  // Check normal site permission
     63  Assert.equal(
     64    Ci.nsIPermissionManager.ALLOW_ACTION,
     65    pm.testPermissionFromPrincipal(principal, permission)
     66  );
     67 
     68  // Check subdomain permission
     69  Assert.equal(
     70    Ci.nsIPermissionManager.ALLOW_ACTION,
     71    pm.testPermissionFromPrincipal(subdomain1Principal, permission)
     72  );
     73 
     74  // Check other subdomain permission
     75  Assert.equal(
     76    Ci.nsIPermissionManager.ALLOW_ACTION,
     77    pm.testPermissionFromPrincipal(subdomain2Principal, permission)
     78  );
     79 
     80  // Check other site permission
     81  Assert.equal(
     82    Ci.nsIPermissionManager.UNKNOWN_ACTION,
     83    pm.testPermissionFromPrincipal(otherPrincipal, permission)
     84  );
     85 
     86  // Check that subdomains include the site-scoped in the getAllForPrincipal
     87  let sitePerms = pm.getAllForPrincipal(principal, permission);
     88  let subdomain1Perms = pm.getAllForPrincipal(subdomain1Principal, permission);
     89  let subdomain2Perms = pm.getAllForPrincipal(subdomain2Principal, permission);
     90  let otherSitePerms = pm.getAllForPrincipal(otherPrincipal, permission);
     91 
     92  Assert.equal(sitePerms.length, 1);
     93  Assert.equal(subdomain1Perms.length, 1);
     94  Assert.equal(subdomain2Perms.length, 1);
     95  Assert.equal(otherSitePerms.length, 0);
     96 
     97  // Remove the permission from the subdomain
     98  pm.removeFromPrincipal(subdomain1Principal, permission);
     99  Assert.equal(
    100    pm.testPermissionFromPrincipal(principal, permission),
    101    Ci.nsIPermissionManager.UNKNOWN_ACTION
    102  );
    103  Assert.equal(
    104    pm.testPermissionFromPrincipal(subdomain1Principal, permission),
    105    Ci.nsIPermissionManager.UNKNOWN_ACTION
    106  );
    107  Assert.equal(
    108    pm.testPermissionFromPrincipal(subdomain2Principal, permission),
    109    Ci.nsIPermissionManager.UNKNOWN_ACTION
    110  );
    111 }
    112 
    113 add_task(async function do3rdPartyStorageTest() {
    114  do_test(TEST_PERMISSION);
    115 });
    116 
    117 add_task(async function do3rdPartyFrameStorageTest() {
    118  do_test(TEST_FRAME_PERMISSION);
    119 });