<!DOCTYPE HTML>
<html class="reftest-wait"><head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <title>Testcase for bug </title>
<script>
var tests_done = 0;
var tests = [
  'window.getSelection().getRangeAt(0).setEnd(document.getElementsByTagName("pre")[0].firstChild,9)',
  'window.getSelection().getRangeAt(0).setEndAfter(document.getElementsByTagName("pre")[0].firstChild)',
  'window.getSelection().getRangeAt(0).setEndBefore(document.getElementsByTagName("pre")[0].childNodes[1])',
  'pre=document.getElementsByTagName("pre")[0]; r=window.getSelection().getRangeAt(0); r.setEnd(pre.childNodes[1],3); r.setStartAfter(pre.firstChild)',
  'window.getSelection().getRangeAt(0).setStartBefore(document.getElementsByTagName("pre")[0].firstChild)',
  'window.getSelection().getRangeAt(0).selectNode(document.getElementsByTagName("pre")[0].firstChild)',
  'window.getSelection().getRangeAt(0).selectNodeContents(document.getElementsByTagName("pre")[0])',
  'window.getSelection().getRangeAt(0).collapse(true)',
  'window.getSelection().getRangeAt(0).surroundContents(document.createElement("span"))',
  'window.getSelection().getRangeAt(0).setStart(document,0)',
  'window.getSelection().getRangeAt(0).detach()',
  'window.getSelection().getRangeAt(0).extractContents()',
  'window.getSelection().getRangeAt(0).deleteContents()'
];
function init_iframe(d) {
  var pre = d.createElement('pre');
  pre.appendChild(d.createTextNode('first\nfirst\n'));
  pre.appendChild(d.createTextNode('second'));
  d.documentElement.appendChild(pre);
  var text = pre.firstChild;
  var sel = d.defaultView.getSelection();
  var r = d.createRange();
  r.setStart(text,0)
  r.setEnd(text,3)
  sel.addRange(r);
  d.documentElement.offsetHeight;
}
function test_iframe(iframe, i) {
  iframe.contentDocument.write(
    '<'+'style>span { text-decoration:underline; } <'+'/style>' +
    '<'+'script>' + 
        'window.parent.init_iframe(document);' +
        'setTimeout(function(){' + window.parent.tests[i] + '; sel=window.getSelection(); try{r=sel.getRangeAt(0); sel.removeRange(r); sel.addRange(r);}catch(e){};  ++window.parent.tests_done; },0)' +
    '<'+'/script>'
  );
}
function create_iframe(i) {
  var div = document.createElement('div');
  document.body.appendChild(div);
  div.innerHTML = "<iframe src='about:blank' style='height:6em; width:12em; float:left;' frameborder='0' onload='test_iframe(this,"+i+")'><iframe>"
}

var id;
function check_if_done() {
  if (tests_done == tests.length) {
    clearInterval(id);
    document.documentElement.className = "";
  }
}

function test() {
  for (i = 0; i < tests.length; ++i) {
    create_iframe(i);
  }
  id = setInterval(check_if_done,500);
}
</script>

</head>
<body onload="test()"></body>
</html>