| <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> |
| <html> |
| <head> |
| <script src="../resources/js-test.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> |
| |
| </body> |
| </html> |