blob: d5a7c4bd9ad572ac754c5c6fa1d0ff8fee762643 [file] [log] [blame]
<!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>
test(() => {
if (!window.internals)
return;
var editable = document.getElementById('editable');
assert_equals(editable.childNodes.length, 1);
var text = editable.firstChild;
var 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');
var axEditable = accessibilityController.accessibleElementById('editable');
var axStaticText = axEditable.childAtIndex(0);
assert_equals(axStaticText.misspellingsCount, 2);
assert_equals(axStaticText.misspellingAtIndex(0), 'Test');
assert_equals(axStaticText.misspellingAtIndex(1), 'markers');
}, 'Spelling markers should be reported in content editables.');
test(() => {
if (!window.internals)
return;
document.designMode = 'on';
var paragraph = document.getElementById('paragraph');
assert_equals(paragraph.childNodes.length, 1);
var text = paragraph.firstChild;
var 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');
var axParagraph = accessibilityController.accessibleElementById('paragraph');
var axStaticText = axParagraph.childAtIndex(0);
assert_equals(axStaticText.misspellingsCount, 2);
assert_equals(axStaticText.misspellingAtIndex(0), 'Test');
assert_equals(axStaticText.misspellingAtIndex(1), 'markers');
document.designMode = 'off';
}, 'Spelling markers should be reported in static text when design mode is on.');
test(() => {
if (!window.internals)
return;
var input = document.getElementById('input');
input.focus();
var innerEditor = internals.innerEditorElement(input);
assert_equals(innerEditor.childNodes.length, 1);
var text = innerEditor.firstChild;
var range = document.createRange();
range.setStart(text, 5);
range.setEnd(text, 13);
internals.setMarker(document, range, 'spelling');
var axInput = accessibilityController.accessibleElementById('input');
// If input's shadow DOM changes, this logic might need to be modified.
assert_equals(axInput.childrenCount, 1);
var axDiv = axInput.childAtIndex(0);
assert_equals(axDiv.childrenCount, 1);
var axStaticText = axDiv.childAtIndex(0);
assert_equals(axStaticText.misspellingsCount, 1);
assert_equals(axStaticText.misspellingAtIndex(0), 'spelling');
}, 'Spelling markers should be reported in input text fields.');
test(() => {
if (!window.internals)
return;
var textarea = document.getElementById('textarea');
var innerEditor = internals.innerEditorElement(textarea);
assert_equals(innerEditor.childNodes.length, 1);
var text = innerEditor.firstChild;
var range = document.createRange();
range.setStart(text, 14);
range.setEnd(text, 21);
internals.setMarker(document, range, 'spelling');
var axTextarea = accessibilityController.accessibleElementById('textarea');
// If textarea's shadow DOM changes, this logic might need to be modified.
assert_equals(axTextarea.childrenCount, 1);
var axDiv = axTextarea.childAtIndex(0);
assert_equals(axDiv.childrenCount, 1);
var axStaticText = axDiv.childAtIndex(0);
assert_equals(axStaticText.misspellingsCount, 1);
assert_equals(axStaticText.misspellingAtIndex(0), 'markers');
}, 'Spelling markers should be reported in textareas.');
</script>