Title: [248169] trunk
Revision
248169
Author
[email protected]
Date
2019-08-02 12:10:02 -0700 (Fri, 02 Aug 2019)

Log Message

Add accessibility object method to determine whether an element is inside a table cell. Needed for iOS accessibility client.
https://bugs.webkit.org/show_bug.cgi?id=200394
<rdar://problem/52914964>

Patch by Andres Gonzalez <[email protected]> on 2019-08-02
Reviewed by Chris Fleizach.

Source/WebCore:

Test: accessibility/ios-simulator/element-in-table-cell.html

Added _accessibilityIsInTableCell needed for iOS accessibility client.
* accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
(-[WebAccessibilityObjectWrapper _accessibilityIsInTableCell]):

Tools:

Glue code to exercise new method [WebAccessibilityObjectWrapper _accessibilityIsInTableCell].

* WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp:
(WTR::AccessibilityUIElement::isInTableCell const):
* WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:
* WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl:
* WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.mm:
(WTR::AccessibilityUIElement::isInTableCell const):

LayoutTests:

New test that exercises [WebAccessibilityObjectWrapper _accessibilityIsInTableCell].

* accessibility/ios-simulator/element-in-table-cell-expected.txt: Added.
* accessibility/ios-simulator/element-in-table-cell.html: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (248168 => 248169)


--- trunk/LayoutTests/ChangeLog	2019-08-02 19:03:35 UTC (rev 248168)
+++ trunk/LayoutTests/ChangeLog	2019-08-02 19:10:02 UTC (rev 248169)
@@ -1,3 +1,16 @@
+2019-08-02  Andres Gonzalez  <[email protected]>
+
+        Add accessibility object method to determine whether an element is inside a table cell. Needed for iOS accessibility client.
+        https://bugs.webkit.org/show_bug.cgi?id=200394
+        <rdar://problem/52914964>
+
+        Reviewed by Chris Fleizach.
+
+        New test that exercises [WebAccessibilityObjectWrapper _accessibilityIsInTableCell].
+
+        * accessibility/ios-simulator/element-in-table-cell-expected.txt: Added.
+        * accessibility/ios-simulator/element-in-table-cell.html: Added.
+
 2019-08-02  Chris Dumez  <[email protected]>
 
         DOMWindow properties may get GC'd before their Window object

Added: trunk/LayoutTests/accessibility/ios-simulator/element-in-table-cell-expected.txt (0 => 248169)


--- trunk/LayoutTests/accessibility/ios-simulator/element-in-table-cell-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/accessibility/ios-simulator/element-in-table-cell-expected.txt	2019-08-02 19:10:02 UTC (rev 248169)
@@ -0,0 +1,16 @@
+apple	orange
+3	5
+2 4
+This tests the _accessibilityIsInTableCell method, used by VO to describe the element.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS accessibilityController.accessibleElementById('button1').isInTableCell() is true
+PASS accessibilityController.accessibleElementById('button2').isInTableCell() is false
+PASS accessibilityController.accessibleElementById('link1').isInTableCell() is true
+PASS accessibilityController.accessibleElementById('link2').isInTableCell() is false
+PASS successfullyParsed is true
+
+TEST COMPLETE
+

Added: trunk/LayoutTests/accessibility/ios-simulator/element-in-table-cell.html (0 => 248169)


--- trunk/LayoutTests/accessibility/ios-simulator/element-in-table-cell.html	                        (rev 0)
+++ trunk/LayoutTests/accessibility/ios-simulator/element-in-table-cell.html	2019-08-02 19:10:02 UTC (rev 248169)
@@ -0,0 +1,42 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src=""
+</head>
+<body id="body">
+
+<table>
+    <thead>
+        <tr>
+            <th scope="col">apple</th>
+            <th scope="col">orange</th>
+        </TR>
+    </thead>
+    <tbody>
+        <tr>
+            <td><button id="button1">3</button></td>
+            <td><a href="" id="link1">5</a></td>
+        </TR>
+    </TBODY>
+</table>
+
+<button id="button2">2</button>
+<a href="" id="link2">4</a>
+
+<p id="description"></p>
+<div id="console"></div>
+
+<script>
+    description("This tests the _accessibilityIsInTableCell method, used by VO to describe the element.");
+
+    if (window.accessibilityController) {
+        shouldBeTrue("accessibilityController.accessibleElementById('button1').isInTableCell()")
+        shouldBeFalse("accessibilityController.accessibleElementById('button2').isInTableCell()")
+        shouldBeTrue("accessibilityController.accessibleElementById('link1').isInTableCell()")
+        shouldBeFalse("accessibilityController.accessibleElementById('link2').isInTableCell()")
+    }
+</script>
+
+<script src=""
+</body>
+</html>

Modified: trunk/Source/WebCore/ChangeLog (248168 => 248169)


--- trunk/Source/WebCore/ChangeLog	2019-08-02 19:03:35 UTC (rev 248168)
+++ trunk/Source/WebCore/ChangeLog	2019-08-02 19:10:02 UTC (rev 248169)
@@ -1,3 +1,17 @@
+2019-08-02  Andres Gonzalez  <[email protected]>
+
+        Add accessibility object method to determine whether an element is inside a table cell. Needed for iOS accessibility client.
+        https://bugs.webkit.org/show_bug.cgi?id=200394
+        <rdar://problem/52914964>
+
+        Reviewed by Chris Fleizach.
+
+        Test: accessibility/ios-simulator/element-in-table-cell.html
+
+        Added _accessibilityIsInTableCell needed for iOS accessibility client.
+        * accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
+        (-[WebAccessibilityObjectWrapper _accessibilityIsInTableCell]):
+
 2019-08-02  Eric Carlson  <[email protected]>
 
         [macOS, iOS] webaudio/silent-audio-interrupted-in-background.html sometimes crashes

