| <!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> |