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

function log(text) {
    document.body.appendChild(document.createTextNode(text));
    document.body.appendChild(document.createElement("br"));
}

function runTest() {
    var xhr = new XMLHttpRequest();
    xhr.onreadystatechange = function() {
        log("Synchronous status: " + xhr.status + ", readyState:" + xhr.readyState + ", responseText: " + xhr.responseText);
    }
    
    xhr.open("GET", "resources/url-blocking-test.js", false);
    try {
        xhr.send();
    } catch (error) {
        log("Synchronous error: " + error);
    }

    if (window.testRunner)
        testRunner.notifyDone();
}
</script>
</head>
<body onload="runTest()">
</body>