Modified: trunk/Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm (248168 => 248169)


--- trunk/Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm	2019-08-02 19:03:35 UTC (rev 248168)
+++ trunk/Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm	2019-08-02 19:10:02 UTC (rev 248169)
@@ -599,6 +599,13 @@
     return nil;
 }
 
+- (BOOL)_accessibilityIsInTableCell
+{
+    return AccessibilityObject::matchedParent(*m_object, false, [] (const AccessibilityObject& object) {
+        return object.roleValue() == AccessibilityRole::Cell;
+    });
+}
+
 - (AccessibilityObjectWrapper*)_accessibilityFieldsetAncestor
 {
     if (const AccessibilityObject* parent = AccessibilityObject::matchedParent(*m_object, false, [] (const AccessibilityObject& object) {

Modified: trunk/Tools/ChangeLog (248168 => 248169)


--- trunk/Tools/ChangeLog	2019-08-02 19:03:35 UTC (rev 248168)
+++ trunk/Tools/ChangeLog	2019-08-02 19:10:02 UTC (rev 248169)
@@ -1,3 +1,20 @@
+2019-08-02  Andres Gonzalez  <[email protected]>
+
+        Add accessibility object method to determine whether an element is inside a table cell. Needed for iOS accessibility client.
+        https://bugs.webkit.org/show_bug.cgi?id=200394
+        <rdar://problem/52914964>
+
+        Reviewed by Chris Fleizach.
+
+        Glue code to exercise new method [WebAccessibilityObjectWrapper _accessibilityIsInTableCell].
+
+        * WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp:
+        (WTR::AccessibilityUIElement::isInTableCell const):
+        * WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:
+        * WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl:
+        * WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.mm:
+        (WTR::AccessibilityUIElement::isInTableCell const):
+
 2019-08-02  Zhifei Fang  <[email protected]>
 
         [results.webkit.org Timeline] Using transform matrix to calculate the tag rotation position

Modified: trunk/Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp (248168 => 248169)


--- trunk/Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp	2019-08-02 19:03:35 UTC (rev 248168)
+++ trunk/Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp	2019-08-02 19:10:02 UTC (rev 248169)
@@ -79,6 +79,7 @@
 RefPtr<AccessibilityTextMarkerRange> AccessibilityUIElement::textMarkerRangeMatchesTextNearMarkers(JSStringRef, AccessibilityTextMarker*, AccessibilityTextMarker*) { return nullptr; }
 bool AccessibilityUIElement::dismiss() { return false; }
 JSRetainPtr<JSStringRef> AccessibilityUIElement::attributedStringForElement() { return nullptr; }
+bool AccessibilityUIElement::isInTableCell() const { return false; }
 #endif
     
 // Unsupported methods on various platforms. As they're implemented on other platforms this list should be modified.

Modified: trunk/Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h (248168 => 248169)


--- trunk/Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h	2019-08-02 19:03:35 UTC (rev 248168)
+++ trunk/Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h	2019-08-02 19:10:02 UTC (rev 248169)
@@ -189,6 +189,7 @@
     JSRetainPtr<JSStringRef> attributesOfRows();
     JSRetainPtr<JSStringRef> attributesOfVisibleCells();
     JSRetainPtr<JSStringRef> attributesOfHeader();
+    bool isInTableCell() const;
     int indexInTable();
     JSRetainPtr<JSStringRef> rowIndexRange();
     JSRetainPtr<JSStringRef> columnIndexRange();

Modified: trunk/Tools/WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl (248168 => 248169)


--- trunk/Tools/WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl	2019-08-02 19:03:35 UTC (rev 248168)
+++ trunk/Tools/WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl	2019-08-02 19:10:02 UTC (rev 248169)
@@ -150,6 +150,7 @@
     AccessibilityUIElement disclosedByRow();
     AccessibilityUIElement disclosedRowAtIndex(unsigned long index);
     AccessibilityUIElement rowAtIndex(unsigned long index);
+    boolean isInTableCell();
     long indexInTable();
     DOMString rowIndexRange();
     DOMString columnIndexRange();

Modified: trunk/Tools/WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.mm (248168 => 248169)


--- trunk/Tools/WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.mm	2019-08-02 19:03:35 UTC (rev 248168)
+++ trunk/Tools/WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.mm	2019-08-02 19:10:02 UTC (rev 248169)
@@ -103,6 +103,7 @@
 - (id)lineStartMarkerForMarker:(id)marker;
 - (id)lineEndMarkerForMarker:(id)marker;
 - (NSArray *)textMarkerRangeFromMarkers:(NSArray *)markers withText:(NSString *)text;
+- (BOOL)_accessibilityIsInTableCell;
 @end
 
 @interface NSObject (WebAccessibilityObjectWrapperPrivate)
@@ -794,6 +795,11 @@
     return [m_element accessibilityColumnCount];
 }
 
+bool AccessibilityUIElement::isInTableCell() const
+{
+    return [m_element _accessibilityIsInTableCell];
+}
+
 int AccessibilityUIElement::indexInTable()
 {
     return -1;
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to