Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(366)

Unified Diff: LayoutTests/accessibility/contenteditable-caret-position.html

Issue 1185343003: Implements the ability to get and set the caret position and the current selection from anywhere in… (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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);
}
}
« no previous file with comments | « no previous file | Source/modules/accessibility/AXInlineTextBox.h » ('j') | Source/modules/accessibility/AXLayoutObject.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698