<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<script src="../../../resources/js-test-pre.js"></script>
</head>
<body>
<script>
description("Tests that when a request is made on a Geolocation object and its Frame is disconnected before a callback is made, the error callback is invoked with the correct error message.");

if (window.testRunner) {
    testRunner.setGeolocationPermission(true);
    testRunner.setMockGeolocationPosition(51.478, -0.166, 100);
}

function onIframeLoaded() {
    iframeGeolocation = iframe.contentWindow.navigator.geolocation;
    iframe.src = 'data:text/html,This frame should be visible when the test completes';
}

window.successCallbackInvoked = false;
function onIframeUnloaded() {
    iframeGeolocation.getCurrentPosition(function () {
        window.successCallbackInvoked = true;
    }, function(e) {
        window.positionError = e;
    });
    setTimeout(function() {
        shouldBe("successCallbackInvoked", "false");
        shouldBe("positionError.code", "GeolocationPositionError.POSITION_UNAVAILABLE");
        shouldBe("positionError.message", "'Geolocation cannot be used in frameless documents'");
        finishJSTest();
    }, 1000);
}

var iframe = document.createElement('iframe');
iframe.src = 'resources/disconnected-frame-inner.html';
document.body.appendChild(iframe);

window.jsTestIsAsync = true;
</script>
<script src="../../../resources/js-test-post.js"></script>
</body>
</html>
