| <html> |
| <head> |
| <script src="../resources/js-test-pre.js"></script> |
| </head> |
| <body> |
| |
| <textarea name="area1" id="area1" rows="5" cols="40"> |
| line 1 |
| line 2 |
| line 3 |
| </textarea> |
| |
| <textarea name="area2" id="area2" rows="5" cols="40"></textarea> |
| |
| <div id="contenteditable-div" role="textbox" contenteditable="true" tabindex="0"> |
| <div id="contenteditable-line1">Line1</div> |
| <textarea id="contenteditable-line2" rows="1" cols="40">Line2</textarea> |
| <div id="contenteditable-line3">Line3</div> |
| </div> |
| |
| <p id="description"></p> |
| <div id="console"></div> |
| |
| <script> |
| description("This tests that lineNumberForPosition is reported correctly for textarea and contenteditable elements."); |
| |
| if (window.accessibilityController) { |
| var area1 = document.getElementById("area1"); |
| area1.focus(); |
| var area1AXUIElement = accessibilityController.focusedElement; |
| var lineNumber = -2; |
| |
| // Set the insertion point to the beginning of each line in area1 and |
| // check that accessibility returns the correct line number. |
| for (var currentLine = 0; currentLine < 3; currentLine++) { |
| area1.selectionStart = currentLine * 7; |
| area1.selectionEnd = currentLine * 7; |
| shouldBe("area1AXUIElement.insertionPointLineNumber", "currentLine"); |
| } |
| |
| // area2 is an empty textarea so the insertion point line number should be 0. |
| var area2 = document.getElementById("area2"); |
| area2.focus(); |
| var area2AXUIElement = accessibilityController.focusedElement; |
| shouldBe("area2AXUIElement.insertionPointLineNumber", "0"); |
| |
| // Set focus to the contenteditable-div element and set the insertion |
| // point in each of the children lines. |
| var contenteditableDiv = document.getElementById("contenteditable-div"); |
| contenteditableDiv.focus(); |
| var contenteditableAXUIElement = accessibilityController.focusedElement; |
| |
| var contenteditableLine1 = document.getElementById("contenteditable-line1"); |
| window.getSelection().setBaseAndExtent(contenteditableLine1, 1, contenteditableLine1, 1); |
| shouldBe("contenteditableAXUIElement.insertionPointLineNumber", "0"); |
| |
| var contenteditableLine2 = document.getElementById("contenteditable-line2"); |
| window.getSelection().setBaseAndExtent(contenteditableLine2, 1, contenteditableLine2, 1); |
| shouldBe("contenteditableAXUIElement.insertionPointLineNumber", "1"); |
| |
| var contenteditableLine3 = document.getElementById("contenteditable-line3"); |
| window.getSelection().setBaseAndExtent(contenteditableLine3, 1, contenteditableLine3, 1); |
| shouldBe("contenteditableAXUIElement.insertionPointLineNumber", "2"); |
| |
| // Set focus to line 2 and get the insertion point line number relative |
| // to the nested textarea, which should be 0. |
| contenteditableLine2.focus(); |
| var textareaAXUIElement = accessibilityController.focusedElement; |
| shouldBe("textareaAXUIElement.insertionPointLineNumber", "0"); |
| } |
| </script> |
| <script src="../resources/js-test-post.js"></script> |
| </body> |
| </html> |