1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
const { NetUtil } = ChromeUtils.import("resource://gre/modules/NetUtil.jsm");
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");
});
|