Source code

Revision control

Copy as Markdown

Other Tools

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);
}