test_documentcookies_maxage.html (4790B)
1 <!DOCTYPE HTML> 2 <html> 3 <!-- 4 --> 5 <head> 6 <title>Test for document.cookie max-age pref</title> 7 <script src="/tests/SimpleTest/SimpleTest.js"></script> 8 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> 9 10 <script type="text/javascript"> 11 const kTwoDays = 2 * 24 * 60 * 60; 12 const kSevenDays = 7 * 24 * 60 * 60; 13 const kInTwoDays = (new Date().getTime() + kTwoDays * 1000); 14 const kInSevenDays = (new Date().getTime() + kSevenDays * 1000); 15 const kScriptURL = SimpleTest.getTestFileURL("file_documentcookie_maxage_chromescript.js"); 16 17 let gScript; 18 19 function getDateInTwoDays() 20 { 21 let date2 = new Date(kInTwoDays); 22 let days = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]; 23 let months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", 24 "Nov", "Dec"]; 25 let day = date2.getUTCDate(); 26 if (day < 10) { 27 day = "0" + day; 28 } 29 let month = months[date2.getUTCMonth()]; 30 let year = date2.getUTCFullYear(); 31 let hour = date2.getUTCHours(); 32 if (hour < 10) { 33 hour = "0" + hour; 34 } 35 let minute = date2.getUTCMinutes(); 36 if (minute < 10) { 37 minute = "0" + minute; 38 } 39 let second = date2.getUTCSeconds(); 40 if (second < 10) { 41 second = "0" + second; 42 } 43 return days[date2.getUTCDay()] + ", " + day + "-" + month + "-" + 44 year + " " + hour + ":" + minute + ":" + second + " GMT"; 45 } 46 47 function dotest() 48 { 49 SimpleTest.waitForExplicitFinish(); 50 SpecialPowers.pushPrefEnv({ 51 set: [["network.cookie.maxageCap", kSevenDays]], 52 }).then(_ => { 53 gScript = SpecialPowers.loadChromeScript(kScriptURL); 54 55 return new Promise(resolve => { 56 gScript.addMessageListener("init:return", resolve); 57 gScript.sendAsyncMessage("init"); 58 }); 59 }).then(_ => { 60 let date2 = getDateInTwoDays(); 61 62 document.cookie = "test1=value1; expires=Fri, 02-Jan-2037 00:00:01 GMT;"; 63 document.cookie = "test2=value2; expires=" + date2 + ";"; 64 65 return fetch("subResources.sjs?3"); 66 }).then(_ => { 67 return fetch("subResources.sjs?4"); 68 }).then(_ => { 69 return new Promise(resolve => { 70 gScript.addMessageListener("getCookies:return", resolve); 71 gScript.sendAsyncMessage("getCookies"); 72 }); 73 }).then(_ => { 74 for (let cookie of _.cookies) { 75 switch (cookie.name) { 76 case "test1": { 77 is(cookie.value, "value1", "The correct value expected"); 78 let d = new Date(cookie.expires); 79 let [day, month, year] = [d.getUTCDate(), d.getUTCMonth(), d.getUTCFullYear()]; 80 let d2 = new Date(kInSevenDays); 81 let [day2, month2, year2] = [d2.getUTCDate(), d2.getUTCMonth(), d2.getUTCFullYear()]; 82 is(day, day2, "Days match"); 83 is(month, month2, "Months match"); 84 is(year, year2, "Years match"); 85 } 86 break; 87 88 case "test2": { 89 is(cookie.value, "value2", "The correct value expected"); 90 let d = new Date(cookie.expires); 91 let [day, month, year] = [d.getUTCDate(), d.getUTCMonth(), d.getUTCFullYear()]; 92 let d2 = new Date(kInTwoDays); 93 let [day2, month2, year2] = [d2.getUTCDate(), d2.getUTCMonth(), d2.getUTCFullYear()]; 94 is(day, day2, "Days match"); 95 is(month, month2, "Months match"); 96 is(year, year2, "Years match"); 97 } 98 break; 99 100 case "test3": { 101 is(cookie.value, "value3", "The correct value expected"); 102 let d = new Date(cookie.expires); 103 let [day, month, year] = [d.getUTCDate(), d.getUTCMonth(), d.getUTCFullYear()]; 104 let d2 = new Date(kInSevenDays); 105 let [day2, month2, year2] = [d2.getUTCDate(), d2.getUTCMonth(), d2.getUTCFullYear()]; 106 is(day, day2, "Days match"); 107 is(month, month2, "Months match"); 108 is(year, year2, "Years match"); 109 } 110 break; 111 112 case "test4": { 113 is(cookie.value, "value4", "The correct value expected"); 114 let d = new Date(cookie.expires); 115 let [day, month, year] = [d.getUTCDate(), d.getUTCMonth(), d.getUTCFullYear()]; 116 let d2 = new Date(kInTwoDays); 117 let [day2, month2, year2] = [d2.getUTCDate(), d2.getUTCMonth(), d2.getUTCFullYear()]; 118 is(day, day2, "Days match"); 119 is(month, month2, "Months match"); 120 is(year, year2, "Years match"); 121 } 122 break; 123 124 default: 125 ok(false, "Unexpected cookie found!"); 126 break; 127 } 128 } 129 130 return new Promise(resolve => { 131 gScript.addMessageListener("shutdown:return", resolve); 132 gScript.sendAsyncMessage("shutdown"); 133 }); 134 }).then(finish); 135 } 136 137 function finish() 138 { 139 SimpleTest.finish(); 140 } 141 </script> 142 </head> 143 <body onload="dotest();"> 144 <p id="display"></p> 145 <div id="content" style="display: none"></div> 146 <pre id="test"> 147 </pre> 148 </body> 149 </html>