| <!DOCTYPE html> |
| <script src="../resources/testharness.js"></script> |
| <script src="../resources/testharnessreport.js"></script> |
| |
| <div id="editable" contentEditable="true" spellcheck="true">Test spelling markers</div> |
| |
| <p id="paragraph" tabIndex="0" spellcheck="true">Test spelling markers</p> |
| |
| <input id="input" spellcheck="true" value="Test spelling markers"> |
| |
| <textarea id="textarea" spellcheck="true">Test spelling markers</textarea> |
| |
| <script> |
| 'use strict'; |
| |
| test(() => { |
| if (!window.internals) |
| return; |
| |
| const editable = document.getElementById('editable'); |
| assert_equals(editable.childNodes.length, 1); |
| const text = editable.firstChild; |
| const range = document.createRange(); |
| range.setStart(text, 0); |
| range.setEnd(text, 4); |
| internals.setMarker(document, range, 'spelling'); |
| range.setStart(text, 14); |
| range.setEnd(text, 21); |
| internals.setMarker(document, range, 'spelling'); |
| |
| const axEditable = accessibilityController.accessibleElementById('editable'); |
| const axStaticText = axEditable.childAtIndex(0); |
| assert_equals(axStaticText.childrenCount, 1); |
| const axInlineTextBox = axStaticText.childAtIndex(0); |
| |
| assert_equals(axStaticText.misspellingsCount, 2); |
| assert_equals(axStaticText.misspellingAtIndex(0), 'Test'); |
| assert_equals(axStaticText.misspellingAtIndex(1), 'markers'); |
| assert_equals(axInlineTextBox.misspellingsCount, 2); |
| assert_equals(axInlineTextBox.misspellingAtIndex(0), 'Test'); |
| assert_equals(axInlineTextBox.misspellingAtIndex(1), 'markers'); |
| }, 'Spelling markers should be reported in content editables.'); |
| |
| test(() => { |
| if (!window.internals) |
| return; |
| |
| document.designMode = 'on'; |
| const paragraph = document.getElementById('paragraph'); |
| assert_equals(paragraph.childNodes.length, 1); |
| const text = paragraph.firstChild; |
| const range = document.createRange(); |
| range.setStart(text, 0); |
| range.setEnd(text, 4); |
| internals.setMarker(document, range, 'spelling'); |
| range.setStart(text, 14); |
| range.setEnd(text, 21); |
| internals.setMarker(document, range, 'spelling'); |
| |
| const axParagraph = accessibilityController.accessibleElementById('paragraph'); |
| const axStaticText = axParagraph.childAtIndex(0); |
| assert_equals(axStaticText.childrenCount, 1); |
| const axInlineTextBox = axStaticText.childAtIndex(0); |
| |
| assert_equals(axStaticText.misspellingsCount, 2); |
| assert_equals(axStaticText.misspellingAtIndex(0), 'Test'); |
| assert_equals(axStaticText.misspellingAtIndex(1), 'markers'); |
| assert_equals(axInlineTextBox.misspellingsCount, 2); |
| assert_equals(axInlineTextBox.misspellingAtIndex(0), 'Test'); |
| assert_equals(axInlineTextBox.misspellingAtIndex(1), 'markers'); |
| |
| document.designMode = 'off'; |
| }, 'Spelling markers should be reported in static text when design mode is on.'); |
| |
| test(() => { |
| if (!window.internals) |
| return; |
| |
| const input = document.getElementById('input'); |
| input.focus(); |
| const innerEditor = internals.innerEditorElement(input); |
| assert_equals(innerEditor.childNodes.length, 1); |
| const text = innerEditor.firstChild; |
| const range = document.createRange(); |
| range.setStart(text, 5); |
| range.setEnd(text, 13); |
| internals.setMarker(document, range, 'spelling'); |
| |
| const axInput = accessibilityController.accessibleElementById('input'); |
| // If input's shadow DOM changes, this logic might need to be modified. |
| assert_equals(axInput.childrenCount, 1); |
| const axDiv = axInput.childAtIndex(0); |
| assert_equals(axDiv.childrenCount, 1); |
| const axStaticText = axDiv.childAtIndex(0); |
| assert_equals(axStaticText.childrenCount, 1); |
| const axInlineTextBox = axStaticText.childAtIndex(0); |
| |
| assert_equals(axStaticText.misspellingsCount, 1); |
| assert_equals(axStaticText.misspellingAtIndex(0), 'spelling'); |
| assert_equals(axInlineTextBox.misspellingsCount, 1); |
| assert_equals(axInlineTextBox.misspellingAtIndex(0), 'spelling'); |
| }, 'Spelling markers should be reported in input text fields.'); |
| |
| test(() => { |
| if (!window.internals) |
| return; |
| |
| const textarea = document.getElementById('textarea'); |
| const innerEditor = internals.innerEditorElement(textarea); |
| assert_equals(innerEditor.childNodes.length, 1); |
| const text = innerEditor.firstChild; |
| const range = document.createRange(); |
| range.setStart(text, 14); |
| range.setEnd(text, 21); |
| internals.setMarker(document, range, 'spelling'); |
| |
| const axTextarea = accessibilityController.accessibleElementById('textarea'); |
| // If textarea's shadow DOM changes, this logic might need to be modified. |
| assert_equals(axTextarea.childrenCount, 1); |
| const axDiv = axTextarea.childAtIndex(0); |
| assert_equals(axDiv.childrenCount, 1); |
| const axStaticText = axDiv.childAtIndex(0); |
| assert_equals(axStaticText.childrenCount, 1); |
| const axInlineTextBox = axStaticText.childAtIndex(0); |
| |
| assert_equals(axStaticText.misspellingsCount, 1); |
| assert_equals(axStaticText.misspellingAtIndex(0), 'markers'); |
| assert_equals(axInlineTextBox.misspellingsCount, 1); |
| assert_equals(axInlineTextBox.misspellingAtIndex(0), 'markers'); |
| }, 'Spelling markers should be reported in textareas.'); |
| |
| </script> |