<html>
<head>
<script>
function runTest()
{
    if (window.testRunner) {
        testRunner.setIconDatabaseEnabled(true);
        testRunner.dumpDOMAsWebArchive();
        testRunner.queueReload();
    }
}
</script>
</head>
<body onload="runTest()">
<div id="console"></div>
<script>
function print(message, color) 
{
    var paragraph = document.createElement("div");
    paragraph.appendChild(document.createTextNode(message));
    paragraph.style.fontFamily = "monospace";
    if (color)
        paragraph.style.color = color;
    document.getElementById("console").appendChild(paragraph);
}
</script>
<p>This test should have a green 'PASS' just above this line.  If it doesn't, you failed.
<link rel="icon" onbeforeload="print('PASS','green');return false" href="resources/favicon.ico" type="image/x-icon">
</body>
</html>
