OLD | NEW |
1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
2 | 2 |
3 <style> | 3 <style> |
4 #before:before { | 4 #before:before { |
5 /* must be an inline-block */ | 5 /* must be an inline-block */ |
6 display: inline-block; | 6 display: inline-block; |
7 content: 'before'; | 7 content: 'before'; |
8 } | 8 } |
| 9 #start:after { |
| 10 /* must be an inline-block */ |
| 11 display: inline-block; |
| 12 content: 'after'; |
| 13 } |
9 </style> | 14 </style> |
10 | 15 |
11 | 16 |
12 <p>Passes if it doesn't crash and the pseudo exists.</p> | 17 <p>Passes if it doesn't crash.</p> |
13 | 18 |
14 <div id="test"> | 19 <div id="test"> |
15 <span id="before"><!-- no content can be here --></span> | 20 <span id="before"><!-- no content can be here --></span> |
16 <span>text</span> | 21 <span>text</span> |
17 <span id="start"><!-- no content can be here --></span> | 22 <span id="start"><!-- no content can be here --></span> |
18 </div> | 23 </div> |
19 | 24 |
20 <script> | 25 <script> |
21 if (window.testRunner) | 26 if (window.testRunner) |
22 testRunner.dumpAsText(); | 27 testRunner.dumpAsText(); |
23 | 28 |
24 var before = document.getElementById('before'); | 29 var before = document.getElementById('before'); |
| 30 var start = document.getElementById('start'); |
25 var test = document.getElementById('test'); | 31 var test = document.getElementById('test'); |
26 | 32 |
27 // Select from the #start backwards to the start of the line. | 33 // Select from the #start backwards to the start of the line. |
28 window.getSelection().setBaseAndExtent(document.getElementById('start')); | 34 window.getSelection().setBaseAndExtent(document.getElementById('start')); |
29 window.getSelection().modify('extend', 'backward', 'lineBoundary') | 35 window.getSelection().modify('extend', 'backward', 'lineBoundary') |
30 | 36 |
31 // Replace the selection with a break. This apparently puts two <br>'s before | 37 // Replace the selection with a break. This replaces #before, text, |
32 // the #before and removes the span with "text" and the #start. | 38 // #start with two <br>'s. |
33 document.designMode = 'on'; | 39 document.designMode = 'on'; |
34 document.execCommand('InsertLineBreak'); | 40 document.execCommand('InsertLineBreak'); |
35 | 41 |
36 // Crash during tear down. | 42 // Crash during tear down. |
37 test.innerHTML = "Pseudo still exists: " + (before.offsetHeight > 0); | 43 test.innerHTML = "Both pseudos have been removed: " + (before.offsetHeight == 0
&& start.offsetHeight == 0); |
38 </script> | 44 </script> |
OLD | NEW |