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

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

Issue 2539503003: ARIA 1.1: implementation for aria-col-* and aria-row-*. (Closed)
Patch Set: Fix Mac Created 4 years 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_win.h" 5 #include "content/browser/accessibility/browser_accessibility_win.h"
6 6
7 #include <UIAutomationClient.h> 7 #include <UIAutomationClient.h>
8 #include <UIAutomationCoreApi.h> 8 #include <UIAutomationCoreApi.h>
9 9
10 #include <algorithm> 10 #include <algorithm>
(...skipping 3804 matching lines...) Expand 10 before | Expand all | Expand 10 after
3815 table->GetIntListAttribute(ui::AX_ATTR_UNIQUE_CELL_IDS); 3815 table->GetIntListAttribute(ui::AX_ATTR_UNIQUE_CELL_IDS);
3816 for (size_t i = 0; i < unique_cell_ids.size(); ++i) { 3816 for (size_t i = 0; i < unique_cell_ids.size(); ++i) {
3817 if (unique_cell_ids[i] == GetId()) { 3817 if (unique_cell_ids[i] == GetId()) {
3818 win_attributes_->ia2_attributes.push_back( 3818 win_attributes_->ia2_attributes.push_back(
3819 base::string16(L"table-cell-index:") + base::IntToString16(i)); 3819 base::string16(L"table-cell-index:") + base::IntToString16(i));
3820 } 3820 }
3821 } 3821 }
3822 } 3822 }
3823 } 3823 }
3824 3824
3825 // Expose aria-colcount and aria-rowcount in a table, grid or treegrid.
3826 if (IsTableOrGridOrTreeGridRole()) {
3827 IntAttributeToIA2(ui::AX_ATTR_ARIA_COL_COUNT, "colcount");
3828 IntAttributeToIA2(ui::AX_ATTR_ARIA_ROW_COUNT, "rowcount");
3829 }
3830
3831 // Expose aria-colindex and aria-rowindex in a cell or row.
3832 if (IsCellOrTableHeaderRole() || GetRole() == ui::AX_ROLE_ROW) {
3833 if (GetRole() != ui::AX_ROLE_ROW)
3834 IntAttributeToIA2(ui::AX_ATTR_ARIA_COL_INDEX, "colindex");
3835 IntAttributeToIA2(ui::AX_ATTR_ARIA_ROW_INDEX, "rowindex");
3836 }
3837
3825 // Expose row or column header sort direction. 3838 // Expose row or column header sort direction.
3826 int32_t sort_direction; 3839 int32_t sort_direction;
3827 if ((ia_role() == ROLE_SYSTEM_COLUMNHEADER || 3840 if ((ia_role() == ROLE_SYSTEM_COLUMNHEADER ||
3828 ia_role() == ROLE_SYSTEM_ROWHEADER) && 3841 ia_role() == ROLE_SYSTEM_ROWHEADER) &&
3829 GetIntAttribute(ui::AX_ATTR_SORT_DIRECTION, &sort_direction)) { 3842 GetIntAttribute(ui::AX_ATTR_SORT_DIRECTION, &sort_direction)) {
3830 switch (static_cast<ui::AXSortDirection>(sort_direction)) { 3843 switch (static_cast<ui::AXSortDirection>(sort_direction)) {
3831 case ui::AX_SORT_DIRECTION_NONE: 3844 case ui::AX_SORT_DIRECTION_NONE:
3832 break; 3845 break;
3833 case ui::AX_SORT_DIRECTION_UNSORTED: 3846 case ui::AX_SORT_DIRECTION_UNSORTED:
3834 win_attributes_->ia2_attributes.push_back(L"sort:none"); 3847 win_attributes_->ia2_attributes.push_back(L"sort:none");
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
3870 ui::AX_ATTR_DESCRIBEDBY_IDS); 3883 ui::AX_ATTR_DESCRIBEDBY_IDS);
3871 AddBidirectionalRelations(IA2_RELATION_FLOWS_TO, IA2_RELATION_FLOWS_FROM, 3884 AddBidirectionalRelations(IA2_RELATION_FLOWS_TO, IA2_RELATION_FLOWS_FROM,
3872 ui::AX_ATTR_FLOWTO_IDS); 3885 ui::AX_ATTR_FLOWTO_IDS);
3873 AddBidirectionalRelations(IA2_RELATION_LABELLED_BY, IA2_RELATION_LABEL_FOR, 3886 AddBidirectionalRelations(IA2_RELATION_LABELLED_BY, IA2_RELATION_LABEL_FOR,
3874 ui::AX_ATTR_LABELLEDBY_IDS); 3887 ui::AX_ATTR_LABELLEDBY_IDS);
3875 3888
3876 int member_of_id; 3889 int member_of_id;
3877 if (GetIntAttribute(ui::AX_ATTR_MEMBER_OF_ID, &member_of_id)) 3890 if (GetIntAttribute(ui::AX_ATTR_MEMBER_OF_ID, &member_of_id))
3878 AddRelation(IA2_RELATION_MEMBER_OF, member_of_id); 3891 AddRelation(IA2_RELATION_MEMBER_OF, member_of_id);
3879 3892
3893 // Expose slider value.
3894 if (ia_role() == ROLE_SYSTEM_PROGRESSBAR ||
3895 ia_role() == ROLE_SYSTEM_SCROLLBAR ||
3896 ia_role() == ROLE_SYSTEM_SLIDER) {
3897 base::string16 value_text = GetValueText();
3898 SanitizeStringAttributeForIA2(value_text, &value_text);
3899 win_attributes_->ia2_attributes.push_back(L"valuetext:" + value_text);
3900 }
3901
3880 UpdateRequiredAttributes(); 3902 UpdateRequiredAttributes();
3881 // If this is a web area for a presentational iframe, give it a role of 3903 // If this is a web area for a presentational iframe, give it a role of
3882 // something other than DOCUMENT so that the fact that it's a separate doc 3904 // something other than DOCUMENT so that the fact that it's a separate doc
3883 // is not exposed to AT. 3905 // is not exposed to AT.
3884 if (IsWebAreaForPresentationalIframe()) { 3906 if (IsWebAreaForPresentationalIframe()) {
3885 win_attributes_->ia_role = ROLE_SYSTEM_GROUPING; 3907 win_attributes_->ia_role = ROLE_SYSTEM_GROUPING;
3886 win_attributes_->ia2_role = ROLE_SYSTEM_GROUPING; 3908 win_attributes_->ia2_role = ROLE_SYSTEM_GROUPING;
3887 } 3909 }
3888 } 3910 }
3889 3911
(...skipping 994 matching lines...) Expand 10 before | Expand all | Expand 10 after
4884 if (relation->get_target_ids().empty()) { 4906 if (relation->get_target_ids().empty()) {
4885 iter = relations_.erase(iter); 4907 iter = relations_.erase(iter);
4886 relation->Release(); 4908 relation->Release();
4887 } else { 4909 } else {
4888 ++iter; 4910 ++iter;
4889 } 4911 }
4890 } 4912 }
4891 } 4913 }
4892 4914
4893 void BrowserAccessibilityWin::UpdateRequiredAttributes() { 4915 void BrowserAccessibilityWin::UpdateRequiredAttributes() {
4894 // Expose slider value. 4916 if (IsCellOrTableHeaderRole()) {
4895 if (ia_role() == ROLE_SYSTEM_PROGRESSBAR || 4917 // Expose colspan attribute.
4896 ia_role() == ROLE_SYSTEM_SCROLLBAR || 4918 base::string16 colspan;
4897 ia_role() == ROLE_SYSTEM_SLIDER) { 4919 if (GetHtmlAttribute("aria-colspan", &colspan)) {
4898 base::string16 value_text = GetValueText(); 4920 SanitizeStringAttributeForIA2(colspan, &colspan);
4899 SanitizeStringAttributeForIA2(value_text, &value_text); 4921 win_attributes_->ia2_attributes.push_back(L"colspan:" + colspan);
4900 win_attributes_->ia2_attributes.push_back(L"valuetext:" + value_text); 4922 }
4923 // Expose rowspan attribute.
4924 base::string16 rowspan;
4925 if (GetHtmlAttribute("aria-rowspan", &rowspan)) {
4926 SanitizeStringAttributeForIA2(rowspan, &rowspan);
4927 win_attributes_->ia2_attributes.push_back(L"rowspan:" + rowspan);
4928 }
4901 } 4929 }
4902 4930
4903 // Expose dropeffect attribute. 4931 // Expose dropeffect attribute.
4904 base::string16 drop_effect; 4932 base::string16 drop_effect;
4905 if (GetHtmlAttribute("aria-dropeffect", &drop_effect)) { 4933 if (GetHtmlAttribute("aria-dropeffect", &drop_effect)) {
4906 SanitizeStringAttributeForIA2(drop_effect, &drop_effect); 4934 SanitizeStringAttributeForIA2(drop_effect, &drop_effect);
4907 win_attributes_->ia2_attributes.push_back(L"dropeffect:" + drop_effect); 4935 win_attributes_->ia2_attributes.push_back(L"dropeffect:" + drop_effect);
4908 } 4936 }
4909 4937
4910 // Expose grabbed attribute. 4938 // Expose grabbed attribute.
(...skipping 621 matching lines...) Expand 10 before | Expand all | Expand 10 after
5532 return static_cast<BrowserAccessibilityWin*>(obj); 5560 return static_cast<BrowserAccessibilityWin*>(obj);
5533 } 5561 }
5534 5562
5535 const BrowserAccessibilityWin* 5563 const BrowserAccessibilityWin*
5536 ToBrowserAccessibilityWin(const BrowserAccessibility* obj) { 5564 ToBrowserAccessibilityWin(const BrowserAccessibility* obj) {
5537 DCHECK(!obj || obj->IsNative()); 5565 DCHECK(!obj || obj->IsNative());
5538 return static_cast<const BrowserAccessibilityWin*>(obj); 5566 return static_cast<const BrowserAccessibilityWin*>(obj);
5539 } 5567 }
5540 5568
5541 } // namespace content 5569 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698