<body>
<p>Test that appcache works with authentication. Should say SUCCESS:</p>
<script>
if (window.testRunner) {
    testRunner.dumpAsText();
    testRunner.waitUntilDone();
}

// Store authentication credentials.
var req = new XMLHttpRequest;
req.open("GET", "resources/auth/setup.py", false, "login", "pasword");
req.send();

var ifr = document.createElement("iframe");
ifr.setAttribute("src", "resources/auth/iframe.py");
document.body.appendChild(ifr);

function success()
{
    var text = document.createElement("p");
    text.appendChild(document.createTextNode("SUCCESS"));
    document.body.replaceChild(text, document.getElementsByTagName("iframe")[0]);

    if (window.testRunner)
        testRunner.notifyDone();
}
</script>
</body>
