50
51
return adoptRef(new AccessibilityARIAGridRow(renderer));
54
bool AccessibilityARIAGridRow::isARIATreeGridRow() const
56
AccessibilityObject* parent = parentTable();
60
return parent->ariaRoleAttribute() == TreeGridRole;
63
void AccessibilityARIAGridRow::disclosedRows(AccessibilityChildrenVector& disclosedRows)
65
// The contiguous disclosed rows will be the rows in the table that
66
// have an aria-level of plus 1 from this row.
67
AccessibilityObject* parent = parentObjectUnignored();
68
if (!parent || !parent->isDataTable())
71
// Search for rows that match the correct level.
72
// Only take the subsequent rows from this one that are +1 from this row's level.
73
int index = rowIndex();
77
unsigned level = hierarchicalLevel();
78
AccessibilityChildrenVector& allRows = static_cast<AccessibilityTable*>(parent)->rows();
79
int rowCount = allRows.size();
80
for (int k = index + 1; k < rowCount; ++k) {
81
AccessibilityObject* row = allRows[k].get();
82
// Stop at the first row that doesn't match the correct level.
83
if (row->hierarchicalLevel() != level + 1)
86
disclosedRows.append(row);
90
AccessibilityObject* AccessibilityARIAGridRow::disclosedByRow() const
92
// The row that discloses this one is the row in the table
93
// that is aria-level subtract 1 from this row.
94
AccessibilityObject* parent = parentObjectUnignored();
95
if (!parent || !parent->isDataTable())
98
// If the level is 1 or less, than nothing discloses this row.
99
unsigned level = hierarchicalLevel();
103
// Search for the previous row that matches the correct level.
104
int index = rowIndex();
105
AccessibilityChildrenVector& allRows = static_cast<AccessibilityTable*>(parent)->rows();
106
int rowCount = allRows.size();
107
if (index >= rowCount)
110
for (int k = index - 1; k >= 0; --k) {
111
AccessibilityObject* row = allRows[k].get();
112
if (row->hierarchicalLevel() == level - 1)
53
119
AccessibilityObject* AccessibilityARIAGridRow::parentTable() const
55
121
AccessibilityObject* parent = parentObjectUnignored();