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

var expectedPasses = 6;
var messages = new Array();
var currentMessageIndex = 0;

function log(message)
{
    document.getElementById("console").appendChild(document.createTextNode(message));
    document.getElementById("console").appendChild(document.createElement("br"));
}

function logPass(message, messageNumber)
{
    messages[messageNumber] = 'PASS: ' + message;

    while (messages[currentMessageIndex]) {
        log(messages[currentMessageIndex]);
        currentMessageIndex++;
    }

    expectedPasses--;
    if (expectedPasses == 0 && window.testRunner)
        testRunner.notifyDone();
}
</script>
<link rel="icon" src="" href="" onerror="log('FAIL: link rel=icon onerror fired')"></link>
<link rel="prefetch" src="" href="" onerror="log('FAIL: link rel=prefetch onerror fired')"></link>
<link rel="stylesheet" src="" href="" onerror="log('FAIL: link rel=stylesheet onerror fired')"></link>
</head>
<body>
<div id="console"></div>
<command icon="" onerror="log('FAIL: command onerror fired')"></command>
<object data="" onerror="log('FAIL: object onerror fired')"></object>
<embed src="" onerror="log('FAIL: embed onerror fired')"></embed>
<video poster="" onerror="log('FAIL: video poster onerror fired')"></video>
<img src="" onerror="logPass('img onerror fired', 0)"></img>
<input type="image" src="" onerror="logPass('input type=image onerror fired', 1)"></input>
<script src="" onerror="logPass('script onerror fired', 2)"></script>
<video id="video" src="" onerror="logPass('video src onerror fired', 3)"></video>
<audio id="audio" src="" onerror="logPass('audio onerror fired', 4)"></audio>
<video><source src="" onerror="logPass('source onerror fired', 5)"></source></video>
<script>
document.getElementById("video").load();
document.getElementById("audio").load();
</script>
</body>
</html>
