Index: third_party/WebKit/LayoutTests/editing/spelling/grammar-paste.html |
diff --git a/third_party/WebKit/LayoutTests/editing/spelling/grammar-paste.html b/third_party/WebKit/LayoutTests/editing/spelling/grammar-paste.html |
index 7eb7acd258ef88753805aaea9cc43a2ccbfcdc05..c529efb6a4267011b134342754e346912417c875 100644 |
--- a/third_party/WebKit/LayoutTests/editing/spelling/grammar-paste.html |
+++ b/third_party/WebKit/LayoutTests/editing/spelling/grammar-paste.html |
@@ -1,113 +1,86 @@ |
<!doctype html> |
-<html> |
-<head> |
<script src="../../resources/testharness.js"></script> |
<script src="../../resources/testharnessreport.js"></script> |
-<script src="resources/util.js"></script> |
-</head> |
-<body> |
-<div> |
-<textarea id="testTextArea"></textarea> |
-<input id="testInput" type="text"></input> |
-<div id="testEditable" contenteditable></div> |
-<div id="testSourcePlain">You has the right.</div> |
-<div id="testSourceDecorated">I have a<b>n ki</b>wi. I have no idea.</div> |
-<div id="testSourceMulti">I have an grape. I have an muscat. I don't know.</div> |
-</div> |
+<script src="../assert_selection.js"></script> |
+<script src="spellcheck_test.js"></script> |
<script> |
-var testTextArea = document.getElementById('testTextArea'); |
-var testInput = document.getElementById('testInput'); |
-var testEditable = document.getElementById('testEditable'); |
-var testSourcePlain = document.getElementById('testSourcePlain'); |
-var testSourceDecorated = document.getElementById('testSourceDecorated'); |
-var testSourceMulti = document.getElementById('testSourceMulti'); |
- |
-var sel = window.getSelection(); |
- |
-function findFirstTextNode(node) |
+function pasteHTMLToDest(document, html) |
{ |
- function iterToFindFirstTextNode(node) |
- { |
- if (node instanceof Text) |
- return node; |
- |
- var childNodes = node.childNodes; |
- for (var i = 0; i < childNodes.length; ++i) { |
- var n = iterToFindFirstTextNode(childNodes[i]); |
- if (n) |
- return n; |
- } |
- |
- return null; |
- } |
- |
- |
- if (node instanceof HTMLInputElement || node instanceof HTMLTextAreaElement) |
- return iterToFindFirstTextNode(internals.shadowRoot(node)); |
- else |
- return iterToFindFirstTextNode(node); |
+ document.getSelection().setClipboardData(html); |
+ document.getElementById('dest').focus(); |
+ document.execCommand('Paste'); |
} |
-function verifyMarker(node, expectedMarked) |
-{ |
- if (node instanceof HTMLInputElement || node instanceof HTMLTextAreaElement) |
- node.focus(); |
- else |
- sel.selectAllChildren(node); |
- |
- var textNode = findFirstTextNode(node); |
- var num = internals.markerCountForNode(textNode, 'grammar'); |
- assert_equals(num, expectedMarked.length); |
- |
- for (var i = 0; i < num; ++i) { |
- var range = internals.markerRangeForNode(textNode, 'grammar', i); |
- assert_equals(range.toString(), expectedMarked[i]); |
- } |
-} |
- |
-function pasteText(source, dest) |
-{ |
- sel.selectAllChildren(source); |
- document.execCommand('Copy'); |
- if (dest instanceof HTMLInputElement || dest instanceof HTMLTextAreaElement) { |
- dest.value = ''; |
- dest.focus(); |
- } else { |
- dest.innerHTML = ''; |
- sel.selectAllChildren(dest); |
- } |
- document.execCommand('Paste'); |
-}; |
- |
-var steps = [ |
- () => pasteText(testSourcePlain, testEditable), |
- () => pasteText(testSourceDecorated, testEditable), |
- () => pasteText(testSourceMulti, testEditable), |
- |
- () => pasteText(testSourcePlain, testInput), |
- () => pasteText(testSourceDecorated, testInput), |
- () => pasteText(testSourceMulti, testInput), |
- |
- () => pasteText(testSourcePlain, testTextArea), |
- () => pasteText(testSourceDecorated, testTextArea), |
- () => pasteText(testSourceMulti, testTextArea) |
-]; |
- |
-var assertions = [ |
- () => verifyMarker(testEditable, ['has']), |
- () => verifyMarker(testEditable, ['a']), // Checks only 'a'. |
- () => verifyMarker(testEditable, ['an', 'an']), |
- |
- () => verifyMarker(testInput, ['has']), |
- () => verifyMarker(testInput, ['an']), |
- () => verifyMarker(testInput, ['an', 'an']), |
- |
- () => verifyMarker(testTextArea, ['has']), |
- () => verifyMarker(testTextArea, ['an']), |
- () => verifyMarker(testTextArea, ['an', 'an']), |
-]; |
- |
-runSpellingTest(steps, assertions, 'Grammar checking for pasted text.'); |
+spellcheck_test( |
+ '<div contenteditable id="dest">|</div>', |
+ document => pasteHTMLToDest(document, 'You has the right.'), |
+ '<div contenteditable id="dest">You ~has~ the right.</div>', |
+ 'Paste plain text into editable <div>.'); |
+ |
+spellcheck_test( |
+ '<div contenteditable id="dest">|</div>', |
+ document => pasteHTMLToDest(document, |
+ 'I have a<b>n ki</b>wi. I have no idea.'), |
+ [ |
+ '<div contenteditable id="dest">', |
+ 'I have ~a~<b>~n~ ki</b>wi. I have no idea.', |
+ '</div>' |
+ ].join(''), |
+ 'Paste decorated text into editable <div>.'); |
+ |
+spellcheck_test( |
+ '<div contenteditable id="dest">|</div>', |
+ document => pasteHTMLToDest( |
+ document, 'I have an grape. I have an muscat. I don\'t know.'), |
+ [ |
+ '<div contenteditable id="dest">', |
+ 'I have ~an~ grape. I have ~an~ muscat. I don\'t know.', |
+ '</div>' |
+ ].join(''), |
+ 'Paste text with multiple errors into editable <div>.'); |
+ |
+spellcheck_test( |
+ '<input id="dest" type="text">|', |
+ document => pasteHTMLToDest(document, 'You has the right.'), |
+ '<input id="dest" type="text" value="You ~has~ the right.">', |
+ 'Paste plain text into <input>.'); |
+ |
+spellcheck_test( |
+ '<input id="dest" type="text">|', |
+ document => pasteHTMLToDest(document, |
+ 'I have a<b>n ki</b>wi. I have no idea.'), |
+ '<input id="dest" type="text" value="I have ~an~ kiwi. I have no idea.">', |
+ 'Paste decorated text into <input>.'); |
+ |
+spellcheck_test( |
+ '<input id="dest" type="text">|', |
+ document => pasteHTMLToDest( |
+ document, 'I have an grape. I have an muscat. I don\'t know.'), |
+ '<input id="dest" type="text" ' + |
+ 'value="I have ~an~ grape. I have ~an~ muscat. I don\'t know.">', |
+ 'Paste text with multiple errors into <input>.'); |
+ |
+spellcheck_test( |
+ '<textarea id="dest">|</textarea>', |
+ document => pasteHTMLToDest(document, 'You has the right.'), |
+ '<textarea id="dest">You ~has~ the right.</textarea>', |
+ 'Paste plain text into <textarea>.'); |
+ |
+spellcheck_test( |
+ '<textarea id="dest">|</textarea>', |
+ document => pasteHTMLToDest(document, |
+ 'I have a<b>n ki</b>wi. I have no idea.'), |
+ '<textarea id="dest">I have ~an~ kiwi. I have no idea.</textarea>', |
+ 'Paste decorated text into <textarea>.'); |
+ |
+spellcheck_test( |
+ '<textarea id="dest">|</textarea>', |
+ document => pasteHTMLToDest( |
+ document, 'I have an grape. I have an muscat. I don\'t know.'), |
+ [ |
+ '<textarea id="dest">', |
+ 'I have ~an~ grape. I have ~an~ muscat. I don\'t know.', |
+ '</textarea>' |
+ ].join(''), |
+ 'Paste text with multiple errors into <textarea>.'); |
</script> |
-</body> |
-</html> |