fune/toolkit/components/antitracking/test/browser/browser_storageAccessThirdPartyChecks_alwaysPartition.js
Sandor Molnar 09e7cbd0b7 Backed out 6 changesets (bug 1876575, bug 1876574) for causing build bustages @ toolkit/components/resistfingerprinting/nsRFPService.cpp CLOSED TREE
Backed out changeset 455ce831c73c (bug 1876575)
Backed out changeset 4fa3fbf3a3ae (bug 1876575)
Backed out changeset ac4c41cb3b67 (bug 1876575)
Backed out changeset 15e06d10788e (bug 1876575)
Backed out changeset dcd6bbea816a (bug 1876575)
Backed out changeset cc547125fda9 (bug 1876574)
2024-03-29 16:29:47 +02:00

122 lines
3.4 KiB
JavaScript

const allBlocked = Ci.nsIWebProgressListener.STATE_COOKIES_BLOCKED_ALL;
const foreignBlocked = Ci.nsIWebProgressListener.STATE_COOKIES_BLOCKED_FOREIGN;
const APS_PREF =
"privacy.partition.always_partition_third_party_non_cookie_storage";
AntiTracking._createTask({
name: "Test that after a storage access grant we have full first-party access",
cookieBehavior: BEHAVIOR_REJECT_TRACKER,
blockingByContentBlockingRTUI: true,
allowList: false,
callback: async _ => {
/* import-globals-from storageAccessAPIHelpers.js */
await noStorageAccessInitially();
await callRequestStorageAccess();
const TRACKING_PAGE =
"https://another-tracking.example.net/browser/toolkit/components/antitracking/test/browser/trackingPage.html";
async function runChecks(name) {
let iframe = document.createElement("iframe");
iframe.src = TRACKING_PAGE;
document.body.appendChild(iframe);
await new Promise(resolve => {
iframe.onload = resolve;
});
await SpecialPowers.spawn(iframe, [name], name => {
content.postMessage(name, "*");
});
await new Promise(resolve => {
onmessage = e => {
if (e.data == "done") {
resolve();
}
};
});
}
await runChecks("image");
},
extraPrefs: [[APS_PREF, true]],
expectedBlockingNotifications:
Ci.nsIWebProgressListener.STATE_COOKIES_BLOCKED_TRACKER,
runInPrivateWindow: false,
iframeSandbox: null,
accessRemoval: null,
callbackAfterRemoval: null,
thirdPartyPage: TEST_3RD_PARTY_PAGE,
errorMessageDomains: [
"https://tracking.example.org",
"https://tracking.example.org",
"https://tracking.example.org",
"https://tracking.example.org",
"https://itisatracker.org",
],
});
add_task(async _ => {
await new Promise(resolve => {
Services.clearData.deleteData(Ci.nsIClearDataService.CLEAR_ALL, () =>
resolve()
);
});
});
AntiTracking._createTask({
name: "Test that we never grant access to cookieBehavior=2",
cookieBehavior: BEHAVIOR_REJECT,
allowList: false,
callback: async _ => {
/* import-globals-from storageAccessAPIHelpers.js */
await noStorageAccessInitially();
await callRequestStorageAccess(null, true);
},
extraPrefs: [[APS_PREF, true]],
expectedBlockingNotifications: allBlocked,
runInPrivateWindow: false,
iframeSandbox: null,
accessRemoval: null,
callbackAfterRemoval: null,
thirdPartyPage: TEST_3RD_PARTY_PAGE,
errorMessageDomains: ["http://example.net", "https://tracking.example.org"],
});
add_task(async _ => {
await new Promise(resolve => {
Services.clearData.deleteData(Ci.nsIClearDataService.CLEAR_ALL, () =>
resolve()
);
});
});
AntiTracking._createTask({
name: "Test that we never grant access to cookieBehavior=3",
cookieBehavior: BEHAVIOR_LIMIT_FOREIGN,
allowList: false,
callback: async _ => {
/* import-globals-from storageAccessAPIHelpers.js */
await noStorageAccessInitially();
await callRequestStorageAccess(null, true);
},
extraPrefs: [[APS_PREF, true]],
expectedBlockingNotifications: foreignBlocked,
runInPrivateWindow: false,
iframeSandbox: null,
accessRemoval: null,
callbackAfterRemoval: null,
thirdPartyPage: TEST_3RD_PARTY_PAGE,
errorMessageDomains: ["https://tracking.example.org"],
});
add_task(async _ => {
await new Promise(resolve => {
Services.clearData.deleteData(Ci.nsIClearDataService.CLEAR_ALL, () =>
resolve()
);
});
});