element-meta-refresh.https.optional.sub.html (9283B)
1 <!DOCTYPE html> 2 <!-- 3 This test was procedurally generated. Please do not modify it directly. 4 Sources: 5 - fetch/metadata/tools/fetch-metadata.conf.yml 6 - fetch/metadata/tools/templates/element-meta-refresh.optional.sub.html 7 --> 8 <html lang="en"> 9 <meta charset="utf-8"> 10 <title>HTTP headers on request for HTML "meta" element with http-equiv="refresh"</title> 11 <script src="/resources/testharness.js"></script> 12 <script src="/resources/testharnessreport.js"></script> 13 <script src="/fetch/metadata/resources/helper.sub.js"></script> 14 <body> 15 <script> 16 'use strict'; 17 18 function induceRequest(url, test) { 19 const win = window.open(); 20 test.add_cleanup(() => win.close()); 21 22 win.document.open(); 23 win.document.write( 24 `<meta http-equiv="Refresh" content="0; URL=${url}">` 25 ); 26 win.document.close(); 27 28 return new Promise((resolve) => { 29 addEventListener('message', (event) => { 30 if (event.source === win) { 31 resolve(); 32 } 33 }); 34 }); 35 } 36 37 const responseParams = { 38 mime: 'text/html', 39 body: `<script>opener.postMessage(0, '*')</${''}script>` 40 }; 41 42 promise_test((t) => { 43 const key = '{{uuid()}}'; 44 45 return induceRequest( 46 makeRequestURL(key, ['httpsOrigin'], responseParams), t 47 ) 48 .then(() => retrieve(key)) 49 .then((headers) => { 50 assert_own_property(headers, 'sec-fetch-site'); 51 assert_array_equals(headers['sec-fetch-site'], ['same-origin']); 52 }); 53 }, 'sec-fetch-site - Same origin'); 54 55 promise_test((t) => { 56 const key = '{{uuid()}}'; 57 58 return induceRequest( 59 makeRequestURL(key, ['httpsCrossSite'], responseParams), t 60 ) 61 .then(() => retrieve(key)) 62 .then((headers) => { 63 assert_own_property(headers, 'sec-fetch-site'); 64 assert_array_equals(headers['sec-fetch-site'], ['cross-site']); 65 }); 66 }, 'sec-fetch-site - Cross-site'); 67 68 promise_test((t) => { 69 const key = '{{uuid()}}'; 70 71 return induceRequest( 72 makeRequestURL(key, ['httpsSameSite'], responseParams), t 73 ) 74 .then(() => retrieve(key)) 75 .then((headers) => { 76 assert_own_property(headers, 'sec-fetch-site'); 77 assert_array_equals(headers['sec-fetch-site'], ['same-site']); 78 }); 79 }, 'sec-fetch-site - Same site'); 80 81 promise_test((t) => { 82 const key = '{{uuid()}}'; 83 84 return induceRequest( 85 makeRequestURL(key, ['httpsOrigin', 'httpsCrossSite', 'httpsOrigin'], responseParams), t 86 ) 87 .then(() => retrieve(key)) 88 .then((headers) => { 89 assert_own_property(headers, 'sec-fetch-site'); 90 assert_array_equals(headers['sec-fetch-site'], ['cross-site']); 91 }); 92 }, 'sec-fetch-site - Same-Origin -> Cross-Site -> Same-Origin redirect'); 93 94 promise_test((t) => { 95 const key = '{{uuid()}}'; 96 97 return induceRequest( 98 makeRequestURL(key, ['httpsOrigin', 'httpsSameSite', 'httpsOrigin'], responseParams), t 99 ) 100 .then(() => retrieve(key)) 101 .then((headers) => { 102 assert_own_property(headers, 'sec-fetch-site'); 103 assert_array_equals(headers['sec-fetch-site'], ['same-site']); 104 }); 105 }, 'sec-fetch-site - Same-Origin -> Same-Site -> Same-Origin redirect'); 106 107 promise_test((t) => { 108 const key = '{{uuid()}}'; 109 110 return induceRequest( 111 makeRequestURL(key, ['httpsCrossSite', 'httpsOrigin'], responseParams), t 112 ) 113 .then(() => retrieve(key)) 114 .then((headers) => { 115 assert_own_property(headers, 'sec-fetch-site'); 116 assert_array_equals(headers['sec-fetch-site'], ['cross-site']); 117 }); 118 }, 'sec-fetch-site - Cross-Site -> Same Origin'); 119 120 promise_test((t) => { 121 const key = '{{uuid()}}'; 122 123 return induceRequest( 124 makeRequestURL(key, ['httpsCrossSite', 'httpsSameSite'], responseParams), t 125 ) 126 .then(() => retrieve(key)) 127 .then((headers) => { 128 assert_own_property(headers, 'sec-fetch-site'); 129 assert_array_equals(headers['sec-fetch-site'], ['cross-site']); 130 }); 131 }, 'sec-fetch-site - Cross-Site -> Same-Site'); 132 133 promise_test((t) => { 134 const key = '{{uuid()}}'; 135 136 return induceRequest( 137 makeRequestURL(key, ['httpsCrossSite', 'httpsCrossSite'], responseParams), t 138 ) 139 .then(() => retrieve(key)) 140 .then((headers) => { 141 assert_own_property(headers, 'sec-fetch-site'); 142 assert_array_equals(headers['sec-fetch-site'], ['cross-site']); 143 }); 144 }, 'sec-fetch-site - Cross-Site -> Cross-Site'); 145 146 promise_test((t) => { 147 const key = '{{uuid()}}'; 148 149 return induceRequest( 150 makeRequestURL(key, ['httpsOrigin', 'httpsOrigin'], responseParams), t 151 ) 152 .then(() => retrieve(key)) 153 .then((headers) => { 154 assert_own_property(headers, 'sec-fetch-site'); 155 assert_array_equals(headers['sec-fetch-site'], ['same-origin']); 156 }); 157 }, 'sec-fetch-site - Same-Origin -> Same Origin'); 158 159 promise_test((t) => { 160 const key = '{{uuid()}}'; 161 162 return induceRequest( 163 makeRequestURL(key, ['httpsOrigin', 'httpsSameSite'], responseParams), t 164 ) 165 .then(() => retrieve(key)) 166 .then((headers) => { 167 assert_own_property(headers, 'sec-fetch-site'); 168 assert_array_equals(headers['sec-fetch-site'], ['same-site']); 169 }); 170 }, 'sec-fetch-site - Same-Origin -> Same-Site'); 171 172 promise_test((t) => { 173 const key = '{{uuid()}}'; 174 175 return induceRequest( 176 makeRequestURL(key, ['httpsOrigin', 'httpsCrossSite'], responseParams), t 177 ) 178 .then(() => retrieve(key)) 179 .then((headers) => { 180 assert_own_property(headers, 'sec-fetch-site'); 181 assert_array_equals(headers['sec-fetch-site'], ['cross-site']); 182 }); 183 }, 'sec-fetch-site - Same-Origin -> Cross-Site'); 184 185 promise_test((t) => { 186 const key = '{{uuid()}}'; 187 188 return induceRequest( 189 makeRequestURL(key, ['httpsSameSite', 'httpsOrigin'], responseParams), t 190 ) 191 .then(() => retrieve(key)) 192 .then((headers) => { 193 assert_own_property(headers, 'sec-fetch-site'); 194 assert_array_equals(headers['sec-fetch-site'], ['same-site']); 195 }); 196 }, 'sec-fetch-site - Same-Site -> Same Origin'); 197 198 promise_test((t) => { 199 const key = '{{uuid()}}'; 200 201 return induceRequest( 202 makeRequestURL(key, ['httpsSameSite', 'httpsSameSite'], responseParams), t 203 ) 204 .then(() => retrieve(key)) 205 .then((headers) => { 206 assert_own_property(headers, 'sec-fetch-site'); 207 assert_array_equals(headers['sec-fetch-site'], ['same-site']); 208 }); 209 }, 'sec-fetch-site - Same-Site -> Same-Site'); 210 211 promise_test((t) => { 212 const key = '{{uuid()}}'; 213 214 return induceRequest( 215 makeRequestURL(key, ['httpsSameSite', 'httpsCrossSite'], responseParams), t 216 ) 217 .then(() => retrieve(key)) 218 .then((headers) => { 219 assert_own_property(headers, 'sec-fetch-site'); 220 assert_array_equals(headers['sec-fetch-site'], ['cross-site']); 221 }); 222 }, 'sec-fetch-site - Same-Site -> Cross-Site'); 223 224 promise_test((t) => { 225 const key = '{{uuid()}}'; 226 227 return induceRequest( 228 makeRequestURL(key, ['httpsOrigin', 'httpOrigin', 'httpsOrigin'], responseParams), t 229 ) 230 .then(() => retrieve(key)) 231 .then((headers) => { 232 assert_own_property(headers, 'sec-fetch-site'); 233 assert_array_equals(headers['sec-fetch-site'], ['cross-site']); 234 }); 235 }, 'sec-fetch-site - HTTPS downgrade-upgrade'); 236 237 promise_test((t) => { 238 const key = '{{uuid()}}'; 239 240 return induceRequest( 241 makeRequestURL(key, [], responseParams), t 242 ) 243 .then(() => retrieve(key)) 244 .then((headers) => { 245 assert_own_property(headers, 'sec-fetch-mode'); 246 assert_array_equals(headers['sec-fetch-mode'], ['navigate']); 247 }); 248 }, 'sec-fetch-mode'); 249 250 promise_test((t) => { 251 const key = '{{uuid()}}'; 252 253 return induceRequest( 254 makeRequestURL(key, [], responseParams), t 255 ) 256 .then(() => retrieve(key)) 257 .then((headers) => { 258 assert_own_property(headers, 'sec-fetch-dest'); 259 assert_array_equals(headers['sec-fetch-dest'], ['document']); 260 }); 261 }, 'sec-fetch-dest'); 262 263 promise_test((t) => { 264 const key = '{{uuid()}}'; 265 266 return induceRequest( 267 makeRequestURL(key, [], responseParams), t 268 ) 269 .then(() => retrieve(key)) 270 .then((headers) => { 271 assert_not_own_property(headers, 'sec-fetch-user'); 272 }); 273 }, 'sec-fetch-user'); 274 275 promise_test((t) => { 276 const key = '{{uuid()}}'; 277 278 return induceRequest( 279 makeRequestURL(key, ['httpsCrossSite'], responseParams), t 280 ) 281 .then(() => retrieve(key)) 282 .then((headers) => { 283 assert_not_own_property(headers, 'sec-fetch-storage-access'); 284 }); 285 }, 'sec-fetch-storage-access - Cross-site'); 286 287 promise_test((t) => { 288 const key = '{{uuid()}}'; 289 290 return induceRequest( 291 makeRequestURL(key, ['httpsSameSite'], responseParams), t 292 ) 293 .then(() => retrieve(key)) 294 .then((headers) => { 295 assert_not_own_property(headers, 'sec-fetch-storage-access'); 296 }); 297 }, 'sec-fetch-storage-access - Same site'); 298 </script> 299 </body> 300 </html>