const meta_name_enabled = [ "sec-ch-device-memory", "device-memory", "sec-ch-dpr", "dpr", "sec-ch-viewport-width", "viewport-width", "sec-ch-ua", "sec-ch-ua-mobile", "sec-ch-ua-platform", ]; const meta_name_client_hints = iframe_src + client_hints_list.map((e) => { if(meta_name_enabled.includes(e)) { return e+"=true"; } else { return e+"=false"; } }).join("&"); const cross_origin_enabled = [ "device-memory", "sec-ch-device-memory", "sec-ch-ua-platform", ]; const cross_origin_client_hints = iframe_src + client_hints_list.map((e) => { if(cross_origin_enabled.includes(e)) { return e+"=true"; } else { return e+"=false"; } }).join("&"); const same_origin_disabled = [ "dpr", "sec-ch-dpr", "sec-ch-ua-mobile", ]; const same_origin_client_hints = iframe_src + client_hints_list.map((e) => { if(same_origin_disabled.includes(e)) { return e+"=false"; } else { return e+"=true"; } }).join("&"); const test_frame = (origin, url, allow, message) => { promise_test(() => { return new Promise((resolve, reject) => { let frame = document.createElement('iframe'); frame.allow = allow; window.addEventListener('message', function(e) { try { assert_equals(typeof e.data, "string"); assert_equals(e.data, "PASS"); } catch { reject(e.data); } resolve(); }); document.body.appendChild(frame); // Writing to |frame.src| triggers the navigation, so // everything else need to happen first. frame.src = get_host_info()[origin] + url; }); }, message); }