<html manifest="http://localhost:8000/appcache/resources/empty.manifest">
<p>Test that a different origin manifest is completely ignored.</p>
<div id=result></div>
<script>
if (window.testRunner) {
    testRunner.waitUntilDone();
    testRunner.dumpAsText();
}

var result = document.getElementById("result");
var originalResult = result.innerHTML;

try {
    applicationCache.onchecking = function() { result.innerHTML += "FAIL: onchecking called. " }
    applicationCache.onerror = function() { result.innerHTML += "FAIL: onerror called" }
    applicationCache.onnoupdate = function() { result.innerHTML += "FAIL: onnoupdate called" }
    applicationCache.ondownloading = function() { result.innerHTML += "FAIL: ondownloading called" }
    applicationCache.onprogress = function() { result.innerHTML += "FAIL: onprogress called" }
    applicationCache.onupdateready = function() { result.innerHTML += "FAIL: onupdateready called" }
    applicationCache.oncached = function() { result.innerHTML += "FAIL: oncached called" }
    applicationCache.onobsolete = function() { result.innerHTML += "FAIL: onobsolete called" }
} catch (ex) {
    result.innerHTML += "FAIL: " + ex;
}
function done()
{
    if (result.innerHTML == originalResult)
        result.innerHTML = applicationCache.status == applicationCache.UNCACHED ? "PASS" : "FAIL: cache status in not UNCACHED";

    if (window.testRunner)
        testRunner.notifyDone();
}

setTimeout(done, 100);
</script>
</html>
