<!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 stylesheet that redirects to a secure stylesheet guarded by basic authentication. The secure script 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-stylesheet-redirects-to-basic-auth-secure-stylesheet.html");
</script>
</body>
</html>
