To reduce test time. And refactors tests a bit to use `add_setup` and `registerCleanupFunction` to follow best practices [1] [1]: https://firefox-source-docs.mozilla.org/code-quality/lint/linters/eslint-plugin-mozilla/rules/no-addtask-setup.html Differential Revision: https://phabricator.services.mozilla.com/D306034
71 lines
2.2 KiB
JavaScript
71 lines
2.2 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
|
|
);
|
|
/* import-globals-from storageAccessAPIHelpers.js */
|
|
|
|
add_setup(async function () {
|
|
await setPreferences();
|
|
registerCleanupFunction(clearSiteTestData);
|
|
});
|
|
|
|
async function testEmbeddedPageBehavior() {
|
|
// Get the storage access permission
|
|
SpecialPowers.wrap(document).notifyUserGestureActivation();
|
|
let p = document.requestStorageAccess();
|
|
try {
|
|
await p;
|
|
ok(true, "gain storage access.");
|
|
} catch {
|
|
ok(false, "denied storage access.");
|
|
}
|
|
SpecialPowers.wrap(document).clearUserGestureActivation();
|
|
|
|
// Wait until we have the permission before we remove it.
|
|
waitUntilPermission(
|
|
"https://tracking.example.org/",
|
|
"storageAccessAPI",
|
|
SpecialPowers.Services.perms.ALLOW_ACTION
|
|
);
|
|
|
|
// Remove the storageAccessAPI permission
|
|
SpecialPowers.removePermission(
|
|
"storageAccessAPI",
|
|
"https://tracking.example.org/"
|
|
);
|
|
|
|
// Wait until the permission is removed
|
|
waitUntilPermission(
|
|
"https://tracking.example.org/",
|
|
"storageAccessAPI",
|
|
SpecialPowers.Services.perms.UNKNOWN_ACTION
|
|
);
|
|
|
|
// Interact with the third-party iframe and wait for the permission to appear
|
|
SpecialPowers.wrap(document).userInteractionForTesting();
|
|
waitUntilPermission(
|
|
"https://tracking.example.org/",
|
|
"storageAccessAPI",
|
|
SpecialPowers.Services.perms.ALLOW_ACTION
|
|
);
|
|
}
|
|
|
|
// This test verifies that interacting with a third-party iframe with
|
|
// storage access gives the storageAccessAPI permission, as if it were a first
|
|
// party. This is done by loading a page, then within an iframe in that page
|
|
// requesting storage access, ensuring there is no storageAccessAPI permission,
|
|
// then interacting with the page and waiting for that storageAccessAPI
|
|
// permission to reappear.
|
|
add_task(async function testInteractionGivesPermission() {
|
|
await openPageAndRunCode(
|
|
TEST_TOP_PAGE,
|
|
getExpectPopupAndClick("accept"),
|
|
TEST_3RD_PARTY_PAGE,
|
|
testEmbeddedPageBehavior
|
|
);
|
|
});
|