<html>
<head>
<script>
if (window.testRunner) {
    testRunner.dumpAsText();
    testRunner.waitUntilDone();
    testRunner.setCanOpenWindows();
    testRunner.setCloseRemainingWindowsWhenComplete(true);
}
</script>
</head>
<body>
<p>This test verifies that a sandboxed IFrame can close a top-level frame
with allow-top-navigation.</p>
<button onclick="start()">Start Test</button>
<script>
function start() {
    window.wnd = window.open("resources/sandboxed-iframe-close-top-does-close.html");
}

function done() {
    alert("PASS");
    // We end the test asynchronously becaues this function is being called
    // from a strange callstack.
    window.setTimeout(function () {
        if (window.testRunner)
            testRunner.notifyDone();
    }, 0);
}

// In LayoutTests mode we can start automagically.
start();
</script>
</body>
</html>
