tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

iframe-src-change.html (1390B)


      1 <!DOCTYPE html>
      2 <script src="/resources/testharness.js"></script>
      3 <script src="/resources/testharnessreport.js"></script>
      4 <body>
      5 <script>
      6 function nextMessage() {
      7  return new Promise((resolve, reject) => {
      8    window.addEventListener('message', e => resolve(e.data), {once: true});
      9  });
     10 }
     11 
     12 promise_test(async () => {
     13  let iframe = document.createElement('iframe');
     14  iframe.setAttribute('src', '/common/security-features/subresource/document.py?first')
     15  iframe.setAttribute('referrerpolicy', 'no-referrer');
     16  document.body.appendChild(iframe);
     17 
     18  try {
     19    {
     20      let {referrer: documentReferrer, headers: {referer: httpReferrer}} = await nextMessage();
     21      assert_equals(httpReferrer, undefined, 'expected no HTTP Referer header on initial load');
     22      assert_equals(documentReferrer, undefined, 'expected no document.referrer on initial load');
     23    }
     24 
     25    iframe.setAttribute('src', '/common/security-features/subresource/document.py?second');
     26 
     27    {
     28      let {referrer: documentReferrer, headers: {referer: httpReferrer}} = await nextMessage();
     29      assert_equals(httpReferrer, undefined, 'expected no HTTP Referer header on src change');
     30      assert_equals(documentReferrer, undefined, 'expected no document.referrer on src change');
     31    }
     32  } finally {
     33    iframe.remove();
     34  }
     35 }, "Checks that referrerpolicy is respected when an iframe's src changes.");
     36 </script>
     37 </body>