OLD | NEW |
| (Empty) |
1 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> | |
2 <html> | |
3 <head> | |
4 <script src="../../resources/js-test.js"></script> | |
5 </head> | |
6 <body> | |
7 <p id="description"></p> | |
8 <div id="console"></div> | |
9 <script> | |
10 | |
11 description('For bug cr571988: Spell checking for pasted mixed content.'); | |
12 | |
13 jsTestIsAsync = true; | |
14 if (window.testRunner) | |
15 testRunner.setMockSpellCheckerEnabled(true); | |
16 | |
17 var testRoot = document.createElement("div"); | |
18 document.body.insertBefore(testRoot, document.body.firstChild); | |
19 | |
20 var testEditable = document.createElement("div"); | |
21 testEditable.setAttribute("contentEditable", "true"); | |
22 testRoot.appendChild(testEditable); | |
23 | |
24 var testSourceDecorated = document.createElement("div"); | |
25 testSourceDecorated.innerHTML = "<img src='../resources/abe.png'> zz zz."; | |
26 testRoot.appendChild(testSourceDecorated); | |
27 | |
28 var sel = window.getSelection(); | |
29 | |
30 var tests = []; | |
31 | |
32 function done() | |
33 { | |
34 var next = tests.shift(); | |
35 if (next) | |
36 return window.setTimeout(next, 0); | |
37 testRoot.style.display = "none"; | |
38 finishJSTest(); | |
39 } | |
40 | |
41 function verifyMarker(node, expectedMarked) | |
42 { | |
43 if (node instanceof HTMLInputElement || node instanceof HTMLTextAreaElement)
{ | |
44 node.focus(); | |
45 } else { | |
46 sel.selectAllChildren(node); | |
47 } | |
48 | |
49 var count = 0; | |
50 for (var i = 0; i < node.childNodes.length; ++i) | |
51 count += internals.markerCountForNode(node.childNodes[i], 'spelling'); | |
52 | |
53 if (count == expectedMarked) { | |
54 var nodeContent = node instanceof HTMLInputElement || node instanceof HT
MLTextAreaElement ? node.value : node.innerHTML; | |
55 testPassed(node.tagName + " has " + expectedMarked + " markers on '" + n
odeContent + "'"); | |
56 } | |
57 | |
58 return count == expectedMarked; | |
59 } | |
60 | |
61 var destination = null; | |
62 var misspelledCount = null; | |
63 function pasteAndVerify(source, dest, expectedMarked) | |
64 { | |
65 sel.selectAllChildren(source); | |
66 document.execCommand("Copy"); | |
67 if (dest instanceof HTMLInputElement || dest instanceof HTMLTextAreaElement)
{ | |
68 dest.value = ""; | |
69 dest.focus(); | |
70 } else { | |
71 dest.innerHTML = ""; | |
72 sel.selectAllChildren(dest); | |
73 } | |
74 document.execCommand("Paste"); | |
75 | |
76 if (window.internals) { | |
77 destination = dest; | |
78 misspelledCount = expectedMarked; | |
79 shouldBecomeEqual('verifyMarker(destination, misspelledCount)', 'true',
done); | |
80 } | |
81 }; | |
82 | |
83 tests.push(function() { pasteAndVerify(testSourceDecorated, testEditable, testSo
urceDecorated.innerHTML.match(/zz/g).length); }); | |
84 done(); | |
85 | |
86 var successfullyParsed = true; | |
87 </script> | |
88 </body> | |
89 </html> | |
OLD | NEW |