<html manifest="http://user:password@127.0.0.1:8000/appcache/resources/empty.manifest">
<body>
<p>Test that application cache doesn't block loading resources from the same origin with credential.</p>
<script>
if (window.testRunner) {
    testRunner.dumpAsText();
    testRunner.waitUntilDone();
}

function test()
{
    var ifr = document.createElement("iframe");
    ifr.setAttribute("src", "javascript:parent.success(), 'PASS'");
    document.body.appendChild(ifr);
}

function success()
{
    document.body.replaceChild(document.createTextNode("SUCCESS"), document.getElementsByTagName("iframe")[0]);
    if (window.testRunner)
        testRunner.notifyDone();
}

applicationCache.oncached = test;
applicationCache.onnoupdate = test;
</script>
<body>
</html>
