<!DOCTYPE html>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<body>
<script>
function nextMessage() {
return new Promise((resolve, reject) => {
window.addEventListener('message', e => resolve(e.data), {once: true});
});
}
promise_test(async () => {
let iframe = document.createElement('iframe');
iframe.setAttribute('src', '/common/security-features/subresource/document.py?first')
iframe.setAttribute('referrerpolicy', 'no-referrer');
document.body.appendChild(iframe);
try {
{
let {referrer: documentReferrer, headers: {referer: httpReferrer}} = await nextMessage();
assert_equals(httpReferrer, undefined, 'expected no HTTP Referer header on initial load');
assert_equals(documentReferrer, undefined, 'expected no document.referrer on initial load');
}
iframe.setAttribute('src', '/common/security-features/subresource/document.py?second');
{
let {referrer: documentReferrer, headers: {referer: httpReferrer}} = await nextMessage();
assert_equals(httpReferrer, undefined, 'expected no HTTP Referer header on src change');
assert_equals(documentReferrer, undefined, 'expected no document.referrer on src change');
}
} finally {
iframe.remove();
}
}, "Checks that referrerpolicy is respected when an iframe's src changes.");
</script>
</body>