|
1 <!DOCTYPE HTML> |
|
2 <html> |
|
3 <!-- |
|
4 https://bugzilla.mozilla.org/show_bug.cgi?id=454326 |
|
5 --> |
|
6 <head> |
|
7 <title>Test for Bug 454326</title> |
|
8 <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> |
|
9 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> |
|
10 </head> |
|
11 <body> |
|
12 <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=454326">Mozilla Bug 454326</a> |
|
13 <p id="display"></p> |
|
14 <div id="content" style="display: none"> |
|
15 </div> |
|
16 |
|
17 <div id="partial-text-selection">Hello Hello <div></div>World!</div> |
|
18 <div id="partial-element-selection"><div id="begin">Hello Hello </div><div></div><div id="end">World!</div></div> |
|
19 <pre id="test"> |
|
20 <script class="testbody" type="text/javascript"> |
|
21 |
|
22 /** Test for Bug 454326 **/ |
|
23 |
|
24 function reinitPartialTextSelection() { |
|
25 var pts = document.getElementById("partial-text-selection"); |
|
26 pts.textContent = null; |
|
27 pts.appendChild(document.createTextNode("Hello Hello ")); |
|
28 pts.appendChild(document.createElement("div")); |
|
29 pts.appendChild(document.createTextNode("World!")); |
|
30 } |
|
31 |
|
32 |
|
33 function doTest() { |
|
34 var pts = document.getElementById("partial-text-selection"); |
|
35 var ex = null; |
|
36 try { |
|
37 var r1 = document.createRange(); |
|
38 r1.setStart(pts.firstChild, 6); |
|
39 r1.setEnd(pts.lastChild, 6); |
|
40 is(r1.toString(), "Hello World!", "Wrong range!"); |
|
41 r1.surroundContents(document.createElement("div")); |
|
42 is(r1.toString(), "Hello World!", "Wrong range!"); |
|
43 } catch(e) { |
|
44 ex = e; |
|
45 } |
|
46 is(ex, null, "Unexpected exception!"); |
|
47 |
|
48 reinitPartialTextSelection(); |
|
49 ex = null; |
|
50 try { |
|
51 var r2 = document.createRange(); |
|
52 r2.setStart(pts.firstChild, 6); |
|
53 r2.setEnd(pts, 2); |
|
54 is(r2.toString(), "Hello ", "Wrong range!"); |
|
55 r2.surroundContents(document.createElement("div")); |
|
56 is(r2.toString(), "Hello ", "Wrong range!"); |
|
57 } catch(e) { |
|
58 ex = e; |
|
59 } |
|
60 is(ex, null, "Unexpected exception!"); |
|
61 |
|
62 reinitPartialTextSelection(); |
|
63 ex = null; |
|
64 try { |
|
65 var r3 = document.createRange(); |
|
66 r3.setStart(pts, 1); |
|
67 r3.setEnd(pts.lastChild, 6); |
|
68 is(r3.toString(), "World!", "Wrong range!"); |
|
69 r3.surroundContents(document.createElement("div")); |
|
70 is(r3.toString(), "World!", "Wrong range!"); |
|
71 } catch(e) { |
|
72 ex = e; |
|
73 } |
|
74 is(ex, null, "Unexpected exception!"); |
|
75 |
|
76 reinitPartialTextSelection(); |
|
77 ex = null; |
|
78 try { |
|
79 var r3 = document.createRange(); |
|
80 r3.setStart(pts.firstChild, 6); |
|
81 r3.setEnd(pts.firstChild.nextSibling, 0); |
|
82 is(r3.toString(), "Hello ", "Wrong range!"); |
|
83 r3.surroundContents(document.createElement("div")); |
|
84 is(r3.toString(), "Hello ", "Wrong range!"); |
|
85 } catch(e) { |
|
86 ex = e; |
|
87 is(e.name, "InvalidStateError", "Didn't get InvalidStateError exception!"); |
|
88 is(Object.getPrototypeOf(e), DOMException.prototype, "Didn't get DOMException!"); |
|
89 is(e.code, 11, "Didn't get INVALID_STATE_ERR exception!"); |
|
90 } |
|
91 ok(ex, "There should have been an exception!"); |
|
92 |
|
93 reinitPartialTextSelection(); |
|
94 ex = null; |
|
95 try { |
|
96 var r3 = document.createRange(); |
|
97 r3.setStart(pts.firstChild.nextSibling, 0); |
|
98 r3.setEnd(pts.lastChild, 6); |
|
99 is(r3.toString(), "World!", "Wrong range!"); |
|
100 r3.surroundContents(document.createElement("div")); |
|
101 is(r3.toString(), "World!", "Wrong range!"); |
|
102 } catch(e) { |
|
103 ex = e; |
|
104 is(e.name, "InvalidStateError", "Didn't get InvalidStateError exception!"); |
|
105 is(Object.getPrototypeOf(e), DOMException.prototype, "Didn't get DOMException!"); |
|
106 is(e.code, 11, "Didn't get INVALID_STATE_ERR exception!"); |
|
107 } |
|
108 ok(ex, "There should have been an exception!"); |
|
109 |
|
110 ex = null; |
|
111 try { |
|
112 var pes = document.getElementById("partial-element-selection"); |
|
113 var r4 = document.createRange(); |
|
114 r4.setStart(pes.firstChild.firstChild, 6); |
|
115 r4.setEnd(pes.lastChild.firstChild, 6); |
|
116 is(r4.toString(), "Hello World!", "Wrong range!"); |
|
117 r4.surroundContents(document.createElement("div")); |
|
118 is(r4.toString(), "Hello World!", "Wrong range!"); |
|
119 } catch(e) { |
|
120 ex = e; |
|
121 is(e.name, "InvalidStateError", "Didn't get InvalidStateError exception!"); |
|
122 is(Object.getPrototypeOf(e), DOMException.prototype, "Didn't get DOMException!"); |
|
123 is(e.code, 11, "Didn't get INVALID_STATE_ERR exception!"); |
|
124 } |
|
125 ok(ex, "There should have been an exception!"); |
|
126 } |
|
127 |
|
128 SimpleTest.waitForExplicitFinish(); |
|
129 addLoadEvent(doTest); |
|
130 addLoadEvent(SimpleTest.finish); |
|
131 </script> |
|
132 </pre> |
|
133 </body> |
|
134 </html> |
|
135 |