<script>
if (window.testRunner) {
    testRunner.dumpAsText();
    testRunner.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.testRunner)
            testRunner.notifyDone();
    }, 100);
}
</script>
