| OLD | NEW |
| 1 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> | 1 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> |
| 2 <html> | 2 <html> |
| 3 <head> | 3 <head> |
| 4 <script src="../../fast/js/resources/js-test-pre.js"></script> | 4 <script src="../../fast/js/resources/js-test-pre.js"></script> |
| 5 <script src="resources/js-test-selection-shared.js"></script> | 5 <script src="resources/js-test-selection-shared.js"></script> |
| 6 </head> | 6 </head> |
| 7 <body> | 7 <body> |
| 8 <p id="description"></p> | 8 <p id="description"></p> |
| 9 <div id="console"></div> | 9 <div id="console"></div> |
| 10 <script> | 10 <script> |
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 85 var textNode = findFirstTextNode(node); | 85 var textNode = findFirstTextNode(node); |
| 86 var num = internals.markerCountForNode(textNode, "grammar"); | 86 var num = internals.markerCountForNode(textNode, "grammar"); |
| 87 if (num != expectedMarked.length) | 87 if (num != expectedMarked.length) |
| 88 return false; | 88 return false; |
| 89 for (var i = 0; i < num; ++i) { | 89 for (var i = 0; i < num; ++i) { |
| 90 var range = internals.markerRangeForNode(textNode, "grammar", i); | 90 var range = internals.markerRangeForNode(textNode, "grammar", i); |
| 91 if (range.toString() != expectedMarked[i]) | 91 if (range.toString() != expectedMarked[i]) |
| 92 return false; | 92 return false; |
| 93 } | 93 } |
| 94 | 94 |
| 95 var nodeContent = node instanceof HTMLInputElement || node instanceof HTMLTe
xtAreaElement ? node.value : node.innerHTML; |
| 96 testPassed(node.tagName + " ungrammatical phrase '" + expectedMarked + "' on
'" + nodeContent + "'"); |
| 97 |
| 95 return true; | 98 return true; |
| 96 } | 99 } |
| 97 | 100 |
| 101 var destination = null; |
| 102 var expectedMarked = null; |
| 98 function pasteAndVerify(source, dest, expectedMarked) | 103 function pasteAndVerify(source, dest, expectedMarked) |
| 99 { | 104 { |
| 100 sel.selectAllChildren(source); | 105 sel.selectAllChildren(source); |
| 101 document.execCommand("Copy"); | 106 document.execCommand("Copy"); |
| 102 if (dest instanceof HTMLInputElement || dest instanceof HTMLTextAreaElement)
{ | 107 if (dest instanceof HTMLInputElement || dest instanceof HTMLTextAreaElement)
{ |
| 103 dest.value = ""; | 108 dest.value = ""; |
| 104 dest.focus(); | 109 dest.focus(); |
| 105 } else { | 110 } else { |
| 106 dest.innerHTML = ""; | 111 dest.innerHTML = ""; |
| 107 sel.selectAllChildren(dest); | 112 sel.selectAllChildren(dest); |
| 108 } | 113 } |
| 109 document.execCommand("Paste"); | 114 document.execCommand("Paste"); |
| 110 | 115 |
| 111 var nretry = 10; | 116 if (window.internals) { |
| 112 var nsleep = 4; | 117 destination = dest; |
| 113 function trial() { | 118 ungrammaticalPhrase = expectedMarked; |
| 114 var verified = verifyMarker(dest, expectedMarked); | 119 shouldBecomeEqual('verifyMarker(destination, ungrammaticalPhrase)', 'tru
e', done); |
| 115 if (verified) { | 120 } |
| 116 testPassed(dest.tagName + " has a marker on '" + source.innerHTML +
"'"); | |
| 117 done(); | |
| 118 return; | |
| 119 } | |
| 120 | |
| 121 nretry--; | |
| 122 if (0 == nretry) { | |
| 123 testFailed(dest.tagName + " should have a marker on for '" + source.
innerHTML + "'"); | |
| 124 done(); | |
| 125 return; | |
| 126 } | |
| 127 | |
| 128 nsleep *= 2; | |
| 129 window.setTimeout(trial, nsleep); | |
| 130 }; | |
| 131 trial(); | |
| 132 }; | 121 }; |
| 133 | 122 |
| 134 if (window.internals) | 123 if (window.internals) |
| 135 internals.settings.setAsynchronousSpellCheckingEnabled(true); | 124 internals.settings.setAsynchronousSpellCheckingEnabled(true); |
| 136 | 125 |
| 137 tests.push(function() { pasteAndVerify(testSourcePlain, testEditable, ["has"]);
}); | 126 tests.push(function() { pasteAndVerify(testSourcePlain, testEditable, ["has"]);
}); |
| 138 tests.push(function() { pasteAndVerify(testSourceDecorated, testEditable, ["a"])
; }); // Checks only 'a'. | 127 tests.push(function() { pasteAndVerify(testSourceDecorated, testEditable, ["a"])
; }); // Checks only 'a'. |
| 139 tests.push(function() { pasteAndVerify(testSourceMulti, testEditable, ["an", "an
"]); }); | 128 tests.push(function() { pasteAndVerify(testSourceMulti, testEditable, ["an", "an
"]); }); |
| 140 | 129 |
| 141 tests.push(function() { pasteAndVerify(testSourcePlain, testInput, ["has"]); }); | 130 tests.push(function() { pasteAndVerify(testSourcePlain, testInput, ["has"]); }); |
| 142 tests.push(function() { pasteAndVerify(testSourceDecorated, testInput, ["an"]);
}); | 131 tests.push(function() { pasteAndVerify(testSourceDecorated, testInput, ["an"]);
}); |
| 143 tests.push(function() { pasteAndVerify(testSourceMulti, testInput, ["an", "an"])
; }); | 132 tests.push(function() { pasteAndVerify(testSourceMulti, testInput, ["an", "an"])
; }); |
| 144 | 133 |
| 145 tests.push(function() { pasteAndVerify(testSourcePlain, testTextArea, ["has"]);
}); | 134 tests.push(function() { pasteAndVerify(testSourcePlain, testTextArea, ["has"]);
}); |
| 146 tests.push(function() { pasteAndVerify(testSourceDecorated, testTextArea, ["an"]
); }); | 135 tests.push(function() { pasteAndVerify(testSourceDecorated, testTextArea, ["an"]
); }); |
| 147 tests.push(function() { pasteAndVerify(testSourceMulti, testTextArea, ["an", "an
"]); }); | 136 tests.push(function() { pasteAndVerify(testSourceMulti, testTextArea, ["an", "an
"]); }); |
| 148 | 137 |
| 149 done(); | 138 done(); |
| 150 | 139 |
| 151 var successfullyParsed = true; | 140 var successfullyParsed = true; |
| 152 </script> | 141 </script> |
| 153 <script src="../../fast/js/resources/js-test-post.js"></script> | 142 <script src="../../fast/js/resources/js-test-post.js"></script> |
| 154 </body> | 143 </body> |
| 155 </html> | 144 </html> |
| OLD | NEW |