<html>
<body>
<script>
if (window.testRunner) {
    testRunner.waitUntilDone();
    testRunner.dumpAsText();
    testRunner.setCanOpenWindows();
    testRunner.overridePreference("WebKitAllowRunningInsecureContent", true);
}

window.addEventListener("message", function (e) {
  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 running content that can be controlled by an
active network attacker.</p>
<script>
window.open("https://127.0.0.1:8443/security/mixedContent/resources/frame-with-redirect-http-to-https-frame.html");
</script>
</body>
</html>
