summaryrefslogtreecommitdiff
path: root/Source/WebCore/accessibility/AccessibilityARIAGridRow.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebCore/accessibility/AccessibilityARIAGridRow.cpp')
-rw-r--r--Source/WebCore/accessibility/AccessibilityARIAGridRow.cpp32
1 files changed, 20 insertions, 12 deletions
diff --git a/Source/WebCore/accessibility/AccessibilityARIAGridRow.cpp b/Source/WebCore/accessibility/AccessibilityARIAGridRow.cpp
index f85b62719..dd4fda567 100644
--- a/Source/WebCore/accessibility/AccessibilityARIAGridRow.cpp
+++ b/Source/WebCore/accessibility/AccessibilityARIAGridRow.cpp
@@ -10,7 +10,7 @@
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
+ * 3. Neither the name of Apple Inc. ("Apple") nor the names of
* its contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
@@ -44,9 +44,9 @@ AccessibilityARIAGridRow::~AccessibilityARIAGridRow()
{
}
-PassRefPtr<AccessibilityARIAGridRow> AccessibilityARIAGridRow::create(RenderObject* renderer)
+Ref<AccessibilityARIAGridRow> AccessibilityARIAGridRow::create(RenderObject* renderer)
{
- return adoptRef(new AccessibilityARIAGridRow(renderer));
+ return adoptRef(*new AccessibilityARIAGridRow(renderer));
}
bool AccessibilityARIAGridRow::isARIATreeGridRow() const
@@ -63,7 +63,7 @@ void AccessibilityARIAGridRow::disclosedRows(AccessibilityChildrenVector& disclo
// The contiguous disclosed rows will be the rows in the table that
// have an aria-level of plus 1 from this row.
AccessibilityObject* parent = parentObjectUnignored();
- if (!parent || !parent->isAccessibilityTable())
+ if (!is<AccessibilityTable>(*parent) || !downcast<AccessibilityTable>(*parent).isExposableThroughAccessibility())
return;
// Search for rows that match the correct level.
@@ -73,7 +73,7 @@ void AccessibilityARIAGridRow::disclosedRows(AccessibilityChildrenVector& disclo
return;
unsigned level = hierarchicalLevel();
- auto& allRows = toAccessibilityTable(parent)->rows();
+ auto& allRows = downcast<AccessibilityTable>(*parent).rows();
int rowCount = allRows.size();
for (int k = index + 1; k < rowCount; ++k) {
AccessibilityObject* row = allRows[k].get();
@@ -90,20 +90,20 @@ AccessibilityObject* AccessibilityARIAGridRow::disclosedByRow() const
// The row that discloses this one is the row in the table
// that is aria-level subtract 1 from this row.
AccessibilityObject* parent = parentObjectUnignored();
- if (!parent || !parent->isAccessibilityTable())
- return 0;
+ if (!is<AccessibilityTable>(*parent) || !downcast<AccessibilityTable>(*parent).isExposableThroughAccessibility())
+ return nullptr;
// If the level is 1 or less, than nothing discloses this row.
unsigned level = hierarchicalLevel();
if (level <= 1)
- return 0;
+ return nullptr;
// Search for the previous row that matches the correct level.
int index = rowIndex();
- auto& allRows = toAccessibilityTable(parent)->rows();
+ auto& allRows = downcast<AccessibilityTable>(parent)->rows();
int rowCount = allRows.size();
if (index >= rowCount)
- return 0;
+ return nullptr;
for (int k = index - 1; k >= 0; --k) {
AccessibilityObject* row = allRows[k].get();
@@ -114,14 +114,22 @@ AccessibilityObject* AccessibilityARIAGridRow::disclosedByRow() const
return nullptr;
}
+AccessibilityObject* AccessibilityARIAGridRow::parentObjectUnignored() const
+{
+ return parentTable();
+}
+
AccessibilityTable* AccessibilityARIAGridRow::parentTable() const
{
// The parent table might not be the direct ancestor of the row unfortunately. ARIA states that role="grid" should
// only have "row" elements, but if not, we still should handle it gracefully by finding the right table.
for (AccessibilityObject* parent = parentObject(); parent; parent = parent->parentObject()) {
// The parent table for an ARIA grid row should be an ARIA table.
- if (parent->isTable() && parent->isAccessibilityTable() && toAccessibilityTable(parent)->isAriaTable())
- return toAccessibilityTable(parent);
+ if (is<AccessibilityTable>(*parent)) {
+ AccessibilityTable& tableParent = downcast<AccessibilityTable>(*parent);
+ if (tableParent.isExposableThroughAccessibility() && tableParent.isAriaTable())
+ return &tableParent;
+ }
}
return nullptr;