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

Side by Side Diff: content/browser/accessibility/browser_accessibility.cc

Issue 2964313002: Converts accNavigate over to the AXPlatformNode code. (Closed)
Patch Set: are -> is Created 3 years, 5 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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/browser/accessibility/browser_accessibility.h" 5 #include "content/browser/accessibility/browser_accessibility.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <iterator> 10 #include <iterator>
(...skipping 728 matching lines...) Expand 10 before | Expand all | Expand 10 after
739 bool BrowserAccessibility::GetHtmlAttribute( 739 bool BrowserAccessibility::GetHtmlAttribute(
740 const char* html_attr, std::string* value) const { 740 const char* html_attr, std::string* value) const {
741 return GetData().GetHtmlAttribute(html_attr, value); 741 return GetData().GetHtmlAttribute(html_attr, value);
742 } 742 }
743 743
744 bool BrowserAccessibility::GetHtmlAttribute( 744 bool BrowserAccessibility::GetHtmlAttribute(
745 const char* html_attr, base::string16* value) const { 745 const char* html_attr, base::string16* value) const {
746 return GetData().GetHtmlAttribute(html_attr, value); 746 return GetData().GetHtmlAttribute(html_attr, value);
747 } 747 }
748 748
749 BrowserAccessibility* BrowserAccessibility::GetTable() const {
750 BrowserAccessibility* table = const_cast<BrowserAccessibility*>(this);
751 while (table && !ui::IsTableLikeRole(table->GetRole()))
752 table = table->PlatformGetParent();
753 return table;
754 }
755
756 BrowserAccessibility* BrowserAccessibility::GetTableCell(int index) const {
757 if (!ui::IsTableLikeRole(GetRole()) &&
758 !ui::IsCellOrTableHeaderRole(GetRole()))
759 return nullptr;
760
761 BrowserAccessibility* table = GetTable();
762 if (!table)
763 return nullptr;
764 const std::vector<int32_t>& unique_cell_ids =
765 table->GetIntListAttribute(ui::AX_ATTR_UNIQUE_CELL_IDS);
766 if (index < 0 || index >= static_cast<int>(unique_cell_ids.size()))
767 return nullptr;
768 return table->manager_->GetFromID(unique_cell_ids[index]);
769 }
770
771 BrowserAccessibility* BrowserAccessibility::GetTableCell(int row,
772 int column) const {
773 if (!ui::IsTableLikeRole(GetRole()) &&
774 !ui::IsCellOrTableHeaderRole(GetRole()))
775 return nullptr;
776 if (row < 0 || row >= GetTableRowCount() || column < 0 ||
777 column >= GetTableColumnCount()) {
778 return nullptr;
779 }
780
781 BrowserAccessibility* table = GetTable();
782 if (!table)
783 return nullptr;
784
785 // In contrast to unique cell IDs, these are duplicated whenever a cell spans
786 // multiple columns or rows.
787 const std::vector<int32_t>& cell_ids =
788 table->GetIntListAttribute(ui::AX_ATTR_CELL_IDS);
789 DCHECK_EQ(GetTableRowCount() * GetTableColumnCount(),
790 static_cast<int>(cell_ids.size()));
791 int position = row * GetTableColumnCount() + column;
792 if (position < 0 || position >= static_cast<int>(cell_ids.size()))
793 return nullptr;
794 return table->manager_->GetFromID(cell_ids[position]);
795 }
796
797 int BrowserAccessibility::GetTableCellIndex() const {
798 if (!ui::IsCellOrTableHeaderRole(GetRole()))
799 return -1;
800
801 BrowserAccessibility* table = GetTable();
802 if (!table)
803 return -1;
804
805 const std::vector<int32_t>& unique_cell_ids =
806 table->GetIntListAttribute(ui::AX_ATTR_UNIQUE_CELL_IDS);
807 auto iter =
808 std::find(unique_cell_ids.begin(), unique_cell_ids.end(), GetId());
809 if (iter == unique_cell_ids.end())
810 return -1;
811
812 return std::distance(unique_cell_ids.begin(), iter);
813 }
814
815 int BrowserAccessibility::GetTableColumn() const {
816 return GetIntAttribute(ui::AX_ATTR_TABLE_CELL_COLUMN_INDEX);
817 }
818
819 int BrowserAccessibility::GetTableColumnCount() const {
820 BrowserAccessibility* table = GetTable();
821 if (!table)
822 return 0;
823
824 return table->GetIntAttribute(ui::AX_ATTR_TABLE_COLUMN_COUNT);
825 }
826
827 int BrowserAccessibility::GetTableColumnSpan() const {
828 if (!ui::IsCellOrTableHeaderRole(GetRole()))
829 return 0;
830
831 int column_span;
832 if (GetIntAttribute(ui::AX_ATTR_TABLE_CELL_COLUMN_SPAN, &column_span))
833 return column_span;
834 return 1;
835 }
836
837 int BrowserAccessibility::GetTableRow() const {
838 return GetIntAttribute(ui::AX_ATTR_TABLE_CELL_ROW_INDEX);
839 }
840
841 int BrowserAccessibility::GetTableRowCount() const {
842 BrowserAccessibility* table = GetTable();
843 if (!table)
844 return 0;
845
846 return table->GetIntAttribute(ui::AX_ATTR_TABLE_ROW_COUNT);
847 }
848
849 int BrowserAccessibility::GetTableRowSpan() const {
850 if (!ui::IsCellOrTableHeaderRole(GetRole()))
851 return 0;
852
853 int row_span;
854 if (GetIntAttribute(ui::AX_ATTR_TABLE_CELL_ROW_SPAN, &row_span))
855 return row_span;
856 return 1;
857 }
858
859 base::string16 BrowserAccessibility::GetText() const { 749 base::string16 BrowserAccessibility::GetText() const {
860 return GetInnerText(); 750 return GetInnerText();
861 } 751 }
862 752
863 bool BrowserAccessibility::HasState(ui::AXState state_enum) const { 753 bool BrowserAccessibility::HasState(ui::AXState state_enum) const {
864 return GetData().HasState(state_enum); 754 return GetData().HasState(state_enum);
865 } 755 }
866 756
867 bool BrowserAccessibility::HasAction(ui::AXAction action_enum) const { 757 bool BrowserAccessibility::HasAction(ui::AXAction action_enum) const {
868 return GetData().HasAction(action_enum); 758 return GetData().HasAction(action_enum);
(...skipping 229 matching lines...) Expand 10 before | Expand all | Expand 10 after
1098 } 988 }
1099 989
1100 gfx::NativeViewAccessible BrowserAccessibility::GetFocus() { 990 gfx::NativeViewAccessible BrowserAccessibility::GetFocus() {
1101 auto* focused = manager()->GetFocus(); 991 auto* focused = manager()->GetFocus();
1102 if (!focused) 992 if (!focused)
1103 return nullptr; 993 return nullptr;
1104 994
1105 return focused->GetNativeViewAccessible(); 995 return focused->GetNativeViewAccessible();
1106 } 996 }
1107 997
998 ui::AXPlatformNode* BrowserAccessibility::GetFromNodeID(int32_t id) {
999 // Not all BrowserAccessibility subclasses can return an AXPlatformNode yet.
1000 // So, here we just return nullptr.
1001 return nullptr;
1002 }
1003
1108 gfx::AcceleratedWidget 1004 gfx::AcceleratedWidget
1109 BrowserAccessibility::GetTargetForNativeAccessibilityEvent() { 1005 BrowserAccessibility::GetTargetForNativeAccessibilityEvent() {
1110 BrowserAccessibilityDelegate* root_delegate = 1006 BrowserAccessibilityDelegate* root_delegate =
1111 manager()->GetDelegateFromRootManager(); 1007 manager()->GetDelegateFromRootManager();
1112 if (!root_delegate) 1008 if (!root_delegate)
1113 return gfx::kNullAcceleratedWidget; 1009 return gfx::kNullAcceleratedWidget;
1114 return root_delegate->AccessibilityGetAcceleratedWidget(); 1010 return root_delegate->AccessibilityGetAcceleratedWidget();
1115 } 1011 }
1116 1012
1117 bool BrowserAccessibility::AccessibilityPerformAction( 1013 bool BrowserAccessibility::AccessibilityPerformAction(
(...skipping 11 matching lines...) Expand all
1129 return false; 1025 return false;
1130 } 1026 }
1131 1027
1132 bool BrowserAccessibility::ShouldIgnoreHoveredStateForTesting() { 1028 bool BrowserAccessibility::ShouldIgnoreHoveredStateForTesting() {
1133 BrowserAccessibilityStateImpl* accessibility_state = 1029 BrowserAccessibilityStateImpl* accessibility_state =
1134 BrowserAccessibilityStateImpl::GetInstance(); 1030 BrowserAccessibilityStateImpl::GetInstance();
1135 return accessibility_state->disable_hot_tracking_for_testing(); 1031 return accessibility_state->disable_hot_tracking_for_testing();
1136 } 1032 }
1137 1033
1138 } // namespace content 1034 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/accessibility/browser_accessibility.h ('k') | content/browser/accessibility/browser_accessibility_com_win.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698