<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.layoutTestController)
        layoutTestController.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>
