The cookie behavior was changed in bug 1918342. Lets update the constant name to reflect the new behavior. This adds new string constants for enterprise policy while keeping the old constant for backwards compatibilty. "reject-tracker-and-partition-foreign" is now deprecated and aliases to the new "partition-foreign" Addons API keeps the current "reject_trackers_and_partition_foreign"[1] string constant for compatibility. [1]: https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/privacy/websites#cookieconfig Differential Revision: https://phabricator.services.mozilla.com/D300794
85 lines
2.5 KiB
JavaScript
85 lines
2.5 KiB
JavaScript
//
|
|
// Bug 1725996 - Test if the cookie set in a document which is created by
|
|
// document.open() in an about:blank iframe has a correct
|
|
// partitionKey
|
|
//
|
|
|
|
const TEST_PAGE = TEST_DOMAIN + TEST_PATH + "file_iframe_document_open.html";
|
|
const TEST_PAGE_PARTITIOEND =
|
|
TEST_DOMAIN_HTTPS + TEST_PATH + "file_iframe_document_open_partitioned.html";
|
|
|
|
add_setup(async function () {
|
|
await SpecialPowers.pushPrefEnv({
|
|
set: [
|
|
["network.cookie.cookieBehavior", BEHAVIOR_PARTITION_FOREIGN],
|
|
["network.cookie.cookieBehavior.pbmode", BEHAVIOR_PARTITION_FOREIGN],
|
|
["privacy.dynamic_firstparty.use_site", true],
|
|
["network.cookie.cookieBehavior.optInPartitioning", true],
|
|
["network.cookie.CHIPS.enabled", true],
|
|
],
|
|
});
|
|
});
|
|
|
|
add_task(async function test_firstParty_iframe() {
|
|
// Clear all cookies before test.
|
|
Services.cookies.removeAll();
|
|
|
|
// Open the test page which creates an iframe and then calls document.write()
|
|
// to write a cookie in the iframe.
|
|
let tab = await BrowserTestUtils.openNewForegroundTab(gBrowser, TEST_PAGE);
|
|
|
|
// Wait until the cookie appears.
|
|
await TestUtils.waitForCondition(_ => Services.cookies.cookies.length);
|
|
|
|
// Check the partitionKey in the cookie.
|
|
let cookie = Services.cookies.cookies[0];
|
|
is(
|
|
cookie.originAttributes.partitionKey,
|
|
"",
|
|
"The partitionKey should remain empty for first-party iframe."
|
|
);
|
|
|
|
// Clean up.
|
|
Services.cookies.removeAll();
|
|
BrowserTestUtils.removeTab(tab);
|
|
});
|
|
|
|
add_task(async function test_thirdParty_iframe() {
|
|
// Clear all cookies before test.
|
|
Services.cookies.removeAll();
|
|
|
|
// Open a tab with a different domain with the test page.
|
|
let tab = await BrowserTestUtils.openNewForegroundTab(
|
|
gBrowser,
|
|
TEST_TOP_PAGE_2
|
|
);
|
|
|
|
// Open the test page within a third-party context.
|
|
await SpecialPowers.spawn(
|
|
tab.linkedBrowser,
|
|
[TEST_PAGE_PARTITIOEND],
|
|
async function (page) {
|
|
let ifr = content.document.createElement("iframe");
|
|
let loading = ContentTaskUtils.waitForEvent(ifr, "load");
|
|
ifr.src = page;
|
|
content.document.body.appendChild(ifr);
|
|
await loading;
|
|
}
|
|
);
|
|
|
|
// Wait until the cookie appears.
|
|
await TestUtils.waitForCondition(_ => Services.cookies.cookies.length);
|
|
|
|
// Check the partitionKey in the cookie.
|
|
let cookie = Services.cookies.cookies[0];
|
|
is(
|
|
cookie.originAttributes.partitionKey,
|
|
"(http,xn--exmple-cua.test)",
|
|
"The partitionKey should exist for third-party iframe."
|
|
);
|
|
|
|
// Clean up.
|
|
Services.cookies.removeAll();
|
|
BrowserTestUtils.removeTab(tab);
|
|
});
|