feature-policy-navigation.js (1721B)
1 const meta_name_enabled = [ 2 "sec-ch-device-memory", 3 "device-memory", 4 "sec-ch-dpr", 5 "dpr", 6 "sec-ch-viewport-width", 7 "viewport-width", 8 "sec-ch-ua", 9 "sec-ch-ua-mobile", 10 "sec-ch-ua-platform", 11 ]; 12 13 const meta_name_client_hints = iframe_src + 14 client_hints_list.map((e) => { 15 if(meta_name_enabled.includes(e)) { 16 return e+"=true"; 17 } else { 18 return e+"=false"; 19 } 20 }).join("&"); 21 22 const cross_origin_enabled = [ 23 "device-memory", 24 "sec-ch-device-memory", 25 "sec-ch-ua-platform", 26 ]; 27 28 const cross_origin_client_hints = iframe_src + 29 client_hints_list.map((e) => { 30 if(cross_origin_enabled.includes(e)) { 31 return e+"=true"; 32 } else { 33 return e+"=false"; 34 } 35 }).join("&"); 36 37 const same_origin_disabled = [ 38 "dpr", 39 "sec-ch-dpr", 40 "sec-ch-ua-mobile", 41 ]; 42 43 const same_origin_client_hints = iframe_src + 44 client_hints_list.map((e) => { 45 if(same_origin_disabled.includes(e)) { 46 return e+"=false"; 47 } else { 48 return e+"=true"; 49 } 50 }).join("&"); 51 52 const test_frame = (origin, url, allow, message) => { 53 promise_test(() => { 54 return new Promise((resolve, reject) => { 55 let frame = document.createElement('iframe'); 56 frame.allow = allow; 57 window.addEventListener('message', function(e) { 58 try { 59 assert_equals(typeof e.data, "string"); 60 assert_equals(e.data, "PASS"); 61 } catch { 62 reject(e.data); 63 } 64 resolve(); 65 }); 66 document.body.appendChild(frame); 67 // Writing to |frame.src| triggers the navigation, so 68 // everything else need to happen first. 69 frame.src = get_host_info()[origin] + url; 70 }); 71 }, message); 72 }