/* Any copyright is dedicated to the Public Domain. * http://creativecommons.org/publicdomain/zero/1.0/ */ const EMPTY_PAGE = getRootDirectory(gTestPath).replace( "chrome://mochitests/content", "https://example.com" ) + "empty.html"; const SUBDOMAIN_EMPTY_PAGE = getRootDirectory(gTestPath).replace( "chrome://mochitests/content", "https://www.example.com" ) + "empty.html"; add_task(async function testSiteScopedPermissionSubdomainAffectsBaseDomain() { let subdomainOrigin = "https://www.example.com"; let subdomainPrincipal = Services.scriptSecurityManager.createContentPrincipalFromOrigin( subdomainOrigin ); let id = "3rdPartyStorage^https://example.org"; await BrowserTestUtils.withNewTab(EMPTY_PAGE, async function (browser) { Services.perms.addFromPrincipal( subdomainPrincipal, id, SitePermissions.ALLOW ); await openPermissionPopup(); let permissionsList = document.getElementById( "permission-popup-permission-list" ); let listEntryCount = permissionsList.querySelectorAll( ".permission-popup-permission-item" ).length; is( listEntryCount, 1, "Permission exists on base domain when set on subdomain" ); closePermissionPopup(); Services.perms.removeFromPrincipal(subdomainPrincipal, id); await openPermissionPopup(); listEntryCount = permissionsList.querySelectorAll( ".permission-popup-permission-item-3rdPartyStorage" ).length; is( listEntryCount, 0, "Permission removed on base domain when removed on subdomain" ); await closePermissionPopup(); }); }); add_task(async function testSiteScopedPermissionBaseDomainAffectsSubdomain() { let origin = "https://example.com"; let principal = Services.scriptSecurityManager.createContentPrincipalFromOrigin(origin); let id = "3rdPartyStorage^https://example.org"; await BrowserTestUtils.withNewTab( SUBDOMAIN_EMPTY_PAGE, async function (browser) { Services.perms.addFromPrincipal(principal, id, SitePermissions.ALLOW); await openPermissionPopup(); let permissionsList = document.getElementById( "permission-popup-permission-list" ); let listEntryCount = permissionsList.querySelectorAll( ".permission-popup-permission-item" ).length; is( listEntryCount, 1, "Permission exists on base domain when set on subdomain" ); closePermissionPopup(); Services.perms.removeFromPrincipal(principal, id); await openPermissionPopup(); listEntryCount = permissionsList.querySelectorAll( ".permission-popup-permission-item-3rdPartyStorage" ).length; is( listEntryCount, 0, "Permission removed on base domain when removed on subdomain" ); await closePermissionPopup(); } ); });