<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Crash XML Parser</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript" type="text/JavaScript">

var rq;

function loadXMLDoc()
{
    url = 'resources/docLoaderFrame-data.html';

    rq = false;
    
    try {
      if (window.XMLHttpRequest) {
        rq = new XMLHttpRequest();
        rq.overrideMimeType('text/xml');
        rq.onreadystatechange = processReqChange;
        rq.open('GET', url, true);
        rq.send();
      }
    } catch (ex) {
        rq = false;
        alert(ex);
    }
}

function processReqChange()
{
    if (rq.readyState == 4) {
        if (rq.status == 200) {
            var xmlDoc = rq.responseXML;
            document.getElementById("result").textContent = "SUCCESS (did not crash)";
        } else {
            alert('There was a problem retrieving the XML data: ' + rq.statusText);
        }
        
        if (window.testRunner) {
            testRunner.notifyDone();
        }
    }
}
</script>
</head>

<body onLoad="javascript:loadXMLDoc();">
<p>Test for <a href="rdar://problem/4298052">rdar://problem/4298052</a>: Crash in KWQCheckIfReloading at http://www.inquisitorx.com/beta/</p>
<p id="result"></p>
<script>
    if (window.testRunner) {
        testRunner.dumpAsText();
        testRunner.waitUntilDone();
    }
</script>
</body>
</html>
