<head>

<script>

function gc()
{
    if (window.GCController)
        return GCController.collect();

    for (var i = 0; i < 10000; i++) { // > force garbage collection (FF requires about 9K allocations before a collect)
        var s = new String("");
    }
}

function runTest()
{
    if (window.testRunner)
        testRunner.dumpAsText();
    var validity = document.getElementById("control").validity;
    document.body.removeChild(document.getElementById("control"));
    gc();
    validity.valueMissing;
    document.getElementById("result").firstChild.data = "Test has run: If no assertion or crash occurred, it passed.";
}

</script>

</head>

<body onload="runTest()">

<p>Tests the behavior of removing a control and then accessing its validity state afterward.</p>

<select id="control"></select>

<p id="result">TEST DID NOT RUN YET</p>

</body>
