<!DOCTYPE HTML> <html> <!-- https://bugzilla.mozilla.org/show_bug.cgi?id=454326 --> <head> <title>Test for Bug 454326</title> <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> </head> <body> <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=454326">Mozilla Bug 454326</a> <p id="display"></p> <div id="content" style="display: none"> </div> <div id="partial-text-selection">Hello Hello <div></div>World!</div> <div id="partial-element-selection"><div id="begin">Hello Hello </div><div></div><div id="end">World!</div></div> <pre id="test"> <script class="testbody" type="text/javascript"> /** Test for Bug 454326 **/ function reinitPartialTextSelection() { var pts = document.getElementById("partial-text-selection"); pts.textContent = null; pts.appendChild(document.createTextNode("Hello Hello ")); pts.appendChild(document.createElement("div")); pts.appendChild(document.createTextNode("World!")); } function doTest() { var pts = document.getElementById("partial-text-selection"); var ex = null; try { var r1 = document.createRange(); r1.setStart(pts.firstChild, 6); r1.setEnd(pts.lastChild, 6); is(r1.toString(), "Hello World!", "Wrong range!"); r1.surroundContents(document.createElement("div")); is(r1.toString(), "Hello World!", "Wrong range!"); } catch(e) { ex = e; } is(ex, null, "Unexpected exception!"); reinitPartialTextSelection(); ex = null; try { var r2 = document.createRange(); r2.setStart(pts.firstChild, 6); r2.setEnd(pts, 2); is(r2.toString(), "Hello ", "Wrong range!"); r2.surroundContents(document.createElement("div")); is(r2.toString(), "Hello ", "Wrong range!"); } catch(e) { ex = e; } is(ex, null, "Unexpected exception!"); reinitPartialTextSelection(); ex = null; try { var r3 = document.createRange(); r3.setStart(pts, 1); r3.setEnd(pts.lastChild, 6); is(r3.toString(), "World!", "Wrong range!"); r3.surroundContents(document.createElement("div")); is(r3.toString(), "World!", "Wrong range!"); } catch(e) { ex = e; } is(ex, null, "Unexpected exception!"); reinitPartialTextSelection(); ex = null; try { var r3 = document.createRange(); r3.setStart(pts.firstChild, 6); r3.setEnd(pts.firstChild.nextSibling, 0); is(r3.toString(), "Hello ", "Wrong range!"); r3.surroundContents(document.createElement("div")); is(r3.toString(), "Hello ", "Wrong range!"); } catch(e) { ex = e; is(e.name, "InvalidStateError", "Didn't get InvalidStateError exception!"); is(Object.getPrototypeOf(e), DOMException.prototype, "Didn't get DOMException!"); is(e.code, 11, "Didn't get INVALID_STATE_ERR exception!"); } ok(ex, "There should have been an exception!"); reinitPartialTextSelection(); ex = null; try { var r3 = document.createRange(); r3.setStart(pts.firstChild.nextSibling, 0); r3.setEnd(pts.lastChild, 6); is(r3.toString(), "World!", "Wrong range!"); r3.surroundContents(document.createElement("div")); is(r3.toString(), "World!", "Wrong range!"); } catch(e) { ex = e; is(e.name, "InvalidStateError", "Didn't get InvalidStateError exception!"); is(Object.getPrototypeOf(e), DOMException.prototype, "Didn't get DOMException!"); is(e.code, 11, "Didn't get INVALID_STATE_ERR exception!"); } ok(ex, "There should have been an exception!"); ex = null; try { var pes = document.getElementById("partial-element-selection"); var r4 = document.createRange(); r4.setStart(pes.firstChild.firstChild, 6); r4.setEnd(pes.lastChild.firstChild, 6); is(r4.toString(), "Hello World!", "Wrong range!"); r4.surroundContents(document.createElement("div")); is(r4.toString(), "Hello World!", "Wrong range!"); } catch(e) { ex = e; is(e.name, "InvalidStateError", "Didn't get InvalidStateError exception!"); is(Object.getPrototypeOf(e), DOMException.prototype, "Didn't get DOMException!"); is(e.code, 11, "Didn't get INVALID_STATE_ERR exception!"); } ok(ex, "There should have been an exception!"); } SimpleTest.waitForExplicitFinish(); addLoadEvent(doTest); addLoadEvent(SimpleTest.finish); </script> </pre> </body> </html>