<!DOCTYPE html>
<html>
  <head>
    <title>Referrer Policy: iframes srdoc child correctly inherit the ancestor's referrer policy</title>
    <link rel="help" href="https://www.w3.org/TR/referrer-policy/#referrer-policy-delivery-nested">
    <script src="/resources/testharness.js"></script>
    <script src="/resources/testharnessreport.js"></script>
    <script src="/common/get-host-info.sub.js"></script>
    <script src="resources/make-html-script.js"></script>
    <meta name="referrer" content="origin">
  </head>
  <body onload="runTest()">
    <h1>Referrer Policy: iframes srcdoc child correctly inherit the ancestor's referrer policy</h1>
    <script>
      var test = async_test("iframes srcdoc child correctly inherit the ancestor's referrer policy");
      window.addEventListener("message", test.step_func_done(msg => {
        assert_equals(msg.data.referrer, self.origin + "/");
      }));

      function runTest() {
        var iframe = document.createElement("iframe");
        iframe.srcdoc = `<body><h1>Outer iframe</h1></body>`;
        iframe.onload = test.step_func(() => {
          iframe.onload = null;
          var iframeChild =  iframe.contentDocument.createElement("iframe");
          iframeChild.srcdoc = createScriptString(get_host_info().REMOTE_ORIGIN);
          iframe.contentDocument.body.appendChild(iframeChild);
        });
        document.body.appendChild(iframe);
      }
    </script>
    <div id="log"></div>
  </body>
</html>
