haikuwebkit/LayoutTests/accessibility/insert-newline.html

40 lines
1.1 KiB
HTML
Raw Permalink Normal View History

Add accessibilityInsertText for text insertion in edit fields. https://bugs.webkit.org/show_bug.cgi?id=199973 Patch by Andres Gonzalez <andresg_22@apple.com> on 2019-07-20 Reviewed by Chris Fleizach. Source/WebCore: Tests: accessibility/insert-newline.html accessibility/ios-simulator/insert-newline.html Accessibility clients like VoiceOver and Voice Control were entering text in text fields by replacing the entire content of the field (SetValue) and then setting the insertion point to the appropriate offset (SetSelectedTextRange). accessibilityInsertText gives a simpler interface to clients to insert text at the insertion point location. In addition, this provides a workaround for the issue encountered with the previous method when inserting a linebreak. * accessibility/AccessibilityObject.cpp: (WebCore::AccessibilityObject::insertText): * accessibility/AccessibilityObject.h: * accessibility/ios/WebAccessibilityObjectWrapperIOS.mm: (-[WebAccessibilityObjectWrapper accessibilityInsertText:]): * accessibility/mac/WebAccessibilityObjectWrapperMac.mm: (-[WebAccessibilityObjectWrapper accessibilityInsertText:]): Tools: Glue code to run new LayoutTests. * WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h: * WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl: * WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp: (WTR::AccessibilityUIElement::insertText): * WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.mm: (WTR::AccessibilityUIElement::insertText): * WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm: (WTR::AccessibilityUIElement::insertText): * WebKitTestRunner/InjectedBundle/win/AccessibilityUIElementWin.cpp: (WTR::AccessibilityUIElement::insertText): LayoutTests: Tests for inserting a newline in the middle of a text line and checking that the insertion point and text ranges are correct. * accessibility/insert-newline-expected.txt: Added. * accessibility/insert-newline.html: Added. * accessibility/ios-simulator/insert-newline-expected.txt: Added. * accessibility/ios-simulator/insert-newline.html: Added. Canonical link: https://commits.webkit.org/213833@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@247671 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-07-20 22:04:10 +00:00
<html>
<head>
<script src="../resources/js-test-pre.js"></script>
</head>
<body>
<div id="content" contenteditable tabindex="0">helloworld</div>
<div id="console"></div>
<script>
if (window.accessibilityController) {
window.jsTestIsAsync = true;
var content = document.getElementById("content");
content.focus();
var text = accessibilityController.focusedElement;
text.setSelectedTextRange(5, 0);
shouldBecomeEqual("text.selectedTextRange", "'{5, 0}'", function() {
text.insertText("\n");
var t = text.stringForRange(0, 11);
t = t.replace(/(?:\r\n|\r|\n)/g, '[newline]');
debug("There must be only one [newline] between hello and world: " + t);
shouldBecomeEqual("text.selectedTextRange", "'{6, 0}'", function() {
var t = text.stringForRange(6, 5);
t = t.replace(/(?:\r\n|\r|\n)/g, '[newline]');
debug("The text after the newline should be world: " + t);
finishJSTest();
});
});
}
</script>
<script src="../resources/js-test-post.js"></script>
</body>
</html>