blob: 9ad8ca5d70c764608ea4af690c1a47b6d46e255d [file] [log] [blame]
<!doctype html>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script src="../assert_selection.js"></script>
<script>
test(() => {
assert_not_equals(window.internals, undefined,
'This test requires window.internals to access clipboard');
assert_selection(
'<div contenteditable>foo ^bar| baz</div>',
selection => {
selection.document.execCommand('copy');
selection.collapseToEnd();
selection.document.execCommand('paste');
},
'<div contenteditable>foo barbar|\u{00A0}baz</div>',
'1 Paste text after text');
assert_selection(
[
'<div contenteditable>',
'<div>on^e</div>',
'<div>tw|o</div>',
'</div>',
].join(''),
selection => {
selection.document.execCommand('copy');
selection.document.execCommand('paste');
selection.document.execCommand('paste');
},
[
'<div contenteditable>',
'<div>one</div>',
'<div>twe</div>',
'<div>tw|o</div>',
'</div>',
].join(''),
'2 Paste DIV into DIV');
assert_selection(
[
'<div contenteditable>',
'<div>on^e',
'<div>two',
'<div>thre|e</div>',
'</div>',
'</div>',
'</div>',
].join(''),
selection => {
selection.document.execCommand('copy');
selection.document.execCommand('paste');
selection.document.execCommand('paste');
},
[
'<div contenteditable>',
'one',
'<div>two</div>',
'<div>',
'<div>three</div>',
'<div>two</div>',
'<div>thre|e<br></div>',
'</div>',
'</div>',
].join(''),
'3 Paste nested DIV into DIV');
assert_selection(
[
'<div contenteditable>',
'<div>a^bc</div>',
'<div>|def</div>',
'</div>',
].join(''),
selection => {
selection.document.execCommand('copy');
selection.document.execCommand('paste');
},
[
'<div contenteditable>',
'<div>abc</div>',
'<div>|def</div>',
'</div>',
].join(''),
'4 Paste with end of DIV');
assert_selection(
[
'<div contenteditable>',
'<div>a^bc</div>',
'<div>|def</div>',
'</div>',
].join(''),
selection => {
selection.document.execCommand('copy');
selection.document.execCommand('paste');
selection.document.execCommand('paste');
},
[
'<div contenteditable>',
'<div>abc</div>',
'<div>bc</div>',
'<div>|def</div>',
'</div>',
].join(''),
'5 Paste with end of DIV twice');
assert_selection(
[
'<div contenteditable>',
'<div>^one</div>',
'<div>|two</div>',
'<div>three</div>',
'</div>',
].join(''),
selection => {
selection.document.execCommand('copy');
selection.document.execCommand('paste');
selection.document.execCommand('paste');
},
[
'<div contenteditable>',
'<div>one</div>',
'<div>one</div>',
'<div>|two</div>',
'<div>three</div>',
'</div>',
].join(''),
'6 Paste with start of DIV twice');
assert_selection(
[
'<div contenteditable>',
'<div>',
'^one',
'<div>',
'|two',
'<div>three</div>',
'</div>',
'</div>',
'</div>',
].join(''),
selection => {
selection.document.execCommand('copy');
selection.document.execCommand('paste');
selection.document.execCommand('paste');
},
[
'<div contenteditable>',
'<div>',
'one<br>',
'one',
'<div>',
'|two',
'<div>three</div>',
'</div>',
'</div>',
'</div>',
].join(''),
'7 Paste with start of DIV twice in nested DIV');
assert_selection(
[
'<div contenteditable>',
'<div>',
'one',
'<div>tw^o</div>',
'th|ree',
'</div>',
'</div>',
].join(''),
selection => {
selection.document.execCommand('copy');
selection.document.execCommand('paste');
selection.document.execCommand('paste');
},
[
'<div contenteditable>',
'one',
'<div>two</div>',
'tho<br>',
'th|ree<br>',
'</div>',
].join(''),
'8 Paste with text crossing DIV twice');
assert_selection(
[
'<div contenteditable>',
'one',
'<div>two^</div>',
't|hree',
'</div>',
].join(''),
selection => {
selection.document.execCommand('copy');
selection.document.execCommand('paste');
selection.document.execCommand('paste');
},
[
'<div contenteditable>',
'one',
'<div>two</div>',
't<div>t|hree</div>',
'</div>',
].join(''),
'9 Paste with text crossing start of DIV');
}, 'Paste text');
</script>