<!DOCTYPE html>
<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/redirect.py?url=/contentextensions/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>
