<!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.layoutTestController) {
            layoutTestController.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.layoutTestController) {
        layoutTestController.dumpAsText();
        layoutTestController.waitUntilDone();
    }
</script>
</body>
</html>
