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

Unified Diff: LayoutTests/accessibility/inline-text-textarea.html

Issue 23983002: Expose InlineTextBoxes in the accessibility tree. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Rebase Created 7 years, 2 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/inline-text-textarea.html
diff --git a/LayoutTests/accessibility/inline-text-textarea.html b/LayoutTests/accessibility/inline-text-textarea.html
new file mode 100644
index 0000000000000000000000000000000000000000..df0edc536543601646a51324d6868e7018dcbf67
--- /dev/null
+++ b/LayoutTests/accessibility/inline-text-textarea.html
@@ -0,0 +1,54 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src="../fast/js/resources/js-test-pre.js"></script>
+</head>
+<body>
+
+<textarea id="textarea" cols=30 rows=20>This textarea contains several lines of text. It demonstrates
+how updating a single InlineTextBox is a lot more efficient than updating the whole TextArea.</textarea>
+
+<p id="description"></p>
+
+<div id="console"></div>
+
+<script>
+
+ description("Demonstrates that when typing in a textarea, not all of the InlineTextBoxes need to be updated for every character pressed.");
+
+ if (window.accessibilityController) {
+
+ function findAllDescendantsWithRole(axObject, role) {
+ if (axObject.role == role)
+ return [axObject];
+ var result = [];
+ for (var i = 0; i < axObject.childrenCount; i++)
+ result = result.concat(findAllDescendantsWithRole(axObject.childAtIndex(i), role));
+ return result;
+ }
+
+ var axTextarea = accessibilityController.accessibleElementById('textarea');
+ var inlineTextBoxesBefore = findAllDescendantsWithRole(axTextarea, 'AXRole: AXInlineTextBox');
+ var firstInlineTextBoxBefore = inlineTextBoxesBefore[0];
+ var lastInlineTextBoxBefore = inlineTextBoxesBefore[inlineTextBoxesBefore.length - 1];
+
+ document.getElementById("textarea").focus();
+ document.getElementById("textarea").setSelectionRange(45, 45);
+
+ // Insert a character in the first paragraph.
+ document.execCommand("InsertText", false, 'x');
+
+ // The inline text boxes in the first paragraph change, but the
+ // inline text boxes in the last paragraph are reused.
+ var inlineTextBoxesAfter = findAllDescendantsWithRole(axTextarea, 'AXRole: AXInlineTextBox');
+ var firstInlineTextBoxAfter = inlineTextBoxesAfter[0];
+ var lastInlineTextBoxAfter = inlineTextBoxesAfter[inlineTextBoxesAfter.length - 1];
+
+ shouldBe("firstInlineTextBoxBefore.isEqual(firstInlineTextBoxAfter)", "false");
+ shouldBe("lastInlineTextBoxBefore.isEqual(lastInlineTextBoxAfter)", "true");
+ }
+</script>
+
+<script src="../fast/js/resources/js-test-post.js"></script>
+</body>
+</html>

Powered by Google App Engine
This is Rietveld 408576698