<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-not-close.html");
}

function done() {
    if (window.testRunner)
        testRunner.notifyDone();
}

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