| <!DOCTYPE html> |
| <head> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| |
| <meta name="referrer" content="no-referrer" id="referrermeta"> |
| </head> |
| <body> |
| <script> |
| async function fetchAndGetReferrer() { |
| let response = await fetch('/common/security-features/subresource/xhr.py'); |
| let data = await response.json(); |
| return data.headers.referer; |
| } |
| |
| promise_test(async t => { |
| assert_equals(await fetchAndGetReferrer(), undefined, |
| 'referrer should not be set'); |
| |
| // Add second meta _before_ first meta. |
| const first_meta = document.getElementById('referrermeta'); |
| const second_meta = document.createElement('meta'); |
| second_meta.name = 'referrer'; |
| second_meta.content = 'strict-origin'; |
| document.head.appendChild(second_meta); |
| assert_equals(await fetchAndGetReferrer(), window.location.origin + '/', |
| 'referrer should be origin only'); |
| |
| // Update content attribute of first meta. |
| first_meta.content = 'unsafe-url'; |
| assert_equals(await fetchAndGetReferrer(), window.location.href, |
| 'referrer should be full url'); |
| }, 'document referrer policy is the value of the most recently modified <meta name="referrer"'); |
| |
| </script> |
| </body> |