Wed, 31 Dec 2014 07:16:47 +0100
Revert simplistic fix pending revisit of Mozilla integration attempt.
michael@0 | 1 | <!DOCTYPE HTML> |
michael@0 | 2 | <html class="reftest-wait"><head> |
michael@0 | 3 | <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> |
michael@0 | 4 | <title>Testcase for bug </title> |
michael@0 | 5 | <script> |
michael@0 | 6 | var tests_done = 0; |
michael@0 | 7 | var tests = [ |
michael@0 | 8 | 'window.getSelection().getRangeAt(0).setEnd(document.getElementsByTagName("pre")[0].firstChild,9)', |
michael@0 | 9 | 'window.getSelection().getRangeAt(0).setEndAfter(document.getElementsByTagName("pre")[0].firstChild)', |
michael@0 | 10 | 'window.getSelection().getRangeAt(0).setEndBefore(document.getElementsByTagName("pre")[0].childNodes[1])', |
michael@0 | 11 | 'pre=document.getElementsByTagName("pre")[0]; r=window.getSelection().getRangeAt(0); r.setEnd(pre.childNodes[1],3); r.setStartAfter(pre.firstChild)', |
michael@0 | 12 | 'window.getSelection().getRangeAt(0).setStartBefore(document.getElementsByTagName("pre")[0].firstChild)', |
michael@0 | 13 | 'window.getSelection().getRangeAt(0).selectNode(document.getElementsByTagName("pre")[0].firstChild)', |
michael@0 | 14 | 'window.getSelection().getRangeAt(0).selectNodeContents(document.getElementsByTagName("pre")[0])', |
michael@0 | 15 | 'window.getSelection().getRangeAt(0).collapse(true)', |
michael@0 | 16 | 'window.getSelection().getRangeAt(0).surroundContents(document.createElement("span"))', |
michael@0 | 17 | 'window.getSelection().getRangeAt(0).setStart(document,0)', |
michael@0 | 18 | 'window.getSelection().getRangeAt(0).detach()', |
michael@0 | 19 | 'window.getSelection().getRangeAt(0).extractContents()', |
michael@0 | 20 | 'window.getSelection().getRangeAt(0).deleteContents()' |
michael@0 | 21 | ]; |
michael@0 | 22 | function init_iframe(d) { |
michael@0 | 23 | var pre = d.createElement('pre'); |
michael@0 | 24 | pre.appendChild(d.createTextNode('first\nfirst\n')); |
michael@0 | 25 | pre.appendChild(d.createTextNode('second')); |
michael@0 | 26 | d.documentElement.appendChild(pre); |
michael@0 | 27 | var text = pre.firstChild; |
michael@0 | 28 | var sel = d.defaultView.getSelection(); |
michael@0 | 29 | var r = d.createRange(); |
michael@0 | 30 | r.setStart(text,0) |
michael@0 | 31 | r.setEnd(text,3) |
michael@0 | 32 | sel.addRange(r); |
michael@0 | 33 | d.documentElement.offsetHeight; |
michael@0 | 34 | } |
michael@0 | 35 | function test_iframe(iframe, i) { |
michael@0 | 36 | iframe.contentDocument.write( |
michael@0 | 37 | '<'+'style>span { text-decoration:underline; } <'+'/style>' + |
michael@0 | 38 | '<'+'script>' + |
michael@0 | 39 | 'window.parent.init_iframe(document);' + |
michael@0 | 40 | '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)' + |
michael@0 | 41 | '<'+'/script>' |
michael@0 | 42 | ); |
michael@0 | 43 | } |
michael@0 | 44 | function create_iframe(i) { |
michael@0 | 45 | var div = document.createElement('div'); |
michael@0 | 46 | document.body.appendChild(div); |
michael@0 | 47 | div.innerHTML = "<iframe src='about:blank' style='height:6em; width:12em; float:left;' frameborder='0' onload='test_iframe(this,"+i+")'><iframe>" |
michael@0 | 48 | } |
michael@0 | 49 | |
michael@0 | 50 | var id; |
michael@0 | 51 | function check_if_done() { |
michael@0 | 52 | if (tests_done == tests.length) { |
michael@0 | 53 | clearInterval(id); |
michael@0 | 54 | document.documentElement.className = ""; |
michael@0 | 55 | } |
michael@0 | 56 | } |
michael@0 | 57 | |
michael@0 | 58 | function test() { |
michael@0 | 59 | for (i = 0; i < tests.length; ++i) { |
michael@0 | 60 | create_iframe(i); |
michael@0 | 61 | } |
michael@0 | 62 | id = setInterval(check_if_done,500); |
michael@0 | 63 | } |
michael@0 | 64 | </script> |
michael@0 | 65 | |
michael@0 | 66 | </head> |
michael@0 | 67 | <body onload="test()"></body> |
michael@0 | 68 | </html> |