| Index: LayoutTests/accessibility/contenteditable-caret-position.html
|
| diff --git a/LayoutTests/accessibility/contenteditable-caret-position.html b/LayoutTests/accessibility/contenteditable-caret-position.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..16531a58f8acbc3bcc8eee3d60ca03edbe94cfe3
|
| --- /dev/null
|
| +++ b/LayoutTests/accessibility/contenteditable-caret-position.html
|
| @@ -0,0 +1,90 @@
|
| +<!DOCTYPE html>
|
| +<html>
|
| + <head>
|
| + <script src="../resources/js-test.js"></script>
|
| + </head>
|
| + <body>
|
| +
|
| + <div id="contenteditable-textbox" role="textbox" contenteditable="true">
|
| + <div id="contenteditable-line1">Line 1</div>
|
| + <textarea id="contenteditable-line2" rows="1" cols="40">Line 2</textarea>
|
| + </div>
|
| +
|
| + <div id="contenteditable-div" contenteditable>
|
| + <p id="paragraph1">Line 1<br>Line 2</p>
|
| + <p id="paragraph2">Line 3</p>
|
| + </div>
|
| +
|
| + <p id="description"></p>
|
| + <div id="console"></div>
|
| +
|
| + <script>
|
| + description("This tests that caret position is reported correctly for contenteditable elements.");
|
| +
|
| + if (window.accessibilityController) {
|
| + var selection = window.getSelection();
|
| + var selectionRange = document.createRange();
|
| +
|
| + var textbox = document.getElementById("contenteditable-textbox");
|
| + textbox.focus();
|
| + var textboxAccessible =
|
| + accessibilityController.accessibleElementById(
|
| + 'contenteditable-textbox');
|
| +
|
| + shouldBeZero("textboxAccessible.selectionStart");
|
| + shouldBeZero("textboxAccessible.selectionEnd");
|
| +
|
| + var line1 = document.getElementById("contenteditable-line1");
|
| + selectionRange.setStart(line1.firstChild, 1);
|
| + selectionRange.setEnd(line1.firstChild, 1);
|
| + selection.removeAllRanges();
|
| + selection.addRange(selectionRange);
|
| + shouldBeEqualToNumber("textboxAccessible.selectionStart", 1);
|
| + shouldBeEqualToNumber("textboxAccessible.selectionEnd", 1);
|
| +
|
| + var line2 = document.getElementById("contenteditable-line2");
|
| + line2.focus();
|
| + // The selection should have been removed from the line1 div.
|
| + shouldBeZero("textboxAccessible.selectionStart");
|
| + shouldBeZero("textboxAccessible.selectionEnd");
|
| +
|
| + var line2Accessible = accessibilityController.focusedElement;
|
| + shouldBeZero("line2Accessible.selectionStart");
|
| + shouldBeZero("line2Accessible.selectionEnd");
|
| + line2.setSelectionRange(3, 3);
|
| + shouldBeEqualToNumber("line2Accessible.selectionStart", 3);
|
| + shouldBeEqualToNumber("line2Accessible.selectionEnd", 3);
|
| +
|
| + var contenteditable = document.getElementById('contenteditable-div');
|
| + contenteditable.focus();
|
| + var line1 = document.getElementById('paragraph1').firstChild;
|
| + var line2 = document.getElementById('paragraph1').lastChild;
|
| + var line3 = document.getElementById('paragraph2').firstChild;
|
| + var contenteditableLines = [ line1, line2, line3 ];
|
| + var contenteditableAccessible =
|
| + accessibilityController.accessibleElementById(
|
| + 'contenteditable-div');
|
| +
|
| + for (var lineNumber = 0; lineNumber < 3; ++lineNumber) {
|
| + // Place the caret at the end of each line.
|
| + var caretPosition = lineNumber * 7 + 6;
|
| + // Paragraphs should have an extra blank line between them.
|
| + if (lineNumber == 2)
|
| + caretPosition += 1;
|
| +
|
| + selectionRange.setStart(contenteditableLines[lineNumber], 6);
|
| + selectionRange.setEnd(contenteditableLines[lineNumber], 6);
|
| + selection.removeAllRanges();
|
| + selection.addRange(selectionRange);
|
| +
|
| + shouldBeEqualToNumber("contenteditableAccessible.selectionStart",
|
| + caretPosition);
|
| + shouldBeEqualToNumber("contenteditableAccessible.selectionEnd",
|
| + caretPosition);
|
| + }
|
| +
|
| + }
|
| + </script>
|
| +
|
| + </body>
|
| +</html>
|
|
|