https://bugs.webkit.org/show_bug.cgi?id=150366
Source/WebCore:
Add support to expose table row/column count and cell indexes on iOS.
Reviewed by Chris Fleizach.
Test: accessibility/aria-table-attributes.html
* accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
(-[WebAccessibilityObjectWrapper tableParent]):
(-[WebAccessibilityObjectWrapper accessibilityElementForRow:andColumn:]):
(-[WebAccessibilityObjectWrapper accessibilityRowCount]):
(-[WebAccessibilityObjectWrapper accessibilityColumnCount]):
(-[WebAccessibilityObjectWrapper accessibilityARIARowCount]):
(-[WebAccessibilityObjectWrapper accessibilityARIAColumnCount]):
(-[WebAccessibilityObjectWrapper accessibilityARIARowIndex]):
(-[WebAccessibilityObjectWrapper accessibilityARIAColumnIndex]):
(-[WebAccessibilityObjectWrapper accessibilityRowRange]):
Tools:
Reviewed by Chris Fleizach.
* DumpRenderTree/ios/AccessibilityUIElementIOS.mm:
(AccessibilityUIElement::rowCount):
(AccessibilityUIElement::columnCount):
(AccessibilityUIElement::indexInTable):
(AccessibilityUIElement::numberAttributeValue):
* WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.mm:
(WTR::AccessibilityUIElement::numberAttributeValue):
(WTR::AccessibilityUIElement::rowCount):
(WTR::AccessibilityUIElement::columnCount):
(WTR::AccessibilityUIElement::indexInTable):
LayoutTests:
Reviewed by Chris Fleizach.
* accessibility/aria-table-attributes-expected.txt: Added.
* accessibility/aria-table-attributes.html: Added.
* accessibility/mac/aria-table-attributes-expected.txt: Removed.
* accessibility/mac/aria-table-attributes.html: Removed.
* platform/gtk/TestExpectations:
* platform/ios-simulator/TestExpectations:
* platform/win/TestExpectations:
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@191391
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
+2015-10-21 Nan Wang <n_wang@apple.com>
+
+ AX: Expose table size and cell indexes on iOS
+ https://bugs.webkit.org/show_bug.cgi?id=150366
+
+ Reviewed by Chris Fleizach.
+
+ * accessibility/aria-table-attributes-expected.txt: Added.
+ * accessibility/aria-table-attributes.html: Added.
+ * accessibility/mac/aria-table-attributes-expected.txt: Removed.
+ * accessibility/mac/aria-table-attributes.html: Removed.
+ * platform/gtk/TestExpectations:
+ * platform/ios-simulator/TestExpectations:
+ * platform/win/TestExpectations:
+
2015-10-21 Chris Dumez <cdumez@apple.com>
HTMLIFrameElement.sandbox should be a DOMSettableTokenList
PASS grid.numberAttributeValue('AXARIAColumnCount') is 16
PASS grid.numberAttributeValue('AXARIARowCount') is 30
+PASS grid.rowCount is 4
+PASS grid.columnCount is 4
PASS cell1.numberAttributeValue('AXARIAColumnIndex') is 2
PASS cell1.numberAttributeValue('AXARIARowIndex') is 7
PASS cell2.numberAttributeValue('AXARIAColumnIndex') is 4
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
-<script src="../../resources/js-test-pre.js"></script>
+<script src="../resources/js-test-pre.js"></script>
</head>
<body id="body">
// aria-colcount and aria-rowcount
shouldBe("grid.numberAttributeValue('AXARIAColumnCount')", "16");
shouldBe("grid.numberAttributeValue('AXARIARowCount')", "30");
+ shouldBe("grid.rowCount", "4");
+ shouldBe("grid.columnCount", "4");
// aria-colindex and aria-rowindex
shouldBe("cell1.numberAttributeValue('AXARIAColumnIndex')", "2");
</script>
-<script src="../../resources/js-test-post.js"></script>
+<script src="../resources/js-test-post.js"></script>
</body>
</html>
webkit.org/b/149016 accessibility/aria-current.html [ Skip ]
+# ARIA 1.1 table related attributes are not supported
+webkit.org/b/148967 accessibility/aria-table-attributes.html [ Skip ]
+
#////////////////////////////////////////////////////////////////////////////////////////
# End of Expected failures
#////////////////////////////////////////////////////////////////////////////////////////
# Enable "aria-current" test for iOS
webkit.org/b/149297 accessibility/aria-current.html [ Pass ]
+# Enable "aria-table-attributes" test for iOS
+webkit.org/b/150366 accessibility/aria-table-attributes.html [ Pass ]
+
# More flaky tests (Sept 18, 2015)
fast/forms/select-element-focus-ring.html [ Failure Pass ]
# TODO aria-current is not supported
webkit.org/b/149018 accessibility/aria-current.html [ Skip ]
+# TODO ARIA 1.1 table related attributes are not supported
+webkit.org/b/148967 accessibility/aria-table-attributes.html [ Skip ]
+
# TODO webkit-font-smoothing is not supported.
webkit.org/b/149245 imported/w3c/css/css-multicol-1/multicol-basic-001.html [ Skip ]
webkit.org/b/149245 imported/w3c/css/css-multicol-1/multicol-basic-002.html [ Skip ]
+2015-10-21 Nan Wang <n_wang@apple.com>
+
+ AX: Expose table size and cell indexes on iOS
+ https://bugs.webkit.org/show_bug.cgi?id=150366
+
+ Add support to expose table row/column count and cell indexes on iOS.
+
+ Reviewed by Chris Fleizach.
+
+ Test: accessibility/aria-table-attributes.html
+
+ * accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
+ (-[WebAccessibilityObjectWrapper tableParent]):
+ (-[WebAccessibilityObjectWrapper accessibilityElementForRow:andColumn:]):
+ (-[WebAccessibilityObjectWrapper accessibilityRowCount]):
+ (-[WebAccessibilityObjectWrapper accessibilityColumnCount]):
+ (-[WebAccessibilityObjectWrapper accessibilityARIARowCount]):
+ (-[WebAccessibilityObjectWrapper accessibilityARIAColumnCount]):
+ (-[WebAccessibilityObjectWrapper accessibilityARIARowIndex]):
+ (-[WebAccessibilityObjectWrapper accessibilityARIAColumnIndex]):
+ (-[WebAccessibilityObjectWrapper accessibilityRowRange]):
+
2015-10-21 Chris Dumez <cdumez@apple.com>
HTMLIFrameElement.sandbox should be a DOMSettableTokenList
{
// Find if the parent table for the table cell.
AccessibilityObject* parentTable = nullptr;
- for (parentTable = m_object; parentTable && !parentTable->isDataTable(); parentTable = parentTable->parentObject())
+ for (parentTable = m_object; parentTable && !(is<AccessibilityTable>(*parentTable) && downcast<AccessibilityTable>(*parentTable).isExposableThroughAccessibility()); parentTable = parentTable->parentObject())
{ }
if (!parentTable)
return cell->wrapper();
}
+- (NSUInteger)accessibilityRowCount
+{
+ if (![self _prepareAccessibilityCall])
+ return 0;
+ AccessibilityTable *table = [self tableParent];
+ if (!table)
+ return 0;
+
+ return table->rowCount();
+}
+
+- (NSUInteger)accessibilityColumnCount
+{
+ if (![self _prepareAccessibilityCall])
+ return 0;
+ AccessibilityTable *table = [self tableParent];
+ if (!table)
+ return 0;
+
+ return table->columnCount();
+}
+
+- (NSUInteger)accessibilityARIARowCount
+{
+ if (![self _prepareAccessibilityCall])
+ return 0;
+ AccessibilityTable *table = [self tableParent];
+ if (!table)
+ return 0;
+
+ NSInteger rowCount = table->ariaRowCount();
+ return rowCount > 0 ? rowCount : 0;
+}
+
+- (NSUInteger)accessibilityARIAColumnCount
+{
+ if (![self _prepareAccessibilityCall])
+ return 0;
+ AccessibilityTable *table = [self tableParent];
+ if (!table)
+ return 0;
+
+ NSInteger colCount = table->ariaColumnCount();
+ return colCount > 0 ? colCount : 0;
+}
+
+- (NSUInteger)accessibilityARIARowIndex
+{
+ if (![self _prepareAccessibilityCall])
+ return NSNotFound;
+ AccessibilityTableCell* tableCell = [self tableCellParent];
+ if (!tableCell)
+ return NSNotFound;
+
+ NSInteger rowIndex = tableCell->ariaRowIndex();
+ return rowIndex > 0 ? rowIndex : NSNotFound;
+}
+
+- (NSUInteger)accessibilityARIAColumnIndex
+{
+ if (![self _prepareAccessibilityCall])
+ return NSNotFound;
+ AccessibilityTableCell* tableCell = [self tableCellParent];
+ if (!tableCell)
+ return NSNotFound;
+
+ NSInteger columnIndex = tableCell->ariaColumnIndex();
+ return columnIndex > 0 ? columnIndex : NSNotFound;
+}
+
- (NSRange)accessibilityRowRange
{
if (![self _prepareAccessibilityCall])
+2015-10-21 Nan Wang <n_wang@apple.com>
+
+ AX: Expose table size and cell indexes on iOS
+ https://bugs.webkit.org/show_bug.cgi?id=150366
+
+ Reviewed by Chris Fleizach.
+
+ * DumpRenderTree/ios/AccessibilityUIElementIOS.mm:
+ (AccessibilityUIElement::rowCount):
+ (AccessibilityUIElement::columnCount):
+ (AccessibilityUIElement::indexInTable):
+ (AccessibilityUIElement::numberAttributeValue):
+ * WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.mm:
+ (WTR::AccessibilityUIElement::numberAttributeValue):
+ (WTR::AccessibilityUIElement::rowCount):
+ (WTR::AccessibilityUIElement::columnCount):
+ (WTR::AccessibilityUIElement::indexInTable):
+
2015-10-21 Youenn Fablet <youenn.fablet@crf.canon.fr>
W3C test importer should not import reference files as regular tests
- (void)_accessibilityActivate;
- (UIAccessibilityTraits)_axSelectedTrait;
- (NSString *)accessibilityARIACurrentStatus;
+- (NSUInteger)accessibilityRowCount;
+- (NSUInteger)accessibilityColumnCount;
+- (NSUInteger)accessibilityARIARowCount;
+- (NSUInteger)accessibilityARIAColumnCount;
+- (NSUInteger)accessibilityARIARowIndex;
+- (NSUInteger)accessibilityARIAColumnIndex;
@end
@interface NSObject (WebAccessibilityObjectWrapperPrivate)
int AccessibilityUIElement::rowCount()
{
- return -1;
+ return [m_element accessibilityRowCount];
}
int AccessibilityUIElement::columnCount()
{
- return -1;
+ return [m_element accessibilityColumnCount];
}
int AccessibilityUIElement::indexInTable()
double AccessibilityUIElement::numberAttributeValue(JSStringRef attribute)
{
- // FIXME: implement
+ // Support test for table related attributes.
+ if (JSStringIsEqualToUTF8CString(attribute, "AXARIAColumnCount"))
+ return [m_element accessibilityARIAColumnCount];
+ if (JSStringIsEqualToUTF8CString(attribute, "AXARIARowCount"))
+ return [m_element accessibilityARIARowCount];
+ if (JSStringIsEqualToUTF8CString(attribute, "AXARIAColumnIndex"))
+ return [m_element accessibilityARIAColumnIndex];
+ if (JSStringIsEqualToUTF8CString(attribute, "AXARIARowIndex"))
+ return [m_element accessibilityARIARowIndex];
+
return 0;
}
- (void)_accessibilityActivate;
- (UIAccessibilityTraits)_axSelectedTrait;
- (NSString *)accessibilityARIACurrentStatus;
+- (NSUInteger)accessibilityRowCount;
+- (NSUInteger)accessibilityColumnCount;
+- (NSUInteger)accessibilityARIARowCount;
+- (NSUInteger)accessibilityARIAColumnCount;
+- (NSUInteger)accessibilityARIARowIndex;
+- (NSUInteger)accessibilityARIAColumnIndex;
@end
@interface NSObject (WebAccessibilityObjectWrapperPrivate)
double AccessibilityUIElement::numberAttributeValue(JSStringRef attribute)
{
+ // Support test for table related attributes.
+ if (JSStringIsEqualToUTF8CString(attribute, "AXARIAColumnCount"))
+ return [m_element accessibilityARIAColumnCount];
+ if (JSStringIsEqualToUTF8CString(attribute, "AXARIARowCount"))
+ return [m_element accessibilityARIARowCount];
+ if (JSStringIsEqualToUTF8CString(attribute, "AXARIAColumnIndex"))
+ return [m_element accessibilityARIAColumnIndex];
+ if (JSStringIsEqualToUTF8CString(attribute, "AXARIARowIndex"))
+ return [m_element accessibilityARIARowIndex];
+
return 0;
}
int AccessibilityUIElement::rowCount()
{
- return -1;
+ return [m_element accessibilityRowCount];
}
int AccessibilityUIElement::columnCount()
{
- return -1;
+ return [m_element accessibilityColumnCount];
}
int AccessibilityUIElement::indexInTable()