<html>
<body>
<script>
if (window.testRunner) {
    testRunner.waitUntilDone();
    testRunner.dumpAsText();
    testRunner.setCanOpenWindows();
    testRunner.setCloseRemainingWindowsWhenComplete(true);
}
window.addEventListener("message", function (e) {
    if (window.testRunner)
        testRunner.notifyDone();
}, false);
</script>
<p>This test loads a secure frame with insecure content that tries to access geolocation before loading insecure content.  Access to insecure content is blocked over secure connections when geolocation is accessed.</p>
<script>
onload = function() {
    window.open("https://127.0.0.1:8443/security/resources/geolocation-over-mixed-content-block.html");
}
</script>
</body>
</html>
