<script>

if (window.testRunner) {
    testRunner.waitUntilDone();
    testRunner.setCanOpenWindows();
}

function loaded()
{
    window.open("notify-done.html");
}

</script>
<body onload="loaded();">
</body>
