Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(517)

Side by Side Diff: Source/core/accessibility/AXTable.cpp

Issue 192413002: Use new is*Element() helper functions in accessibility code (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 17 matching lines...) Expand all
28 28
29 #include "config.h" 29 #include "config.h"
30 #include "core/accessibility/AXTable.h" 30 #include "core/accessibility/AXTable.h"
31 31
32 #include "core/accessibility/AXObjectCache.h" 32 #include "core/accessibility/AXObjectCache.h"
33 #include "core/accessibility/AXTableCell.h" 33 #include "core/accessibility/AXTableCell.h"
34 #include "core/accessibility/AXTableColumn.h" 34 #include "core/accessibility/AXTableColumn.h"
35 #include "core/accessibility/AXTableRow.h" 35 #include "core/accessibility/AXTableRow.h"
36 #include "core/html/HTMLTableCaptionElement.h" 36 #include "core/html/HTMLTableCaptionElement.h"
37 #include "core/html/HTMLTableCellElement.h" 37 #include "core/html/HTMLTableCellElement.h"
38 #include "core/html/HTMLTableColElement.h"
38 #include "core/html/HTMLTableElement.h" 39 #include "core/html/HTMLTableElement.h"
39 #include "core/rendering/RenderTableCell.h" 40 #include "core/rendering/RenderTableCell.h"
40 41
41 namespace WebCore { 42 namespace WebCore {
42 43
43 using namespace HTMLNames; 44 using namespace HTMLNames;
44 45
45 AXTable::AXTable(RenderObject* renderer) 46 AXTable::AXTable(RenderObject* renderer)
46 : AXRenderObject(renderer) 47 : AXRenderObject(renderer)
47 , m_headerContainer(nullptr) 48 , m_headerContainer(nullptr)
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
112 // if there is a caption element, summary, THEAD, or TFOOT section, it's mos t certainly a data table 113 // if there is a caption element, summary, THEAD, or TFOOT section, it's mos t certainly a data table
113 HTMLTableElement* tableElement = toHTMLTableElement(tableNode); 114 HTMLTableElement* tableElement = toHTMLTableElement(tableNode);
114 if (!tableElement->summary().isEmpty() || tableElement->tHead() || tableElem ent->tFoot() || tableElement->caption()) 115 if (!tableElement->summary().isEmpty() || tableElement->tHead() || tableElem ent->tFoot() || tableElement->caption())
115 return true; 116 return true;
116 117
117 // if someone used "rules" attribute than the table should appear 118 // if someone used "rules" attribute than the table should appear
118 if (!tableElement->rules().isEmpty()) 119 if (!tableElement->rules().isEmpty())
119 return true; 120 return true;
120 121
121 // if there's a colgroup or col element, it's probably a data table. 122 // if there's a colgroup or col element, it's probably a data table.
122 for (Node* child = tableElement->firstChild(); child; child = child->nextSib ling()) { 123 if (Traversal<HTMLTableColElement>::firstChild(*tableElement))
123 if (child->hasTagName(colTag) || child->hasTagName(colgroupTag)) 124 return true;
124 return true;
125 }
126 125
127 // go through the cell's and check for tell-tale signs of "data" table statu s 126 // go through the cell's and check for tell-tale signs of "data" table statu s
128 // cells have borders, or use attributes like headers, abbr, scope or axis 127 // cells have borders, or use attributes like headers, abbr, scope or axis
129 table->recalcSectionsIfNeeded(); 128 table->recalcSectionsIfNeeded();
130 RenderTableSection* firstBody = table->firstBody(); 129 RenderTableSection* firstBody = table->firstBody();
131 if (!firstBody) 130 if (!firstBody)
132 return false; 131 return false;
133 132
134 int numCols = firstBody->numColumns(); 133 int numCols = firstBody->numColumns();
135 int numRows = firstBody->numRows(); 134 int numRows = firstBody->numRows();
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
184 bool isTHCell = cellNode->hasTagName(thTag); 183 bool isTHCell = cellNode->hasTagName(thTag);
185 // If the first row is comprised of all <th> tags, assume it is a da ta table. 184 // If the first row is comprised of all <th> tags, assume it is a da ta table.
186 if (!row && isTHCell) 185 if (!row && isTHCell)
187 headersInFirstRowCount++; 186 headersInFirstRowCount++;
188 187
189 // If the first column is comprised of all <th> tags, assume it is a data table. 188 // If the first column is comprised of all <th> tags, assume it is a data table.
190 if (!col && isTHCell) 189 if (!col && isTHCell)
191 headersInFirstColumnCount++; 190 headersInFirstColumnCount++;
192 191
193 // in this case, the developer explicitly assigned a "data" table at tribute 192 // in this case, the developer explicitly assigned a "data" table at tribute
194 if (cellNode->hasTagName(tdTag) || cellNode->hasTagName(thTag)) { 193 if (isHTMLTableCellElement(*cellNode)) {
195 HTMLTableCellElement* cellElement = toHTMLTableCellElement(cellN ode); 194 HTMLTableCellElement& cellElement = toHTMLTableCellElement(*cell Node);
196 if (!cellElement->headers().isEmpty() || !cellElement->abbr().is Empty() 195 if (!cellElement.headers().isEmpty() || !cellElement.abbr().isEm pty()
197 || !cellElement->axis().isEmpty() || !cellElement->scope().i sEmpty()) 196 || !cellElement.axis().isEmpty() || !cellElement.scope().isE mpty())
198 return true; 197 return true;
199 } 198 }
200 199
201 RenderStyle* renderStyle = cell->style(); 200 RenderStyle* renderStyle = cell->style();
202 if (!renderStyle) 201 if (!renderStyle)
203 continue; 202 continue;
204 203
205 // If the empty-cells style is set, we'll call it a data table. 204 // If the empty-cells style is set, we'll call it a data table.
206 if (renderStyle->emptyCells() == HIDE) 205 if (renderStyle->emptyCells() == HIDE)
207 return true; 206 return true;
(...skipping 334 matching lines...) Expand 10 before | Expand all | Expand 10 after
542 } 541 }
543 542
544 // try the standard 543 // try the standard
545 if (title.isEmpty()) 544 if (title.isEmpty())
546 title = AXRenderObject::title(); 545 title = AXRenderObject::title();
547 546
548 return title; 547 return title;
549 } 548 }
550 549
551 } // namespace WebCore 550 } // namespace WebCore
OLDNEW
« Source/core/accessibility/AXRenderObject.cpp ('K') | « Source/core/accessibility/AXRenderObject.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698