72 lines
2.1 KiB
JavaScript
72 lines
2.1 KiB
JavaScript
const { NetUtil } = ChromeUtils.importESModule(
|
|
"resource://gre/modules/NetUtil.sys.mjs"
|
|
);
|
|
|
|
function setCookie(name, url) {
|
|
let value = `${name}=${Math.random()}; Path=/; Max-Age=1000; sameSite=none; Secure`;
|
|
info(`Setting cookie ${value} for ${url.spec}`);
|
|
|
|
let channel = NetUtil.newChannel({
|
|
uri: url,
|
|
loadUsingSystemPrincipal: true,
|
|
contentPolicyType: Ci.nsIContentPolicy.TYPE_DOCUMENT,
|
|
});
|
|
|
|
Services.cookies.setCookieStringFromHttp(url, value, channel);
|
|
}
|
|
|
|
async function sleep() {
|
|
await new Promise(resolve => do_timeout(1000, resolve));
|
|
}
|
|
|
|
function checkSorting(cookies) {
|
|
for (let i = 1; i < cookies.length; ++i) {
|
|
Assert.greater(
|
|
cookies[i].creationTime,
|
|
cookies[i - 1].creationTime,
|
|
"Cookie " + cookies[i].name
|
|
);
|
|
}
|
|
}
|
|
|
|
add_task(async function () {
|
|
Services.prefs.setBoolPref(
|
|
"network.cookieJarSettings.unblocked_for_testing",
|
|
true
|
|
);
|
|
|
|
await setCookie("A", Services.io.newURI("https://example.com/A/"));
|
|
await sleep();
|
|
|
|
await setCookie("B", Services.io.newURI("https://foo.bar/B/"));
|
|
await sleep();
|
|
|
|
await setCookie("C", Services.io.newURI("https://example.org/C/"));
|
|
await sleep();
|
|
|
|
await setCookie("D", Services.io.newURI("https://example.com/D/"));
|
|
await sleep();
|
|
|
|
Assert.equal(Services.cookies.cookies.length, 4, "Cookie check");
|
|
|
|
const cookies = Services.cookies.getCookiesSince(0);
|
|
Assert.equal(cookies.length, 4, "We retrieve all the 4 cookies");
|
|
checkSorting(cookies);
|
|
|
|
let someCookies = Services.cookies.getCookiesSince(
|
|
cookies[0].creationTime + 1
|
|
);
|
|
Assert.equal(someCookies.length, 3, "We retrieve some cookies");
|
|
checkSorting(someCookies);
|
|
|
|
someCookies = Services.cookies.getCookiesSince(cookies[1].creationTime + 1);
|
|
Assert.equal(someCookies.length, 2, "We retrieve some cookies");
|
|
checkSorting(someCookies);
|
|
|
|
someCookies = Services.cookies.getCookiesSince(cookies[2].creationTime + 1);
|
|
Assert.equal(someCookies.length, 1, "We retrieve some cookies");
|
|
checkSorting(someCookies);
|
|
|
|
someCookies = Services.cookies.getCookiesSince(cookies[3].creationTime + 1);
|
|
Assert.equal(someCookies.length, 0, "We retrieve some cookies");
|
|
});
|