<html>
<head>
<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);
}

function shouldBe(a, b)
{
    var evalA = eval(a);
    if (evalA == b)
        print("PASS: " + a + " should be " + b + " and is.", "green");
    else
        print("FAIL: " + a + " should be " + b + " but instead is " + evalA + ".", "red");
}

function test() 
{
    if (window.testRunner)
        testRunner.dumpAsText();
        
    window.Image = 1;
    window.Option = 1;
    window.XMLHttpRequest = 1;
    window.XMLSerializer = 1;
    window.DOMParser = 1;
    window.XSLTProcessor = 1;
    
    shouldBe("window.Image", 1);
    shouldBe("window.Option", 1);
    shouldBe("window.XMLHttpRequest", 1);
    shouldBe("window.XMLSerializer", 1);
    shouldBe("window.DOMParser", 1);
    shouldBe("window.XSLTProcessor", 1);
}
</script>
</head>

<body onload="test();">
<p>This page tests whether certain global constructors are read-only. Previous versions of WebKit incorrectly
   made them read-only.</p>
<p>If the test passes, you'll see a series of pass message below.</p>
<hr>

<div id='console'></div>

</body>
</html>
