<html>
<head>
<script>
    function runTests()
    {
        if (window.testRunner) {
            testRunner.dumpAsText();
            testRunner.setCanOpenWindows();
            testRunner.waitUntilDone();
        }
        showModalDialog("resources/modal-dialog.html");
    }

    function log(message)
    {
        var console = document.getElementById("console");
        var li = document.createElement("li");
        var text = document.createTextNode(message);
    
        console.appendChild(li);
        li.appendChild(text);
    }
</script>
</head>

<body onload="runTests()">
    <p>This test verifies that showModalDialog implementation in DRT works.
    <p>You need to disable pop-up blocker for this test to run successfully.</p>
    <ul id="console"></ul>
</body>
</html>
