79 lines
2.3 KiB
JavaScript
79 lines
2.3 KiB
JavaScript
Services.scriptloader.loadSubScript(
|
|
"chrome://mochitests/content/browser/browser/modules/test/browser/head.js",
|
|
this
|
|
);
|
|
Services.scriptloader.loadSubScript(
|
|
"chrome://mochitests/content/browser/toolkit/components/antitracking/test/browser/storage_access_head.js",
|
|
this
|
|
);
|
|
|
|
async function setAutograntPreferences() {
|
|
await SpecialPowers.pushPrefEnv({
|
|
set: [
|
|
["dom.storage_access.auto_grants", false],
|
|
["dom.storage_access.max_concurrent_auto_grants", 0],
|
|
],
|
|
});
|
|
}
|
|
|
|
add_task(async function testPopupWithUserInteraction() {
|
|
await setPreferences();
|
|
await setAutograntPreferences();
|
|
|
|
// Test that requesting storage access initially does not autogrant.
|
|
// If the autogrant doesn't occur, we click reject on the door hanger
|
|
// and expect the promise returned by requestStorageAccess to reject.
|
|
await openPageAndRunCode(
|
|
TEST_TOP_PAGE,
|
|
getExpectPopupAndClick("reject"),
|
|
TEST_3RD_PARTY_PAGE,
|
|
requestStorageAccessAndExpectFailure
|
|
);
|
|
|
|
// Grant the fedCM permissions to the first party.
|
|
// This signifies that it should have a free access to the storage access
|
|
// permission
|
|
const uri = Services.io.newURI(TEST_TOP_PAGE);
|
|
const principal = Services.scriptSecurityManager.createContentPrincipal(
|
|
uri,
|
|
{}
|
|
);
|
|
Services.perms.addFromPrincipal(
|
|
principal,
|
|
"credential-allow-silent-access",
|
|
Services.perms.ALLOW_ACTION
|
|
);
|
|
const idpURI = Services.io.newURI(TEST_3RD_PARTY_PAGE);
|
|
const idpPrincipal = Services.scriptSecurityManager.createContentPrincipal(
|
|
idpURI,
|
|
{}
|
|
);
|
|
Services.perms.addFromPrincipal(
|
|
principal,
|
|
"credential-allow-silent-access^" + idpPrincipal.origin,
|
|
Services.perms.ALLOW_ACTION
|
|
);
|
|
|
|
// Test that requesting storage access autogrants here. If a popup occurs,
|
|
// expectNoPopup will cause an error in this test.
|
|
await openPageAndRunCode(
|
|
TEST_TOP_PAGE,
|
|
expectNoPopup,
|
|
TEST_3RD_PARTY_PAGE,
|
|
requestStorageAccessAndExpectSuccess
|
|
);
|
|
|
|
let permissionValueAfterTest = Services.perms.testPermissionFromPrincipal(
|
|
principal,
|
|
"3rdPartyFrameStorage^" + idpPrincipal.siteOrigin
|
|
);
|
|
|
|
is(
|
|
permissionValueAfterTest,
|
|
Services.perms.ALLOW_ACTION,
|
|
"Storage access permission was granted during the test."
|
|
);
|
|
|
|
await cleanUpData();
|
|
await SpecialPowers.flushPrefEnv();
|
|
});
|