<html>
<body>
<script>
if (window.testRunner) {
    testRunner.waitUntilDone();
    testRunner.dumpAsText();
}
window.addEventListener("message", function (e) {
    if (window.testRunner)
        testRunner.notifyDone();
}, false);
</script>
<p>This test loads an insecure frame that tries to access geolocation.  Access to geolocation is blocked over insecure connections.</p>
<script>
onload = function() {
    window.open("http://127.0.0.1:8080/security/resources/geolocation-over-insecure-content.html");
}
</script>
</body>
</html>
