OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2008 Apple Inc. All rights reserved. | 2 * Copyright (C) 2008 Apple Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * | 7 * |
8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
96 { | 96 { |
97 AXObject* parent = parentObjectUnignored(); | 97 AXObject* parent = parentObjectUnignored(); |
98 if (!parent || !parent->isAXTable()) | 98 if (!parent || !parent->isAXTable()) |
99 return 0; | 99 return 0; |
100 | 100 |
101 return parent; | 101 return parent; |
102 } | 102 } |
103 | 103 |
104 AXObject* AXTableRow::headerObject() | 104 AXObject* AXTableRow::headerObject() |
105 { | 105 { |
106 if (!m_renderer || !m_renderer->isTableRow()) | 106 AccessibilityChildrenVector headers; |
| 107 headerObjectsForRow(headers); |
| 108 if (!headers.size()) |
107 return 0; | 109 return 0; |
108 | 110 |
109 AccessibilityChildrenVector rowChildren = children(); | 111 return headers[0].get(); |
110 if (!rowChildren.size()) | |
111 return 0; | |
112 | |
113 // check the first element in the row to see if it is a TH element | |
114 AXObject* cell = rowChildren[0].get(); | |
115 if (!cell->isTableCell()) | |
116 return 0; | |
117 | |
118 LayoutObject* cellRenderer = toAXTableCell(cell)->renderer(); | |
119 if (!cellRenderer) | |
120 return 0; | |
121 | |
122 Node* cellNode = cellRenderer->node(); | |
123 if (!cellNode || !cellNode->hasTagName(thTag)) | |
124 return 0; | |
125 | |
126 return cell; | |
127 } | 112 } |
128 | 113 |
129 void AXTableRow::headerObjectsForRow(AccessibilityChildrenVector& headers) | 114 void AXTableRow::headerObjectsForRow(AccessibilityChildrenVector& headers) |
130 { | 115 { |
131 if (!m_renderer || !m_renderer->isTableRow()) | 116 if (!m_renderer || !m_renderer->isTableRow()) |
132 return; | 117 return; |
133 | 118 |
134 AccessibilityChildrenVector rowChildren = children(); | 119 AccessibilityChildrenVector rowChildren = children(); |
135 unsigned childrenCount = rowChildren.size(); | 120 unsigned childrenCount = rowChildren.size(); |
136 for (unsigned i = 0; i < childrenCount; i++) { | 121 for (unsigned i = 0; i < childrenCount; i++) { |
137 AXObject* cell = rowChildren[i].get(); | 122 AXObject* cell = rowChildren[i].get(); |
138 if (!cell->isTableCell()) | 123 if (!cell->isTableCell()) |
139 continue; | 124 continue; |
140 | 125 |
141 if (toAXTableCell(cell)->scanToDecideHeaderRole() == RowHeaderRole) | 126 if (toAXTableCell(cell)->scanToDecideHeaderRole() == RowHeaderRole) |
142 headers.append(cell); | 127 headers.append(cell); |
143 } | 128 } |
144 } | 129 } |
145 | 130 |
146 } // namespace blink | 131 } // namespace blink |
OLD | NEW |