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

window.addEventListener("message", function (e) {
	if (e.data == "done")
	    alert("should not have loaded insecure content");
	if (window.testRunner)
		testRunner.notifyDone()
}, false);

</script>
<p>This test opens a window that loads an insecure iframe (via a tricky
redirect).  We should trigger a mixed content callback because the main frame
in the window is HTTPS but is displaying content that can be controlled by an
active network attacker.</p>
<script>
onload = function() {
    window.open("https://127.0.0.1:8443/security/mixedContent/resources/frame-with-redirect-https-to-http-frame.html");
}
</script>

</body>
</html>
