test_getCookieSince.js (2170B)
1 const { NetUtil } = ChromeUtils.importESModule( 2 "resource://gre/modules/NetUtil.sys.mjs" 3 ); 4 5 function setCookie(name, url) { 6 let value = `${name}=${Math.random()}; Path=/; Max-Age=1000; sameSite=none; Secure`; 7 info(`Setting cookie ${value} for ${url.spec}`); 8 9 let channel = NetUtil.newChannel({ 10 uri: url, 11 loadUsingSystemPrincipal: true, 12 contentPolicyType: Ci.nsIContentPolicy.TYPE_DOCUMENT, 13 }); 14 15 Services.cookies.setCookieStringFromHttp(url, value, channel); 16 } 17 18 async function sleep() { 19 await new Promise(resolve => do_timeout(1000, resolve)); 20 } 21 22 function checkSorting(cookies) { 23 for (let i = 1; i < cookies.length; ++i) { 24 Assert.greater( 25 cookies[i].creationTime, 26 cookies[i - 1].creationTime, 27 "Cookie " + cookies[i].name 28 ); 29 } 30 } 31 32 add_task(async function () { 33 Services.prefs.setBoolPref( 34 "network.cookieJarSettings.unblocked_for_testing", 35 true 36 ); 37 38 await setCookie("A", Services.io.newURI("https://example.com/A/")); 39 await sleep(); 40 41 await setCookie("B", Services.io.newURI("https://foo.bar/B/")); 42 await sleep(); 43 44 await setCookie("C", Services.io.newURI("https://example.org/C/")); 45 await sleep(); 46 47 await setCookie("D", Services.io.newURI("https://example.com/D/")); 48 await sleep(); 49 50 Assert.equal(Services.cookies.cookies.length, 4, "Cookie check"); 51 52 const cookies = Services.cookies.getCookiesSince(0); 53 Assert.equal(cookies.length, 4, "We retrieve all the 4 cookies"); 54 checkSorting(cookies); 55 56 let someCookies = Services.cookies.getCookiesSince( 57 cookies[0].creationTime + 1 58 ); 59 Assert.equal(someCookies.length, 3, "We retrieve some cookies"); 60 checkSorting(someCookies); 61 62 someCookies = Services.cookies.getCookiesSince(cookies[1].creationTime + 1); 63 Assert.equal(someCookies.length, 2, "We retrieve some cookies"); 64 checkSorting(someCookies); 65 66 someCookies = Services.cookies.getCookiesSince(cookies[2].creationTime + 1); 67 Assert.equal(someCookies.length, 1, "We retrieve some cookies"); 68 checkSorting(someCookies); 69 70 someCookies = Services.cookies.getCookiesSince(cookies[3].creationTime + 1); 71 Assert.equal(someCookies.length, 0, "We retrieve some cookies"); 72 });