<html>
<head>
    <script>
        if (window.testRunner) {
           testRunner.dumpAsText();
           testRunner.setCanOpenWindows();
           testRunner.waitUntilDone();
        }

        var xmlWindow;

        function print(str)
        {
            document.getElementById('output').textContent = str;
            xmlWindow.close();
            testRunner.notifyDone();
        }

        function checkSourceXML()
        {
            var sourceXML = xmlWindow.document.getElementById('webkit-xml-viewer-source-xml');
            if (sourceXML && sourceXML.firstChild.nodeName == 'root')
                print('SUCCESS');
            else
                print('FAIL');
        }

        function onload()
        {
            xmlWindow = window.open('resources/sample.xml', "XMLViewerTestWindow");
            xmlWindow.onAfterWebkitXMLViewerLoaded = checkSourceXML;
        }

    </script>
</head>
<body onload="onload();">
    <p>Tests extensions hooks in xml viewer.</p>
    <div id='output'></div>
</body>
</html>
