OLD | NEW |
---|---|
1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
2 <html> | 2 <html> |
3 <head> | 3 <head> |
4 <script src="../../resources/js-test.js"></script> | 4 <script src="../../resources/js-test.js"></script> |
5 </head> | 5 </head> |
6 <body onload="test(document.getElementById('destination'), document.getElementBy Id('frame').contentWindow.document);"> | 6 <body onload="test(document.getElementById('destination'), document.getElementBy Id('frame').contentDocument.body);"> |
7 <pre id="console"></pre> | |
8 <div id="container"> | 7 <div id="container"> |
9 <div id="destination" contentEditable></div> | 8 <div id="destination" contentEditable>zz.</div> |
10 <iframe id="frame" src="data:text/html,<body contenteditable></body>"></iframe > | 9 <iframe id="frame" src="data:text/html,<body contenteditable>zz.</body>"></ifr ame> |
11 </div> | 10 </div> |
12 | 11 |
13 <script> | 12 <script> |
14 description("Spell check markers should be removed from the whole page when disa bling spell checker but " + | 13 description("Spell check markers should be removed from the whole page when disa bling spell checker " |
15 "they should be restored in the focused editable if spell checker gets enabled. " + | 14 + "but they should be restored in the focused editable if spell checker gets enabled. " |
16 "To test manually type something with mispellings in the above editable element and iframe and turn " + | 15 + "To test manually, turn spell checker off - misspelling markers should dis appear. " |
17 "spell checker off - misspelling markers should disappear. Having the editable f ocused " + | 16 + "Having the editable focused, turn spell checker on. Misspellings in the e ditable should be marked."); |
18 "turn spell checker on again. Misspellings in the editable should be marked agai n."); | |
19 | 17 |
20 jsTestIsAsync = true; | 18 jsTestIsAsync = true; |
21 | 19 |
22 var destination_elm = null; | 20 function hasSpellingMarkerOnSetting(element, enableSpellChecking) { |
23 var destination_elm_in_frame = null; | 21 internals.setContinuousSpellCheckingEnabled(enableSpellChecking); |
22 return internals.markerCountForNode(element.firstChild, "spelling") ? true : false; | |
tony
2013/11/13 17:30:34
Nit: return !!internals.markerCountForNode(element
grzegorz
2013/11/14 08:44:22
Thanks. Done.
| |
23 } | |
24 | 24 |
25 function test(destination, frame_doc) | 25 var editableDiv = null; |
26 { | 26 var editableBodyInFrame = null; |
27 if (!window.internals) | 27 |
28 { | 28 function test(div, frameBody) { |
29 document.getElementById("console").innerHTML = "Automatic testing imposs ible. Test manually.\n"; | 29 |
30 if (!window.internals) { | |
31 debug("Automatic testing impossible. Test manually."); | |
30 return; | 32 return; |
31 } | 33 } |
32 | 34 |
33 internals.settings.setAsynchronousSpellCheckingEnabled(false); | 35 internals.settings.setAsynchronousSpellCheckingEnabled(true); |
34 internals.settings.setUnifiedTextCheckerEnabled(true); | 36 internals.settings.setUnifiedTextCheckerEnabled(true); |
35 | 37 |
36 destination_elm = destination; | 38 editableDiv = div; |
37 destination_elm_in_frame = frame_doc.body; | 39 editableBodyInFrame = frameBody; |
38 destination_elm.focus(); | |
39 document.execCommand("InsertText", false, "zz."); | |
40 shouldBe('internals.markerCountForNode(destination_elm.childNodes[0], "spell ing")', '1'); | |
41 destination_elm_in_frame.focus(); | |
42 frame_doc.execCommand("InsertText", false, "zz."); | |
43 shouldBe('internals.markerCountForNode(destination_elm_in_frame.childNodes[0 ], "spelling")', '1'); | |
44 internals.setContinuousSpellCheckingEnabled(false); | |
45 shouldBe('internals.markerCountForNode(destination_elm.childNodes[0], "spell ing")', '0'); | |
46 shouldBe('internals.markerCountForNode(destination_elm_in_frame.childNodes[0 ], "spelling")', '0'); | |
47 destination_elm.focus(); | |
48 internals.setContinuousSpellCheckingEnabled(true); | |
49 shouldBe('internals.markerCountForNode(destination_elm.childNodes[0], "spell ing")', '1'); | |
50 | 40 |
51 finishJSTest(); | 41 // Trigger spellchecking on editable fields. |
42 editableDiv.focus(); | |
43 editableBodyInFrame.focus(); | |
44 // Without blur, this element doesn't have misspelling. However, Chrome does n't need it. | |
45 editableBodyInFrame.blur(); | |
46 | |
47 shouldBecomeEqual('hasSpellingMarkerOnSetting(editableDiv, true)', 'true', f unction() { | |
48 shouldBecomeEqual('hasSpellingMarkerOnSetting(editableBodyInFrame, true) ', 'true', function() { | |
49 // Turn off spellchecking, all misspellings should disappear. | |
50 shouldBecomeEqual('hasSpellingMarkerOnSetting(editableDiv, false)', 'false', function() { | |
51 shouldBecomeEqual('hasSpellingMarkerOnSetting(editableBodyInFram e, false)', 'false', function() { | |
52 // Focus element and turn on spellchecking. | |
53 // Only misspellings of the focused element should be restor ed. | |
54 editableDiv.focus(); | |
55 shouldBecomeEqual('hasSpellingMarkerOnSetting(editableDiv, t rue)', 'true', function() { | |
56 shouldBecomeEqual('hasSpellingMarkerOnSetting(editableBo dyInFrame, true)', 'false', finishJSTest); | |
57 }); | |
58 }); | |
59 }); | |
60 }); | |
61 }); | |
52 } | 62 } |
53 | 63 |
54 </script> | 64 </script> |
55 </body> | 65 </body> |
56 </html> | 66 </html> |
OLD | NEW |