| <!DOCTYPE html> |
| <html> |
| <head> |
| <script src="../resources/js-test.js"></script> |
| </head> |
| <body> |
| |
| <textarea id="textarea" rows="3" cols="40"> |
| Line 1 |
| Line 2 |
| Line 3 |
| </textarea> |
| |
| <textarea id="textarea-empty" rows="5" cols="40"></textarea> |
| |
| <script> |
| description("This tests that caret position is reported correctly for textarea elements."); |
| |
| if (window.accessibilityController) { |
| |
| let textarea = document.getElementById('textarea'); |
| textarea.focus(); |
| window.textareaAccessible = |
| accessibilityController.accessibleElementById('textarea'); |
| window.emptyTextareaAccessible = |
| accessibilityController.accessibleElementById('textarea-empty'); |
| |
| for (let i = 0; i < 3; ++i) { |
| for (let j = 0; j < 7; ++j) { |
| let caretPosition = i * 7 + j; |
| textarea.selectionStart = caretPosition; |
| textarea.selectionEnd = caretPosition; |
| shouldBe("textareaAccessible", "textareaAccessible.selectionAnchorObject"); |
| shouldBeEqualToNumber("textareaAccessible.selectionAnchorOffset", |
| caretPosition); |
| shouldBe("textareaAccessible", "textareaAccessible.selectionFocusObject"); |
| shouldBeEqualToNumber("textareaAccessible.selectionFocusOffset", |
| caretPosition); |
| } |
| } |
| |
| let emptyTextarea = document.getElementById('textarea-empty'); |
| emptyTextarea.focus(); |
| // Each textarea remembers its own independent selection but |
| // textareas that are not focused don't expose their selection |
| // visually. |
| shouldBe("emptyTextareaAccessible", "textareaAccessible.selectionAnchorObject"); |
| shouldBeEqualToNumber("textareaAccessible.selectionAnchorOffset", 0); |
| shouldBe("emptyTextareaAccessible", "textareaAccessible.selectionFocusObject"); |
| shouldBeEqualToNumber("textareaAccessible.selectionFocusOffset", 0); |
| |
| textarea.focus(); |
| shouldBe("textareaAccessible", "textareaAccessible.selectionAnchorObject"); |
| shouldBeEqualToNumber("textareaAccessible.selectionAnchorOffset", 20); |
| shouldBe("textareaAccessible", "textareaAccessible.selectionFocusObject"); |
| shouldBeEqualToNumber("textareaAccessible.selectionFocusOffset", 20); |
| |
| emptyTextarea.focus(); |
| shouldBe("emptyTextareaAccessible", "emptyTextareaAccessible.selectionAnchorObject"); |
| shouldBeZero("emptyTextareaAccessible.selectionAnchorOffset"); |
| shouldBe("emptyTextareaAccessible", "emptyTextareaAccessible.selectionFocusObject"); |
| shouldBeZero("emptyTextareaAccessible.selectionFocusOffset"); |
| |
| // Setting the caret at an invalid offset should not move it. |
| emptyTextarea.setSelectionRange(1, 1); |
| shouldBeZero("emptyTextareaAccessible.selectionAnchorOffset"); |
| shouldBeZero("emptyTextareaAccessible.selectionFocusOffset"); |
| |
| } |
| </script> |
| |
| </body> |
| </html> |