<html>
<body>
<script>
function log(message)
{
    var item = document.createElement("li");
    item.appendChild(document.createTextNode(message));
    document.getElementById("console").appendChild(item);
}

dne_error_count = 0

function dne_onerror()
{
    log("DNE_ONERROR called");
    ++dne_error_count;
    if (dne_error_count == 2) {
        log("SUCCESS.  Two errors.");
        testRunner.notifyDone();
    }
}

if (window.testRunner) {
    testRunner.waitUntilDone();
    testRunner.dumpAsText();
    testRunner.dumpResourceResponseMIMETypes();
}
</script>
<p>This test verifies that an image which is prefetched, and which is also contained as a
subresource of the current document can be loaded correctly as a subresource, even if the URI
doesn't exist.

<p>When this test succeeds, you will see nothing.  When this test fails, you will crash or have another error.
<link rel="prefetch" href="resources/does-not-exist.jpg" onerror="dne_onerror()" />
<img src="resources/does-not-exist.jpg" onerror="dne_onerror()" />
<hr>
<p><ol id="console"></ol></p>
</body></html>

