<html>
<body>
<script>
if (window.testRunner) {
    testRunner.waitUntilDone();
    testRunner.dumpAsText();
    testRunner.dumpBackForwardList();
    testRunner.setCanOpenWindows();
    testRunner.setCloseRemainingWindowsWhenComplete(true);
    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.  We should trigger a
mixed content callback because the main frame in the window is HTTPS but is
running insecure content.</p>
<script>
window.open("https://127.0.0.1:8443/security/mixedContent/resources/frame-with-insecure-frame.html");
</script>
</body>
</html>
