<script>
if (window.layoutTestController) {
    layoutTestController.dumpAsText();
    layoutTestController.waitUntilDone();
}

window.onload = function()
{
    document.write("<html manifest='resources/document-write-html-element.manifest'>");
    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.layoutTestController)
            layoutTestController.notifyDone();
    }, 100);
}
</script>
