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

Side by Side Diff: content/renderer/accessibility/blink_ax_tree_source.cc

Issue 2825803002: Expose internal treegrid role, do some cleanup for table/grid/treegrid handling (Closed)
Patch Set: Fix mac tests Created 3 years, 8 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
OLDNEW
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
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 is_table_like_role = dst->role == ui::AX_ROLE_TABLE ||
673 dst->role == ui::AX_ROLE_GRID ||
674 dst->role == ui::AX_ROLE_TREE_GRID;
675 if (is_table_like_role) {
673 int column_count = src.ColumnCount(); 676 int column_count = src.ColumnCount();
674 int row_count = src.RowCount(); 677 int row_count = src.RowCount();
675 if (column_count > 0 && row_count > 0) { 678 if (column_count > 0 && row_count > 0) {
676 std::set<int32_t> unique_cell_id_set; 679 std::set<int32_t> unique_cell_id_set;
677 std::vector<int32_t> cell_ids; 680 std::vector<int32_t> cell_ids;
678 std::vector<int32_t> unique_cell_ids; 681 std::vector<int32_t> unique_cell_ids;
679 dst->AddIntAttribute(ui::AX_ATTR_TABLE_COLUMN_COUNT, column_count); 682 dst->AddIntAttribute(ui::AX_ATTR_TABLE_COLUMN_COUNT, column_count);
680 dst->AddIntAttribute(ui::AX_ATTR_TABLE_ROW_COUNT, row_count); 683 dst->AddIntAttribute(ui::AX_ATTR_TABLE_ROW_COUNT, row_count);
681 WebAXObject header = src.HeaderContainerObject(); 684 WebAXObject header = src.HeaderContainerObject();
682 if (!header.IsDetached()) 685 if (!header.IsDetached())
683 dst->AddIntAttribute(ui::AX_ATTR_TABLE_HEADER_ID, header.AxID()); 686 dst->AddIntAttribute(ui::AX_ATTR_TABLE_HEADER_ID, header.AxID());
684 for (int i = 0; i < column_count * row_count; ++i) { 687 for (int i = 0; i < column_count * row_count; ++i) {
685 WebAXObject cell = 688 WebAXObject cell =
686 src.CellForColumnAndRow(i % column_count, i / column_count); 689 src.CellForColumnAndRow(i % column_count, i / column_count);
687 int cell_id = -1; 690 int cell_id = -1;
688 if (!cell.IsDetached()) { 691 if (!cell.IsDetached()) {
689 cell_id = cell.AxID(); 692 cell_id = cell.AxID();
690 if (unique_cell_id_set.find(cell_id) == unique_cell_id_set.end()) { 693 if (unique_cell_id_set.find(cell_id) == unique_cell_id_set.end()) {
691 unique_cell_id_set.insert(cell_id); 694 unique_cell_id_set.insert(cell_id);
692 unique_cell_ids.push_back(cell_id); 695 unique_cell_ids.push_back(cell_id);
693 } 696 }
694 } 697 }
695 cell_ids.push_back(cell_id); 698 cell_ids.push_back(cell_id);
696 } 699 }
697 dst->AddIntListAttribute(ui::AX_ATTR_CELL_IDS, cell_ids); 700 dst->AddIntListAttribute(ui::AX_ATTR_CELL_IDS, cell_ids);
698 dst->AddIntListAttribute(ui::AX_ATTR_UNIQUE_CELL_IDS, unique_cell_ids); 701 dst->AddIntListAttribute(ui::AX_ATTR_UNIQUE_CELL_IDS, unique_cell_ids);
699 } 702 }
700 }
701 703
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(); 704 int aria_colcount = src.AriaColumnCount();
706 if (aria_colcount) 705 if (aria_colcount)
707 dst->AddIntAttribute(ui::AX_ATTR_ARIA_COL_COUNT, aria_colcount); 706 dst->AddIntAttribute(ui::AX_ATTR_ARIA_COL_COUNT, aria_colcount);
708 707
709 int aria_rowcount = src.AriaRowCount(); 708 int aria_rowcount = src.AriaRowCount();
710 if (aria_rowcount) 709 if (aria_rowcount)
711 dst->AddIntAttribute(ui::AX_ATTR_ARIA_ROW_COUNT, aria_rowcount); 710 dst->AddIntAttribute(ui::AX_ATTR_ARIA_ROW_COUNT, aria_rowcount);
712 } 711 }
713 712
714 if (dst->role == ui::AX_ROLE_ROW) { 713 if (dst->role == ui::AX_ROLE_ROW) {
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after
885 return WebAXObject(); 884 return WebAXObject();
886 885
887 WebDocument document = render_frame_->GetWebFrame()->GetDocument(); 886 WebDocument document = render_frame_->GetWebFrame()->GetDocument();
888 if (!document.IsNull()) 887 if (!document.IsNull())
889 return document.AccessibilityObject(); 888 return document.AccessibilityObject();
890 889
891 return WebAXObject(); 890 return WebAXObject();
892 } 891 }
893 892
894 } // namespace content 893 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698