| <!DOCTYPE html> |
| <script src="../../resources/testharness.js"></script> |
| <script src="../../resources/testharnessreport.js"></script> |
| <p>There was a bug in paste's smart replace whitespace handling. In some cases, |
| it used information gathered at the start of the selection being pasted into to |
| decide whether or not a space needed to be added to the end of the incoming |
| content.</p> |
| <p>A smart paste is performed into a selection starting in one block and ending |
| in another. Spaces should surround the pasted word.</p> |
| <div id="sample" contenteditable="true"><div id="foo">foo</div><div id="bar">x bar</div></div> |
| <div id="log"></div> |
| <script> |
| test(function() { |
| var selection = window.getSelection(); |
| var sample = document.getElementById('sample'); |
| |
| if (!window.internals && !window.eventSender) |
| return; |
| |
| internals.settings.setEditingBehavior('win'); |
| |
| var foo = document.getElementById('foo'); |
| selection.selectAllChildren(foo); |
| var rects = window.getSelection().getRangeAt(0).getClientRects(); |
| var x = rects[0].left; |
| var y = rects[0].top; |
| eventSender.mouseMoveTo(x, y); |
| eventSender.mouseDown(); |
| eventSender.mouseUp(); |
| eventSender.mouseDown(); |
| eventSender.mouseUp(); |
| document.execCommand('copy'); |
| |
| selection.collapse(foo.firstChild, 1); |
| selection.extend(document.getElementById('bar').firstChild, 1); |
| document.execCommand('paste'); |
| |
| assert_equals(sample.innerHTML, '<div id="foo">f foo bar</div>', 'innerHTML'); |
| assert_true(selection.isCollapsed, 'isCollapsed'); |
| assert_equals(selection.anchorNode, foo.firstChild, 'anchorNode'); |
| assert_equals(selection.anchorOffset, 5, 'anchorOffset'); |
| }); |
| </script> |