Changeset 247671 in webkit
- Timestamp:
- Jul 20, 2019 3:04:10 PM (5 years ago)
- Location:
- trunk
- Files:
-
- 2 added
- 19 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r247666 r247671 1 2019-07-20 Andres Gonzalez <andresg_22@apple.com> 2 3 Add accessibilityInsertText for text insertion in edit fields. 4 https://bugs.webkit.org/show_bug.cgi?id=199973 5 6 Reviewed by Chris Fleizach. 7 8 Tests for inserting a newline in the middle of a text line and checking 9 that the insertion point and text ranges are correct. 10 * accessibility/insert-newline-expected.txt: Added. 11 * accessibility/insert-newline.html: Added. 12 * accessibility/ios-simulator/insert-newline-expected.txt: Added. 13 * accessibility/ios-simulator/insert-newline.html: Added. 14 1 15 2019-07-20 Saam Barati <sbarati@apple.com> 2 16 -
trunk/LayoutTests/platform/ios-simulator/TestExpectations
r247457 r247671 4 4 # 5 5 6 accessibility/insert-newline.html [ Pass ] 6 7 css3/font-variant-small-caps-synthesis-coverage.html [ ImageOnlyFailure ] 7 8 fast/frames/sandboxed-iframe-close-top-noclose.html [ Failure ] -
trunk/LayoutTests/platform/win/TestExpectations
r247509 r247671 1698 1698 1699 1699 webkit.org/b/184676 accessibility/ARIA-reflection.html [ Skip ] 1700 1701 # Not implemented on Win 1702 accessibility/insert-newline.html [ Skip ] 1700 1703 1701 1704 ################################################################################ -
trunk/Source/WebCore/ChangeLog
r247670 r247671 1 2019-07-20 Andres Gonzalez <andresg_22@apple.com> 2 3 Add accessibilityInsertText for text insertion in edit fields. 4 https://bugs.webkit.org/show_bug.cgi?id=199973 5 6 Reviewed by Chris Fleizach. 7 8 Tests: accessibility/insert-newline.html 9 accessibility/ios-simulator/insert-newline.html 10 11 Accessibility clients like VoiceOver and Voice Control were entering 12 text in text fields by replacing the entire content of the field 13 (SetValue) and then setting the insertion point to the appropriate 14 offset (SetSelectedTextRange). accessibilityInsertText gives a simpler 15 interface to clients to insert text at the insertion point location. 16 In addition, this provides a workaround for the issue encountered with 17 the previous method when inserting a linebreak. 18 19 * accessibility/AccessibilityObject.cpp: 20 (WebCore::AccessibilityObject::insertText): 21 * accessibility/AccessibilityObject.h: 22 * accessibility/ios/WebAccessibilityObjectWrapperIOS.mm: 23 (-[WebAccessibilityObjectWrapper accessibilityInsertText:]): 24 * accessibility/mac/WebAccessibilityObjectWrapperMac.mm: 25 (-[WebAccessibilityObjectWrapper accessibilityInsertText:]): 26 1 27 2019-07-20 Alexander Mikhaylenko <exalm7659@gmail.com> 2 28 -
trunk/Source/WebCore/accessibility/AccessibilityObject.cpp
r247367 r247671 2276 2276 2277 2277 return false; 2278 } 2279 2280 bool AccessibilityObject::insertText(const String& text) 2281 { 2282 if (!renderer() || !is<Element>(node())) 2283 return false; 2284 2285 auto& element = downcast<Element>(*renderer()->node()); 2286 2287 // Only try to insert text if the field is in editing mode. 2288 if (!element.shouldUseInputMethod()) 2289 return false; 2290 2291 // Use Editor::insertText to mimic typing into the field. 2292 auto& editor = renderer()->frame().editor(); 2293 return editor.insertText(text, nullptr); 2278 2294 } 2279 2295 -
trunk/Source/WebCore/accessibility/AccessibilityObject.h
r247367 r247671 715 715 virtual void setValue(const String&) { } 716 716 bool replaceTextInRange(const String&, const PlainTextRange&); 717 bool insertText(const String&); 717 718 718 719 virtual void setValue(float) { } -
trunk/Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm
r247367 r247671 2562 2562 } 2563 2563 2564 - (BOOL)accessibilityInsertText:(NSString *)text 2565 { 2566 if (![self _prepareAccessibilityCall]) 2567 return NO; 2568 2569 return m_object->insertText(text); 2570 } 2571 2564 2572 // A convenience method for getting the accessibility objects of a NSRange. Currently used only by DRT. 2565 2573 - (NSArray *)elementsForRange:(NSRange)range -
trunk/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm
r247519 r247671 3831 3831 } 3832 3832 3833 - (BOOL)accessibilityInsertText:(NSString *)text 3834 { 3835 if (![self updateObjectBackingStore]) 3836 return NO; 3837 3838 return m_object->insertText(text); 3839 } 3840 3833 3841 IGNORE_WARNINGS_BEGIN("deprecated-implementations") 3834 3842 - (void)accessibilitySetValue:(id)value forAttribute:(NSString*)attributeName -
trunk/Tools/ChangeLog
r247665 r247671 1 2019-07-20 Andres Gonzalez <andresg_22@apple.com> 2 3 Add accessibilityInsertText for text insertion in edit fields. 4 https://bugs.webkit.org/show_bug.cgi?id=199973 5 6 Reviewed by Chris Fleizach. 7 8 Glue code to run new LayoutTests. 9 * WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h: 10 * WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl: 11 * WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp: 12 (WTR::AccessibilityUIElement::insertText): 13 * WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.mm: 14 (WTR::AccessibilityUIElement::insertText): 15 * WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm: 16 (WTR::AccessibilityUIElement::insertText): 17 * WebKitTestRunner/InjectedBundle/win/AccessibilityUIElementWin.cpp: 18 (WTR::AccessibilityUIElement::insertText): 19 1 20 2019-07-19 Zhifei Fang <zhifei_fang@apple.com> 2 21 -
trunk/Tools/DumpRenderTree/AccessibilityUIElement.cpp
r247071 r247671 837 837 } 838 838 839 static JSValueRef insertTextCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) 840 { 841 if (!argumentCount) 842 return JSValueMakeUndefined(context); 843 844 auto text = adopt(JSValueToStringCopy(context, arguments[0], exception)); 845 return JSValueMakeBoolean(context, toAXElement(thisObject)->insertText(text.get())); 846 } 847 839 848 static JSValueRef attributedStringForTextMarkerRangeContainsAttributeCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) 840 849 { … … 1646 1655 1647 1656 bool AccessibilityUIElement::replaceTextInRange(JSStringRef, int, int) 1657 { 1658 return false; 1659 } 1660 1661 bool AccessibilityUIElement::insertText(JSStringRef) 1648 1662 { 1649 1663 return false; … … 1977 1991 { "resetSelectedTextMarkerRange", resetSelectedTextMarkerRangeCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, 1978 1992 { "replaceTextInRange", replaceTextInRangeCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, 1993 { "insertText", insertTextCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, 1979 1994 { "attributedStringForTextMarkerRangeContainsAttribute", attributedStringForTextMarkerRangeContainsAttributeCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, 1980 1995 { "indexForTextMarker", indexForTextMarkerCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, -
trunk/Tools/DumpRenderTree/AccessibilityUIElement.h
r247071 r247671 284 284 bool setSelectedVisibleTextRange(AccessibilityTextMarkerRange*); 285 285 bool replaceTextInRange(JSStringRef, int position, int length); 286 bool insertText(JSStringRef); 286 287 287 288 JSRetainPtr<JSStringRef> stringForTextMarkerRange(AccessibilityTextMarkerRange*); -
trunk/Tools/DumpRenderTree/ios/AccessibilityUIElementIOS.mm
r247071 r247671 76 76 - (NSArray *)elementsForRange:(NSRange)range; 77 77 - (NSString *)selectionRangeString; 78 - (BOOL)accessibilityInsertText:(NSString *)text; 78 79 - (CGPoint)accessibilityClickPoint; 79 80 - (void)accessibilityModifySelection:(WebCore::TextGranularity)granularity increase:(BOOL)increase; … … 485 486 } 486 487 488 bool AccessibilityUIElement::insertText(JSStringRef text) 489 { 490 return [m_element accessibilityInsertText:[NSString stringWithJSStringRef:text]]; 491 } 492 487 493 void AccessibilityUIElement::resetSelectedTextMarkerRange() 488 494 { -
trunk/Tools/DumpRenderTree/mac/AccessibilityUIElementMac.mm
r247071 r247671 72 72 @interface NSObject (WebKitAccessibilityAdditions) 73 73 - (BOOL)accessibilityReplaceRange:(NSRange)range withText:(NSString *)string; 74 - (BOOL)accessibilityInsertText:(NSString *)text; 74 75 - (NSArray *)accessibilityArrayAttributeValues:(NSString *)attribute index:(NSUInteger)index maxCount:(NSUInteger)maxCount; 75 76 - (NSUInteger)accessibilityIndexOfChild:(id)child; … … 1717 1718 } 1718 1719 1720 bool AccessibilityUIElement::insertText(JSStringRef text) 1721 { 1722 BEGIN_AX_OBJC_EXCEPTIONS 1723 return [m_element accessibilityInsertText:[NSString stringWithJSStringRef:text]]; 1724 END_AX_OBJC_EXCEPTIONS 1725 return false; 1726 } 1727 1719 1728 int AccessibilityUIElement::textMarkerRangeLength(AccessibilityTextMarkerRange* range) 1720 1729 { -
trunk/Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h
r247071 r247671 283 283 void resetSelectedTextMarkerRange(); 284 284 bool replaceTextInRange(JSStringRef, int position, int length); 285 bool insertText(JSStringRef); 285 286 RefPtr<AccessibilityTextMarker> startTextMarkerForTextMarkerRange(AccessibilityTextMarkerRange*); 286 287 RefPtr<AccessibilityTextMarker> endTextMarkerForTextMarkerRange(AccessibilityTextMarkerRange*); -
trunk/Tools/WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl
r247367 r247671 211 211 void resetSelectedTextMarkerRange(); 212 212 boolean replaceTextInRange(DOMString string, long position, long length); 213 boolean insertText(DOMString text); 213 214 AccessibilityTextMarker startTextMarkerForTextMarkerRange(AccessibilityTextMarkerRange range); 214 215 AccessibilityTextMarker endTextMarkerForTextMarkerRange(AccessibilityTextMarkerRange range); -
trunk/Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp
r247349 r247671 2333 2333 } 2334 2334 2335 bool AccessibilityUIElement::insertText(JSStringRef) 2336 { 2337 notImplemented(); 2338 return false; 2339 } 2340 2335 2341 JSRetainPtr<JSStringRef> AccessibilityUIElement::popupValue() const 2336 2342 { -
trunk/Tools/WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.mm
r247071 r247671 59 59 - (void)_accessibilitySetSelectedTextRange:(NSRange)range; 60 60 - (BOOL)accessibilityReplaceRange:(NSRange)range withText:(NSString *)string; 61 - (BOOL)accessibilityInsertText:(NSString *)text; 61 62 - (void)accessibilitySetPostedNotificationCallback:(AXPostedNotificationCallback)function withContext:(void*)context; 62 63 - (CGFloat)_accessibilityMinValue; … … 1164 1165 } 1165 1166 1167 bool AccessibilityUIElement::insertText(JSStringRef text) 1168 { 1169 return [m_element accessibilityInsertText:[NSString stringWithJSStringRef:text]]; 1170 } 1171 1166 1172 RefPtr<AccessibilityTextMarker> AccessibilityUIElement::textMarkerForPoint(int x, int y) 1167 1173 { -
trunk/Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm
r247071 r247671 76 76 @interface NSObject (WebKitAccessibilityAdditions) 77 77 - (BOOL)accessibilityReplaceRange:(NSRange)range withText:(NSString *)string; 78 - (BOOL)accessibilityInsertText:(NSString *)text; 78 79 - (NSArray *)accessibilityArrayAttributeValues:(NSString *)attribute index:(NSUInteger)index maxCount:(NSUInteger)maxCount; 79 80 - (NSUInteger)accessibilityIndexOfChild:(id)child; … … 1877 1878 return false; 1878 1879 } 1879 1880 1881 bool AccessibilityUIElement::insertText(JSStringRef text) 1882 { 1883 BEGIN_AX_OBJC_EXCEPTIONS 1884 return [m_element accessibilityInsertText:[NSString stringWithJSStringRef:text]]; 1885 END_AX_OBJC_EXCEPTIONS 1886 return false; 1887 } 1888 1880 1889 RefPtr<AccessibilityTextMarker> AccessibilityUIElement::startTextMarkerForBounds(int x, int y, int width, int height) 1881 1890 { -
trunk/Tools/WebKitTestRunner/InjectedBundle/win/AccessibilityUIElementWin.cpp
r247071 r247671 992 992 } 993 993 994 bool AccessibilityUIElement::insertText(JSStringRef) 995 { 996 notImplemented(); 997 return false; 998 } 999 994 1000 } // namespace WTF 995 1001
Note: See TracChangeset
for help on using the changeset viewer.