Source code

Revision control

Copy as Markdown

Other Tools

<!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>