blob: 1a28e593b16680b426253997dcb53d0837358007 [file] [log] [blame]
const directory = "/html/cross-origin-opener-policy/reporting";
const executor_path = directory + "/resources/executor.html?pipe=";
const coep_header = '|header(Cross-Origin-Embedder-Policy,require-corp)';
const origin = [
["cross-origin", get_host_info().HTTPS_REMOTE_ORIGIN ] ,
["same-site" , get_host_info().HTTPS_ORIGIN ] ,
];
let testAccessProperty = (property, op, message) => {
origin.forEach(([origin_name, origin]) => {
promise_test(async t => {
const report_token = token();
const openee_token = token();
const opener_token = token(); // The current test window.
const reportTo = reportToHeaders(report_token);
const openee_url = origin + executor_path + reportTo.header +
reportTo.coopReportOnlySameOriginHeader + coep_header +
`&uuid=${openee_token}`;
const openee = window.open(openee_url);
t.add_cleanup(() => send(openee_token, "window.close()"))
// 1. Make sure the new document to be loaded.
send(openee_token, `send("${opener_token}", "Ready");`);
assert_equals(await receive(opener_token), "Ready");
// TODO(arthursozogni): Figure out why 2 round-trip is sometimes
// necessary to ensure the CoopAccessMonitor are installed.
send(openee_token, `send("${opener_token}", "Ready");`);
assert_equals(await receive(opener_token), "Ready");
// 2. Try to access the openee. This shouldn't work because of COOP+COEP.
try {op(openee)} catch(e) {}
// 3. Check a reports is sent to the opener.
let report = await receiveReport(report_token,
"access-to-coop-page-from-opener");
assert_equals(report.body.property, property);
}, `${origin_name} > ${op}`);
})
};