| <script> |
| if (window.layoutTestController) |
| layoutTestController.dumpEditingCallbacks(); |
| </script> |
| <style> |
| div { |
| border: 1px solid black; |
| margin: 2px; |
| } |
| </style> |
| <p>When ReplaceSelectionCommand deletes the current selection, it should request that the deletion do a merge in some cases (normally, though, it should ask that a merge not be done, because a merge will cause information about block nesting to be lost). It wasn't requesting a merge in cases where it should have.</p> |
| <p>The failing case is where the incoming fragment has more than one block, and the selection being pasted into ends at the end of a paragraph. Any time the selection being pasted into ends at the end of a paragraph, deleting will leave leave a) a br or b) an empty block at the end of the deleted selection. So, not merging will leave an extraneous empty line or a collapsed block after the paste operation.</p> |
| <div id="test" contenteditable="true"><div style="border: 1px solid red;">bar</div><div style="border: 1px solid blue;">bar<br></div></div> |
| |
| <script> |
| var s = window.getSelection(); |
| var e = document.getElementById("test"); |
| |
| s.setPosition(e, 0); |
| s.modify("move", "forward", "character"); |
| s.modify("extend", "forward", "line"); |
| s.modify("extend", "forward", "line"); |
| document.execCommand("InsertHTML", false, "<div>foo</div><div>bar</div>"); |
| </script> |