Index: LayoutTests/editing/spelling/spellcheck-disable-enable.html |
diff --git a/LayoutTests/editing/spelling/spellcheck-disable-enable.html b/LayoutTests/editing/spelling/spellcheck-disable-enable.html |
index d2f94b7451ff276ef9897cc824e2122826e96154..ebf4243eb48c87265dbc253af6d6a7f975c423b8 100644 |
--- a/LayoutTests/editing/spelling/spellcheck-disable-enable.html |
+++ b/LayoutTests/editing/spelling/spellcheck-disable-enable.html |
@@ -4,51 +4,62 @@ |
<script src="../../resources/js-test.js"></script> |
</head> |
<body onload="test(document.getElementById('destination'), document.getElementById('frame').contentWindow.document);"> |
-<pre id="console"></pre> |
<div id="container"> |
<div id="destination" contentEditable></div> |
<iframe id="frame" src="data:text/html,<body contenteditable></body>"></iframe> |
</div> |
<script> |
-description("Spell check markers should be removed from the whole page when disabling spell checker but " + |
-"they should be restored in the focused editable if spell checker gets enabled. " + |
-"To test manually type something with mispellings in the above editable element and iframe and turn " + |
-"spell checker off - misspelling markers should disappear. Having the editable focused " + |
-"turn spell checker on again. Misspellings in the editable should be marked again."); |
+description("Spell check markers should be removed from the whole page when disabling spell checker " |
+ + "but they should be restored in the focused editable if spell checker gets enabled. " |
+ + "To test manually, turn spell checker off - misspelling markers should disappear. " |
+ + "Having the editable focused, turn spell checker on. Misspellings in the editable should be marked."); |
jsTestIsAsync = true; |
-var destination_elm = null; |
-var destination_elm_in_frame = null; |
+function hasSpellingMarkerOnSetting(element, enableSpellChecking) |
+{ |
+ internals.setContinuousSpellCheckingEnabled(enableSpellChecking); |
+ return !!internals.markerCountForNode(element.firstChild, "spelling"); |
+} |
-function test(destination, frame_doc) |
+var editableDiv = null; |
+var editableBodyInFrame = null; |
+ |
+function test(div, frameDocument) |
{ |
- if (!window.internals) |
- { |
- document.getElementById("console").innerHTML = "Automatic testing impossible. Test manually.\n"; |
+ editableDiv = div; |
+ editableBodyInFrame = frameDocument.body; |
+ |
+ // Type misspellings to trigger spellchecking on editable fields. |
+ editableDiv.focus(); |
+ document.execCommand("InsertText", false, "zz."); |
+ editableBodyInFrame.focus(); |
+ frameDocument.execCommand("InsertText", false, "zz."); |
+ |
+ if (!window.internals) { |
+ debug("Automatic testing impossible. Test manually."); |
return; |
} |
- internals.settings.setAsynchronousSpellCheckingEnabled(false); |
+ internals.settings.setAsynchronousSpellCheckingEnabled(true); |
internals.settings.setUnifiedTextCheckerEnabled(true); |
- destination_elm = destination; |
- destination_elm_in_frame = frame_doc.body; |
- destination_elm.focus(); |
- document.execCommand("InsertText", false, "zz."); |
- shouldBe('internals.markerCountForNode(destination_elm.childNodes[0], "spelling")', '1'); |
- destination_elm_in_frame.focus(); |
- frame_doc.execCommand("InsertText", false, "zz."); |
- shouldBe('internals.markerCountForNode(destination_elm_in_frame.childNodes[0], "spelling")', '1'); |
- internals.setContinuousSpellCheckingEnabled(false); |
- shouldBe('internals.markerCountForNode(destination_elm.childNodes[0], "spelling")', '0'); |
- shouldBe('internals.markerCountForNode(destination_elm_in_frame.childNodes[0], "spelling")', '0'); |
- destination_elm.focus(); |
- internals.setContinuousSpellCheckingEnabled(true); |
- shouldBe('internals.markerCountForNode(destination_elm.childNodes[0], "spelling")', '1'); |
- |
- finishJSTest(); |
+ shouldBecomeEqual('hasSpellingMarkerOnSetting(editableDiv, true)', 'true', function() { |
+ shouldBecomeEqual('hasSpellingMarkerOnSetting(editableBodyInFrame, true)', 'true', function() { |
+ // Turn off spellchecking, all misspellings should disappear. |
+ shouldBecomeEqual('hasSpellingMarkerOnSetting(editableDiv, false)', 'false', function() { |
+ shouldBecomeEqual('hasSpellingMarkerOnSetting(editableBodyInFrame, false)', 'false', function() { |
+ // Focus element and turn on spellchecking. |
+ // Only misspellings of the focused element should be restored. |
+ editableDiv.focus(); |
+ shouldBecomeEqual('hasSpellingMarkerOnSetting(editableDiv, true)', 'true', function() { |
+ shouldBecomeEqual('hasSpellingMarkerOnSetting(editableBodyInFrame, true)', 'false', finishJSTest); |
+ }); |
+ }); |
+ }); |
+ }); |
+ }); |
} |
</script> |