<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.layoutTestController) {
    layoutTestController.dumpAsText();
    layoutTestController.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.layoutTestController)
        layoutTestController.notifyDone();
}

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