<!DOCTYPE html>
<html>
<body>
<script>
if (window.testRunner) {
    testRunner.dumpAsText();
    testRunner.setCanOpenWindows();
    testRunner.setCloseRemainingWindowsWhenComplete(true);
    testRunner.setHandlesAuthenticationChallenges(true);
    testRunner.setAuthenticationUsername("testUser");
    testRunner.setAuthenticationPassword("testPassword");
    testRunner.waitUntilDone();
}

function receiveMessage(messageEvent) {
    document.getElementById("result").textContent = messageEvent.data;
    if (window.testRunner)
        testRunner.notifyDone();
}

window.addEventListener("message", receiveMessage, false);
</script>
<p>This test opens a new window to a secure page that loads an insecure image that redirects to a secure image guarded by basic authentication. The secure image should be blocked because it requires credentials and was loaded via an insecure redirect.</p>
<div id="result"></div>
<script>
window.open("https://127.0.0.1:8443/security/mixedContent/resources/frame-with-insecure-image-redirects-to-basic-auth-secure-image.html");
</script>
</body>
</html>
