<html>
<head>
<script>
if (window.testRunner) {
    testRunner.dumpAsText();
    testRunner.dumpChildFramesAsText();
    testRunner.waitUntilDone();
    testRunner.setCanOpenWindows();
    testRunner.setCloseRemainingWindowsWhenComplete(true);
}

function runTest() {
    var iframe = document.getElementById("iframe");
    iframe.contentWindow.postMessage({"action": "click", "offsetLeft": iframe.offsetLeft, "offsetTop": iframe.offsetTop}, "*");
}
</script>
</head>
<body>
<p>
This test checks the referrer policy is obeyed along the redirect chain.  The
test passes if the referrer is https://127.0.0.1:8443
</p>
<iframe id="iframe" onload="runTest()" src="https://127.0.0.1:8443/security/resources/referrer-policy-redirect-link.html"></iframe>
</body>
</html>
