<html>
<div></div>
<script>
if (window.testRunner) {
    testRunner.dumpAsText();
    testRunner.waitUntilDone();
}

var div = document.getElementsByTagName("div")[0];
div.innerHTML = '<html manifest="resources/insert-html-element-with-manifest.manifest">'

window.onload = function()
{
    applicationCache.oncached = function() {
        alert("FAIL: appcache cached");
    }
    applicationCache.onnoupdate = function() {
        alert("FAIL: appcache noupdate");
    }
    applicationCache.onerror = function() {
        alert("FAIL: appcache error");
    }

    setTimeout(function() {
        document.write("DONE. Passed if there were no alerts displayed.");
        if (window.testRunner)
            testRunner.notifyDone();
    }, 100);
}
</script>
