Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "content/renderer/accessibility/blink_ax_tree_source.h" | 5 #include "content/renderer/accessibility/blink_ax_tree_source.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <set> | 9 #include <set> |
| 10 | 10 |
| (...skipping 651 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 662 } | 662 } |
| 663 | 663 |
| 664 if (dst->role == ui::AX_ROLE_DIALOG || | 664 if (dst->role == ui::AX_ROLE_DIALOG || |
| 665 dst->role == ui::AX_ROLE_ALERT_DIALOG) { | 665 dst->role == ui::AX_ROLE_ALERT_DIALOG) { |
| 666 dst->AddBoolAttribute(ui::AX_ATTR_MODAL, src.IsModal()); | 666 dst->AddBoolAttribute(ui::AX_ATTR_MODAL, src.IsModal()); |
| 667 } | 667 } |
| 668 | 668 |
| 669 if (dst->role == ui::AX_ROLE_ROOT_WEB_AREA) | 669 if (dst->role == ui::AX_ROLE_ROOT_WEB_AREA) |
| 670 dst->AddStringAttribute(ui::AX_ATTR_HTML_TAG, "#document"); | 670 dst->AddStringAttribute(ui::AX_ATTR_HTML_TAG, "#document"); |
| 671 | 671 |
| 672 if (dst->role == ui::AX_ROLE_TABLE) { | 672 const bool isTableLikeRole = dst->role == ui::AX_ROLE_TABLE || |
|
dmazzoni
2017/04/18 21:59:38
nit: is_table_like_role
aleventhal
2017/04/19 20:24:02
Done.
| |
| 673 dst->role == ui::AX_ROLE_GRID || dst->role == ui::AX_ROLE_TREE_GRID; | |
| 674 if (isTableLikeRole) { | |
| 673 int column_count = src.ColumnCount(); | 675 int column_count = src.ColumnCount(); |
| 674 int row_count = src.RowCount(); | 676 int row_count = src.RowCount(); |
| 675 if (column_count > 0 && row_count > 0) { | 677 if (column_count > 0 && row_count > 0) { |
| 676 std::set<int32_t> unique_cell_id_set; | 678 std::set<int32_t> unique_cell_id_set; |
| 677 std::vector<int32_t> cell_ids; | 679 std::vector<int32_t> cell_ids; |
| 678 std::vector<int32_t> unique_cell_ids; | 680 std::vector<int32_t> unique_cell_ids; |
| 679 dst->AddIntAttribute(ui::AX_ATTR_TABLE_COLUMN_COUNT, column_count); | 681 dst->AddIntAttribute(ui::AX_ATTR_TABLE_COLUMN_COUNT, column_count); |
| 680 dst->AddIntAttribute(ui::AX_ATTR_TABLE_ROW_COUNT, row_count); | 682 dst->AddIntAttribute(ui::AX_ATTR_TABLE_ROW_COUNT, row_count); |
| 681 WebAXObject header = src.HeaderContainerObject(); | 683 WebAXObject header = src.HeaderContainerObject(); |
| 682 if (!header.IsDetached()) | 684 if (!header.IsDetached()) |
| 683 dst->AddIntAttribute(ui::AX_ATTR_TABLE_HEADER_ID, header.AxID()); | 685 dst->AddIntAttribute(ui::AX_ATTR_TABLE_HEADER_ID, header.AxID()); |
| 684 for (int i = 0; i < column_count * row_count; ++i) { | 686 for (int i = 0; i < column_count * row_count; ++i) { |
| 685 WebAXObject cell = | 687 WebAXObject cell = |
| 686 src.CellForColumnAndRow(i % column_count, i / column_count); | 688 src.CellForColumnAndRow(i % column_count, i / column_count); |
| 687 int cell_id = -1; | 689 int cell_id = -1; |
| 688 if (!cell.IsDetached()) { | 690 if (!cell.IsDetached()) { |
| 689 cell_id = cell.AxID(); | 691 cell_id = cell.AxID(); |
| 690 if (unique_cell_id_set.find(cell_id) == unique_cell_id_set.end()) { | 692 if (unique_cell_id_set.find(cell_id) == unique_cell_id_set.end()) { |
| 691 unique_cell_id_set.insert(cell_id); | 693 unique_cell_id_set.insert(cell_id); |
| 692 unique_cell_ids.push_back(cell_id); | 694 unique_cell_ids.push_back(cell_id); |
| 693 } | 695 } |
| 694 } | 696 } |
| 695 cell_ids.push_back(cell_id); | 697 cell_ids.push_back(cell_id); |
| 696 } | 698 } |
| 697 dst->AddIntListAttribute(ui::AX_ATTR_CELL_IDS, cell_ids); | 699 dst->AddIntListAttribute(ui::AX_ATTR_CELL_IDS, cell_ids); |
| 698 dst->AddIntListAttribute(ui::AX_ATTR_UNIQUE_CELL_IDS, unique_cell_ids); | 700 dst->AddIntListAttribute(ui::AX_ATTR_UNIQUE_CELL_IDS, unique_cell_ids); |
| 699 } | 701 } |
| 700 } | |
| 701 | 702 |
| 702 if (dst->role == ui::AX_ROLE_TABLE || | |
| 703 dst->role == ui::AX_ROLE_GRID || | |
| 704 dst->role == ui::AX_ROLE_TREE_GRID) { | |
| 705 int aria_colcount = src.AriaColumnCount(); | 703 int aria_colcount = src.AriaColumnCount(); |
| 706 if (aria_colcount) | 704 if (aria_colcount) |
| 707 dst->AddIntAttribute(ui::AX_ATTR_ARIA_COL_COUNT, aria_colcount); | 705 dst->AddIntAttribute(ui::AX_ATTR_ARIA_COL_COUNT, aria_colcount); |
| 708 | 706 |
| 709 int aria_rowcount = src.AriaRowCount(); | 707 int aria_rowcount = src.AriaRowCount(); |
| 710 if (aria_rowcount) | 708 if (aria_rowcount) |
| 711 dst->AddIntAttribute(ui::AX_ATTR_ARIA_ROW_COUNT, aria_rowcount); | 709 dst->AddIntAttribute(ui::AX_ATTR_ARIA_ROW_COUNT, aria_rowcount); |
| 712 } | 710 } |
| 713 | 711 |
| 714 if (dst->role == ui::AX_ROLE_ROW) { | 712 if (dst->role == ui::AX_ROLE_ROW) { |
| (...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 885 return WebAXObject(); | 883 return WebAXObject(); |
| 886 | 884 |
| 887 WebDocument document = render_frame_->GetWebFrame()->GetDocument(); | 885 WebDocument document = render_frame_->GetWebFrame()->GetDocument(); |
| 888 if (!document.IsNull()) | 886 if (!document.IsNull()) |
| 889 return document.AccessibilityObject(); | 887 return document.AccessibilityObject(); |
| 890 | 888 |
| 891 return WebAXObject(); | 889 return WebAXObject(); |
| 892 } | 890 } |
| 893 | 891 |
| 894 } // namespace content | 892 } // namespace content |
| OLD | NEW |