forked from mirrors/gecko-dev
118 lines
2.4 KiB
JavaScript
118 lines
2.4 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
"use strict";
|
|
|
|
const HOSTNAME_DOMAIN = "browser_policy_clear_blocked_cookies.com";
|
|
const ORIGIN_DOMAIN = "browser_policy_clear_blocked_cookies.org";
|
|
|
|
add_task(async function setup() {
|
|
const expiry = Date.now() + 24 * 60 * 60;
|
|
Services.cookies.add(
|
|
HOSTNAME_DOMAIN,
|
|
"/",
|
|
"secure",
|
|
"true",
|
|
true,
|
|
false,
|
|
false,
|
|
expiry,
|
|
{},
|
|
Ci.nsICookie.SAMESITE_NONE,
|
|
Ci.nsICookie.SCHEME_HTTPS
|
|
);
|
|
Services.cookies.add(
|
|
HOSTNAME_DOMAIN,
|
|
"/",
|
|
"insecure",
|
|
"true",
|
|
false,
|
|
false,
|
|
false,
|
|
expiry,
|
|
{},
|
|
Ci.nsICookie.SAMESITE_NONE,
|
|
Ci.nsICookie.SCHEME_HTTP
|
|
);
|
|
Services.cookies.add(
|
|
ORIGIN_DOMAIN,
|
|
"/",
|
|
"secure",
|
|
"true",
|
|
true,
|
|
false,
|
|
false,
|
|
expiry,
|
|
{},
|
|
Ci.nsICookie.SAMESITE_NONE,
|
|
Ci.nsICookie.SCHEME_HTTPS
|
|
);
|
|
Services.cookies.add(
|
|
ORIGIN_DOMAIN,
|
|
"/",
|
|
"insecure",
|
|
"true",
|
|
false,
|
|
false,
|
|
false,
|
|
expiry,
|
|
{},
|
|
Ci.nsICookie.SAMESITE_NONE,
|
|
Ci.nsICookie.SCHEME_HTTP
|
|
);
|
|
Services.cookies.add(
|
|
"example.net",
|
|
"/",
|
|
"secure",
|
|
"true",
|
|
true,
|
|
false,
|
|
false,
|
|
expiry,
|
|
{},
|
|
Ci.nsICookie.SAMESITE_NONE,
|
|
Ci.nsICookie.SCHEME_HTTPS
|
|
);
|
|
await setupPolicyEngineWithJson({
|
|
policies: {
|
|
Cookies: {
|
|
Block: [`http://${HOSTNAME_DOMAIN}`, `https://${ORIGIN_DOMAIN}:8080`],
|
|
},
|
|
},
|
|
});
|
|
});
|
|
|
|
function retrieve_all_cookies(host) {
|
|
const values = [];
|
|
for (let cookie of Services.cookies.getCookiesFromHost(host, {})) {
|
|
values.push({
|
|
host: cookie.host,
|
|
name: cookie.name,
|
|
path: cookie.path,
|
|
});
|
|
}
|
|
return values;
|
|
}
|
|
|
|
add_task(async function test_cookies_for_blocked_sites_cleared() {
|
|
const cookies = {
|
|
hostname: retrieve_all_cookies(HOSTNAME_DOMAIN),
|
|
origin: retrieve_all_cookies(ORIGIN_DOMAIN),
|
|
keep: retrieve_all_cookies("example.net"),
|
|
};
|
|
const expected = {
|
|
hostname: [],
|
|
origin: [],
|
|
keep: [{ host: "example.net", name: "secure", path: "/" }],
|
|
};
|
|
equal(
|
|
JSON.stringify(cookies),
|
|
JSON.stringify(expected),
|
|
"All stored cookies for blocked origins should be cleared"
|
|
);
|
|
});
|
|
|
|
add_task(function teardown() {
|
|
for (let host of [HOSTNAME_DOMAIN, ORIGIN_DOMAIN, "example.net"]) {
|
|
Services.cookies.removeCookiesWithOriginAttributes("{}", host);
|
|
}
|
|
});
|