<html>
<script>
if (window.testRunner) {
    testRunner.dumpAsText();
    testRunner.waitUntilDone();
}
</script>
<frameset id="frameset">
  <frame name="frame2" src="about:blank">
  <frame name="frame1" src="javascript:
    function log(s)
    {
      if (window.testRunner)
        alert(s);
      else
        top.frame1.document.write('<p>' + s + '</p>');
    }

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

    top.frameset.removeChild(top.frame2.frameElement);
    log(top.frameset.children.length);
    if (window.testRunner)
        testRunner.notifyDone();
  ">

  <frame name="frame3" src="about:blank">
</frameset>
</html>
