Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(189)

Side by Side Diff: third_party/WebKit/LayoutTests/editing/spelling/grammar-paste.html

Issue 2230783003: Convert editing/spelling/grammar-paste.html to use w3c test harness (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@EnableUnifiedTextCheckerByDefault
Patch Set: Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | third_party/WebKit/LayoutTests/editing/spelling/grammar-paste-expected.txt » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> 1 <!doctype html>
2 <html> 2 <html>
3 <head> 3 <head>
4 <script src="../../resources/js-test.js"></script> 4 <script src="../../resources/testharness.js"></script>
5 <script src="../../resources/testharnessreport.js"></script>
6 <script src="resources/util.js"></script>
5 </head> 7 </head>
6 <body> 8 <body>
7 <p id="description"></p> 9 <div>
8 <div id="console"></div> 10 <textarea id="testTextArea"></textarea>
11 <input id="testInput" type="text"></input>
12 <div id="testEditable" contenteditable></div>
13 <div id="testSourcePlain">You has the right.</div>
14 <div id="testSourceDecorated">I have a<b>n ki</b>wi. I have no idea.</div>
15 <div id="testSourceMulti">I have an grape. I have an muscat. I don't know.</div>
16 </div>
9 <script> 17 <script>
10 description('Grammar checking for pasted text.'); 18 var testTextArea = document.getElementById('testTextArea');
11 19 var testInput = document.getElementById('testInput');
12 jsTestIsAsync = true; 20 var testEditable = document.getElementById('testEditable');
13 21 var testSourcePlain = document.getElementById('testSourcePlain');
14 var testRoot = document.createElement("div"); 22 var testSourceDecorated = document.getElementById('testSourceDecorated');
15 document.body.insertBefore(testRoot, document.body.firstChild); 23 var testSourceMulti = document.getElementById('testSourceMulti');
16
17 var testTextArea = document.createElement("textarea");
18 testRoot.appendChild(testTextArea);
19
20 var testInput = document.createElement("input");
21 testInput.setAttribute("type", "text");
22 testRoot.appendChild(testInput);
23
24 var testEditable = document.createElement("div");
25 testEditable.setAttribute("contentEditable", "true");
26 testRoot.appendChild(testEditable);
27
28 var testSourcePlain = document.createElement("div");
29 testSourcePlain.innerHTML = "You has the right.";
30 testRoot.appendChild(testSourcePlain);
31
32 var testSourceDecorated = document.createElement("div");
33 testSourceDecorated.innerHTML = "I have a<b>n ki</b>wi. I have no idea.";
34 testRoot.appendChild(testSourceDecorated);
35
36 var testSourceMulti = document.createElement("div");
37 testSourceMulti.innerHTML = "I have an grape. I have an muscat. I don't know.";
38 testRoot.appendChild(testSourceMulti);
39 24
40 var sel = window.getSelection(); 25 var sel = window.getSelection();
41 26
42 var tests = [];
43
44 function done()
45 {
46 var next = tests.shift();
47 if (next)
48 return window.setTimeout(next, 0);
49 testRoot.style.display = "none";
50 finishJSTest();
51 }
52
53 function findFirstTextNode(node) 27 function findFirstTextNode(node)
54 { 28 {
55 function iterToFindFirstTextNode(node) 29 function iterToFindFirstTextNode(node)
56 { 30 {
57 if (node instanceof Text) 31 if (node instanceof Text)
58 return node; 32 return node;
59 33
60 var childNodes = node.childNodes; 34 var childNodes = node.childNodes;
61 for (var i = 0; i < childNodes.length; ++i) { 35 for (var i = 0; i < childNodes.length; ++i) {
62 var n = iterToFindFirstTextNode(childNodes[i]); 36 var n = iterToFindFirstTextNode(childNodes[i]);
(...skipping 12 matching lines...) Expand all
75 } 49 }
76 50
77 function verifyMarker(node, expectedMarked) 51 function verifyMarker(node, expectedMarked)
78 { 52 {
79 if (node instanceof HTMLInputElement || node instanceof HTMLTextAreaElement) 53 if (node instanceof HTMLInputElement || node instanceof HTMLTextAreaElement)
80 node.focus(); 54 node.focus();
81 else 55 else
82 sel.selectAllChildren(node); 56 sel.selectAllChildren(node);
83 57
84 var textNode = findFirstTextNode(node); 58 var textNode = findFirstTextNode(node);
85 var num = internals.markerCountForNode(textNode, "grammar"); 59 var num = internals.markerCountForNode(textNode, 'grammar');
86 if (num != expectedMarked.length) 60 assert_equals(num, expectedMarked.length);
87 return false; 61
88 for (var i = 0; i < num; ++i) { 62 for (var i = 0; i < num; ++i) {
89 var range = internals.markerRangeForNode(textNode, "grammar", i); 63 var range = internals.markerRangeForNode(textNode, 'grammar', i);
90 if (range.toString() != expectedMarked[i]) 64 assert_equals(range.toString(), expectedMarked[i]);
91 return false;
92 } 65 }
93
94 var nodeContent = node instanceof HTMLInputElement || node instanceof HTMLTe xtAreaElement ? node.value : node.innerHTML;
95 testPassed(node.tagName + " ungrammatical phrase '" + expectedMarked + "' on '" + nodeContent + "'");
96
97 return true;
98 } 66 }
99 67
100 var destination = null; 68 function pasteText(source, dest)
101 var expectedMarked = null;
102 function pasteAndVerify(source, dest, expectedMarked)
103 { 69 {
104 sel.selectAllChildren(source); 70 sel.selectAllChildren(source);
105 document.execCommand("Copy"); 71 document.execCommand("Copy");
yosin_UTC9 2016/08/12 01:45:42 Let's use single-quote in this file. Mixing single
Xiaocheng 2016/08/12 02:11:41 Done.
106 if (dest instanceof HTMLInputElement || dest instanceof HTMLTextAreaElement) { 72 if (dest instanceof HTMLInputElement || dest instanceof HTMLTextAreaElement) {
107 dest.value = ""; 73 dest.value = "";
108 dest.focus(); 74 dest.focus();
109 } else { 75 } else {
110 dest.innerHTML = ""; 76 dest.innerHTML = "";
111 sel.selectAllChildren(dest); 77 sel.selectAllChildren(dest);
112 } 78 }
113 document.execCommand("Paste"); 79 document.execCommand("Paste");
114
115 if (window.internals) {
116 destination = dest;
117 ungrammaticalPhrase = expectedMarked;
118 shouldBecomeEqual('verifyMarker(destination, ungrammaticalPhrase)', 'tru e', done);
119 }
120 }; 80 };
121 81
122 tests.push(function() { pasteAndVerify(testSourcePlain, testEditable, ["has"]); }); 82 var steps = [
123 tests.push(function() { pasteAndVerify(testSourceDecorated, testEditable, ["a"]) ; }); // Checks only 'a'. 83 () => pasteText(testSourcePlain, testEditable),
124 tests.push(function() { pasteAndVerify(testSourceMulti, testEditable, ["an", "an "]); }); 84 () => pasteText(testSourceDecorated, testEditable),
85 () => pasteText(testSourceMulti, testEditable),
125 86
126 tests.push(function() { pasteAndVerify(testSourcePlain, testInput, ["has"]); }); 87 () => pasteText(testSourcePlain, testInput),
127 tests.push(function() { pasteAndVerify(testSourceDecorated, testInput, ["an"]); }); 88 () => pasteText(testSourceDecorated, testInput),
128 tests.push(function() { pasteAndVerify(testSourceMulti, testInput, ["an", "an"]) ; }); 89 () => pasteText(testSourceMulti, testInput),
129 90
130 tests.push(function() { pasteAndVerify(testSourcePlain, testTextArea, ["has"]); }); 91 () => pasteText(testSourcePlain, testTextArea),
131 tests.push(function() { pasteAndVerify(testSourceDecorated, testTextArea, ["an"] ); }); 92 () => pasteText(testSourceDecorated, testTextArea),
132 tests.push(function() { pasteAndVerify(testSourceMulti, testTextArea, ["an", "an "]); }); 93 () => pasteText(testSourceMulti, testTextArea)
94 ];
133 95
134 done(); 96 var assertions = [
97 () => verifyMarker(testEditable, ["has"]),
98 () => verifyMarker(testEditable, ["a"]), // Checks only 'a'.
99 () => verifyMarker(testEditable, ["an", "an"]),
135 100
136 var successfullyParsed = true; 101 () => verifyMarker(testInput, ["has"]),
102 () => verifyMarker(testInput, ["an"]),
103 () => verifyMarker(testInput, ["an", "an"]),
104
105 () => verifyMarker(testTextArea, ["has"]),
106 () => verifyMarker(testTextArea, ["an"]),
107 () => verifyMarker(testTextArea, ["an", "an"]),
108 ];
109
110 runSpellingTest(steps, assertions, 'Grammar checking for pasted text.');
137 </script> 111 </script>
138 </body> 112 </body>
139 </html> 113 </html>
OLDNEW
« no previous file with comments | « no previous file | third_party/WebKit/LayoutTests/editing/spelling/grammar-paste-expected.txt » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698