blob: f0119e6c754d363f2acd2d2794043df91b788a2a [file] [log] [blame]
<!DOCTYPE html>
<html>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src=/fetch/metadata/resources/helper.js></script>
<script>
// Test that correct `Sec-Fetch-Site` (and other `Sec-Fetch-...` request
/// headers) are used in navigations triggered by |history.back()|.
function add_test(description, report_host, go_back_host, expectations) {
async_test(t => {
// STEP1: Navigate a new window to report_host/post-to-owner-onload.py
const url_suffix = '/fetch/metadata/resources/post-to-owner-onload.py';
const url = `https://${report_host}${url_suffix}`;
const w = window.open(url, '_blank');
var msg_counter = 0;
window.addEventListener('message', t.step_func(e => {
if (e.source != w)
return;
msg_counter = msg_counter + 1;
if (msg_counter == 1) {
// STEP2: Verify the headers (this is a sanity check that the same
// headers are used here and in STEP5).
assert_header_equals(e.data, expectations, description + " 1");
// STEP3: Go to go_back_host/go-back.html
const url_suffix = '/fetch/metadata/resources/go-back.html';
const url = `https://${go_back_host}${url_suffix}`;
w.location = url;
// STEP4 (elsewhere - inside go-back.html): Call history.back().
} else if (msg_counter == 2) {
// STEP5: Verify the headers (this is the main verification and focus
// of the test).
assert_header_equals(e.data, expectations, description + " 2");
// STEP6: Finish the test.
t.done();
}
}));
}, description);
}
const same_origin_host = "{{host}}:{{ports[https][0]}}";
const same_site_host = "{{hosts[][www]}}:{{ports[https][0]}}";
const cross_site_host = "{{hosts[alt][www]}}:{{ports[https][0]}}";
add_test(
"back to same-origin-initiated navigation",
same_origin_host, // report_host
cross_site_host, // go_back_host
{ "site": "same-origin",
"user": "",
"mode": "navigate",
"dest": "document"
});
add_test(
"back to same-site-initiated navigation",
same_site_host, // report_host
cross_site_host, // go_back_host
{ "site": "same-site",
"user": "",
"mode": "navigate",
"dest": "document"
});
add_test(
"back to cross-site-initiated navigation",
cross_site_host, // report_host
cross_site_host, // go_back_host
{ "site": "cross-site",
"user": "",
"mode": "navigate",
"dest": "document"
});
</script>