cookiesHelper.js (1698B)
1 const ALLOWED = 0; 2 const BLOCKED = 1; 3 4 async function cleanupData() { 5 await new Promise(resolve => { 6 const chromeScript = SpecialPowers.loadChromeScript(_ => { 7 /* eslint-env mozilla/chrome-script */ 8 addMessageListener("go", __ => { 9 Services.clearData.deleteData( 10 Services.clearData.CLEAR_COOKIES | 11 Services.clearData.CLEAR_ALL_CACHES | 12 Services.clearData.CLEAR_DOM_STORAGES, 13 ___ => { 14 sendAsyncMessage("done"); 15 } 16 ); 17 }); 18 }); 19 20 chromeScript.addMessageListener("done", _ => { 21 chromeScript.destroy(); 22 resolve(); 23 }); 24 25 chromeScript.sendAsyncMessage("go"); 26 }); 27 } 28 29 async function checkLastRequest(type, state) { 30 let json = await fetch("cookie.sjs?last&" + Math.random()).then(r => 31 r.json() 32 ); 33 is(json.type, type, "Type: " + type); 34 is(json.hasCookie, state == ALLOWED, "Fetch has cookies"); 35 } 36 37 async function runTests(currentTest) { 38 await cleanupData(); 39 await SpecialPowers.pushPrefEnv({ 40 set: [["network.cookie.cookieBehavior", 2]], 41 }); 42 let windowBlocked = window.open("cookie.sjs?window&" + Math.random()); 43 await new Promise(resolve => { 44 windowBlocked.onload = resolve; 45 }); 46 await currentTest(windowBlocked, BLOCKED); 47 windowBlocked.close(); 48 49 await cleanupData(); 50 await SpecialPowers.pushPrefEnv({ 51 set: [["network.cookie.cookieBehavior", 1]], 52 }); 53 let windowAllowed = window.open("cookie.sjs?window&" + Math.random()); 54 await new Promise(resolve => { 55 windowAllowed.onload = resolve; 56 }); 57 await currentTest(windowAllowed, ALLOWED); 58 windowAllowed.close(); 59 60 SimpleTest.finish(); 61 } 62 63 SimpleTest.waitForExplicitFinish();