<script>
    var frameset;
    var topFrame;
    var selection;

    if (window.testRunner)
        testRunner.dumpAsText();

    onload = function()
    {
        frameset = document.getElementById("frameset");
        topFrame = document.getElementById("topFrame");
        selection = getSelection();
        selection.setBaseAndExtent(frameset.parentNode, 0, frameset, 4);
        topFrame.parentNode.removeChild(topFrame);
    }
</script>
<frameset id="frameset">
    <frame id="topFrame"/>
    <frame/>
</frameset>
