Index: LayoutTests/accessibility/contenteditable-caret-position.html |
diff --git a/LayoutTests/accessibility/contenteditable-caret-position.html b/LayoutTests/accessibility/contenteditable-caret-position.html |
index a780c263d4cfe29ee18865a55e85da94791646b6..e98b9a631e4b02d568d3b2984051c244e866ab3b 100644 |
--- a/LayoutTests/accessibility/contenteditable-caret-position.html |
+++ b/LayoutTests/accessibility/contenteditable-caret-position.html |
@@ -5,14 +5,18 @@ |
</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="main" role="main"> |
+ |
+ <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> |
- <div id="contenteditable-div" contenteditable> |
- <p id="paragraph1">Line 1<br>Line 2</p> |
- <p id="paragraph2">Line 3</p> |
</div> |
<script> |
@@ -21,12 +25,17 @@ |
if (window.accessibilityController) { |
var selection = window.getSelection(); |
var selectionRange = document.createRange(); |
+ var mainAccessible = accessibilityController.accessibleElementById("main"); |
+ var rootAccessible = accessibilityController.rootElement; |
+ |
+ shouldBeZero("mainAccessible.selectionStart"); |
+ shouldBeZero("mainAccessible.selectionEnd"); |
var textbox = document.getElementById("contenteditable-textbox"); |
textbox.focus(); |
var textboxAccessible = |
accessibilityController.accessibleElementById( |
- 'contenteditable-textbox'); |
+ "contenteditable-textbox"); |
shouldBeZero("textboxAccessible.selectionStart"); |
shouldBeZero("textboxAccessible.selectionEnd"); |
@@ -38,12 +47,18 @@ |
selection.addRange(selectionRange); |
shouldBeEqualToNumber("textboxAccessible.selectionStart", 1); |
shouldBeEqualToNumber("textboxAccessible.selectionEnd", 1); |
+ shouldBeEqualToNumber("mainAccessible.selectionStart", 1); |
+ shouldBeEqualToNumber("mainAccessible.selectionEnd", 1); |
+ shouldBeZero("mainAccessible.selectionStartLineNumber"); |
+ shouldBeZero("mainAccessible.selectionEndLineNumber"); |
var line2 = document.getElementById("contenteditable-line2"); |
line2.focus(); |
// The selection should have been removed from the line1 div. |
shouldBeZero("textboxAccessible.selectionStart"); |
shouldBeZero("textboxAccessible.selectionEnd"); |
+ shouldBeZero("mainAccessible.selectionStart"); |
+ shouldBeZero("mainAccessible.selectionEnd"); |
var line2Accessible = accessibilityController.focusedElement; |
shouldBeZero("line2Accessible.selectionStart"); |
@@ -52,15 +67,24 @@ |
shouldBeEqualToNumber("line2Accessible.selectionStart", 3); |
shouldBeEqualToNumber("line2Accessible.selectionEnd", 3); |
- var contenteditable = document.getElementById('contenteditable-div'); |
+ // mainAccessible should return zero here because selection is in a textarea. |
+ shouldBeZero("mainAccessible.selectionStart"); |
+ shouldBeZero("mainAccessible.selectionEnd"); |
+ shouldBeZero("mainAccessible.selectionStartLineNumber"); |
+ shouldBeZero("mainAccessible.selectionEndLineNumber"); |
+ |
+ 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; |
+ // The offset from the beginning of the main div to the first character of |
+ // contenteditable-div. The whole of the textarea is treated as a single embedded object. |
+ var mainOffset = 9; |
+ 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'); |
+ "contenteditable-div"); |
for (var lineNumber = 0; lineNumber < 3; ++lineNumber) { |
var lineOffset = lineNumber * 7; |
@@ -84,6 +108,15 @@ |
lineNumber); |
shouldBeEqualToNumber("contenteditableAccessible.selectionEndLineNumber", |
lineNumber); |
+ |
+ shouldBeEqualToNumber("mainAccessible.selectionStart", |
+ mainOffset + caretPosition); |
+ shouldBeEqualToNumber("mainAccessible.selectionEnd", |
+ mainOffset + caretPosition); |
+ shouldBeEqualToNumber("mainAccessible.selectionStartLineNumber", |
+ lineNumber); |
+ shouldBeEqualToNumber("mainAccessible.selectionEndLineNumber", |
+ lineNumber); |
} |
} |