| 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>
|
|
|