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

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 empty as the redirect is going from HTTPS to HTTP.
</p>
<iframe id="iframe" name="iframe" onload="runTest()" src="https://127.0.0.1:8443/security/resources/referrer-policy-redirect-link-downgrade.html"></iframe>
</body>
</html>
