| 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 336 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 347 for (unsigned rowIndex = 0; rowIndex < numRows; ++rowIndex) { | 347 for (unsigned rowIndex = 0; rowIndex < numRows; ++rowIndex) { |
| 348 | 348 |
| 349 RenderTableRow* renderRow = tableSection->rowRendererAt(rowIndex); | 349 RenderTableRow* renderRow = tableSection->rowRendererAt(rowIndex); |
| 350 if (!renderRow) | 350 if (!renderRow) |
| 351 continue; | 351 continue; |
| 352 | 352 |
| 353 AccessibilityObject* rowObject = axCache->getOrCreate(renderRow); | 353 AccessibilityObject* rowObject = axCache->getOrCreate(renderRow); |
| 354 if (!rowObject->isTableRow()) | 354 if (!rowObject->isTableRow()) |
| 355 continue; | 355 continue; |
| 356 | 356 |
| 357 AccessibilityTableRow* row = static_cast<AccessibilityTableRow*>(row
Object); | 357 AccessibilityTableRow* row = toAccessibilityTableRow(rowObject); |
| 358 // We need to check every cell for a new row, because cell spans | 358 // We need to check every cell for a new row, because cell spans |
| 359 // can cause us to miss rows if we just check the first column. | 359 // can cause us to miss rows if we just check the first column. |
| 360 if (appendedRows.contains(row)) | 360 if (appendedRows.contains(row)) |
| 361 continue; | 361 continue; |
| 362 | 362 |
| 363 row->setRowIndex(static_cast<int>(m_rows.size())); | 363 row->setRowIndex(static_cast<int>(m_rows.size())); |
| 364 m_rows.append(row); | 364 m_rows.append(row); |
| 365 if (!row->accessibilityIsIgnored()) | 365 if (!row->accessibilityIsIgnored()) |
| 366 m_children.append(row); | 366 m_children.append(row); |
| 367 appendedRows.add(row); | 367 appendedRows.add(row); |
| 368 } | 368 } |
| 369 | 369 |
| 370 tableSection = table->sectionBelow(tableSection, SkipEmptySections); | 370 tableSection = table->sectionBelow(tableSection, SkipEmptySections); |
| 371 } | 371 } |
| 372 | 372 |
| 373 // make the columns based on the number of columns in the first body | 373 // make the columns based on the number of columns in the first body |
| 374 unsigned length = initialTableSection->numColumns(); | 374 unsigned length = initialTableSection->numColumns(); |
| 375 for (unsigned i = 0; i < length; ++i) { | 375 for (unsigned i = 0; i < length; ++i) { |
| 376 AccessibilityTableColumn* column = static_cast<AccessibilityTableColumn*
>(axCache->getOrCreate(ColumnRole)); | 376 AccessibilityTableColumn* column = toAccessibilityTableColumn(axCache->g
etOrCreate(ColumnRole)); |
| 377 column->setColumnIndex((int)i); | 377 column->setColumnIndex((int)i); |
| 378 column->setParent(this); | 378 column->setParent(this); |
| 379 m_columns.append(column); | 379 m_columns.append(column); |
| 380 if (!column->accessibilityIsIgnored()) | 380 if (!column->accessibilityIsIgnored()) |
| 381 m_children.append(column); | 381 m_children.append(column); |
| 382 } | 382 } |
| 383 | 383 |
| 384 AccessibilityObject* headerContainerObject = headerContainer(); | 384 AccessibilityObject* headerContainerObject = headerContainer(); |
| 385 if (headerContainerObject && !headerContainerObject->accessibilityIsIgnored(
)) | 385 if (headerContainerObject && !headerContainerObject->accessibilityIsIgnored(
)) |
| 386 m_children.append(headerContainerObject); | 386 m_children.append(headerContainerObject); |
| (...skipping 27 matching lines...) Expand all Loading... |
| 414 | 414 |
| 415 void AccessibilityTable::columnHeaders(AccessibilityChildrenVector& headers) | 415 void AccessibilityTable::columnHeaders(AccessibilityChildrenVector& headers) |
| 416 { | 416 { |
| 417 if (!m_renderer) | 417 if (!m_renderer) |
| 418 return; | 418 return; |
| 419 | 419 |
| 420 updateChildrenIfNecessary(); | 420 updateChildrenIfNecessary(); |
| 421 | 421 |
| 422 unsigned colCount = m_columns.size(); | 422 unsigned colCount = m_columns.size(); |
| 423 for (unsigned k = 0; k < colCount; ++k) { | 423 for (unsigned k = 0; k < colCount; ++k) { |
| 424 AccessibilityObject* header = static_cast<AccessibilityTableColumn*>(m_c
olumns[k].get())->headerObject(); | 424 AccessibilityObject* header = toAccessibilityTableColumn(m_columns[k].ge
t())->headerObject(); |
| 425 if (!header) | 425 if (!header) |
| 426 continue; | 426 continue; |
| 427 headers.append(header); | 427 headers.append(header); |
| 428 } | 428 } |
| 429 } | 429 } |
| 430 | 430 |
| 431 void AccessibilityTable::cells(AccessibilityObject::AccessibilityChildrenVector&
cells) | 431 void AccessibilityTable::cells(AccessibilityObject::AccessibilityChildrenVector&
cells) |
| 432 { | 432 { |
| 433 if (!m_renderer) | 433 if (!m_renderer) |
| 434 return; | 434 return; |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 481 // cell to determine which is the right one. | 481 // cell to determine which is the right one. |
| 482 for (unsigned colIndexCounter = std::min(static_cast<unsigned>(children.
size()), column + 1); colIndexCounter > 0; --colIndexCounter) { | 482 for (unsigned colIndexCounter = std::min(static_cast<unsigned>(children.
size()), column + 1); colIndexCounter > 0; --colIndexCounter) { |
| 483 unsigned colIndex = colIndexCounter - 1; | 483 unsigned colIndex = colIndexCounter - 1; |
| 484 AccessibilityObject* child = children[colIndex].get(); | 484 AccessibilityObject* child = children[colIndex].get(); |
| 485 ASSERT(child->isTableCell()); | 485 ASSERT(child->isTableCell()); |
| 486 if (!child->isTableCell()) | 486 if (!child->isTableCell()) |
| 487 continue; | 487 continue; |
| 488 | 488 |
| 489 pair<unsigned, unsigned> columnRange; | 489 pair<unsigned, unsigned> columnRange; |
| 490 pair<unsigned, unsigned> rowRange; | 490 pair<unsigned, unsigned> rowRange; |
| 491 AccessibilityTableCell* tableCellChild = static_cast<AccessibilityTa
bleCell*>(child); | 491 AccessibilityTableCell* tableCellChild = toAccessibilityTableCell(ch
ild); |
| 492 tableCellChild->columnIndexRange(columnRange); | 492 tableCellChild->columnIndexRange(columnRange); |
| 493 tableCellChild->rowIndexRange(rowRange); | 493 tableCellChild->rowIndexRange(rowRange); |
| 494 | 494 |
| 495 if ((column >= columnRange.first && column < (columnRange.first + co
lumnRange.second)) | 495 if ((column >= columnRange.first && column < (columnRange.first + co
lumnRange.second)) |
| 496 && (row >= rowRange.first && row < (rowRange.first + rowRange.se
cond))) | 496 && (row >= rowRange.first && row < (rowRange.first + rowRange.se
cond))) |
| 497 return tableCellChild; | 497 return tableCellChild; |
| 498 } | 498 } |
| 499 } | 499 } |
| 500 | 500 |
| 501 return 0; | 501 return 0; |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 541 } | 541 } |
| 542 | 542 |
| 543 // try the standard | 543 // try the standard |
| 544 if (title.isEmpty()) | 544 if (title.isEmpty()) |
| 545 title = AccessibilityRenderObject::title(); | 545 title = AccessibilityRenderObject::title(); |
| 546 | 546 |
| 547 return title; | 547 return title; |
| 548 } | 548 } |
| 549 | 549 |
| 550 } // namespace WebCore | 550 } // namespace WebCore |
| OLD | NEW |