OLD | NEW |
---|---|
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 "base/strings/string_number_conversions.h" | 10 #include "base/strings/string_number_conversions.h" |
(...skipping 875 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
886 } else { | 886 } else { |
887 return E_INVALIDARG; | 887 return E_INVALIDARG; |
888 } | 888 } |
889 | 889 |
890 manager()->ScrollToPoint(*this, scroll_to); | 890 manager()->ScrollToPoint(*this, scroll_to); |
891 manager()->ToBrowserAccessibilityManagerWin()->TrackScrollingObject(this); | 891 manager()->ToBrowserAccessibilityManagerWin()->TrackScrollingObject(this); |
892 | 892 |
893 return S_OK; | 893 return S_OK; |
894 } | 894 } |
895 | 895 |
896 STDMETHODIMP BrowserAccessibilityWin::get_groupPosition( | 896 STDMETHODIMP BrowserAccessibilityWin::get_groupPosition( |
dmazzoni
2015/04/09 06:31:22
aria-posinset should also be exposed here.
| |
897 LONG* group_level, | 897 LONG* group_level, |
898 LONG* similar_items_in_group, | 898 LONG* similar_items_in_group, |
899 LONG* position_in_group) { | 899 LONG* position_in_group) { |
900 if (!instance_active()) | 900 if (!instance_active()) |
901 return E_FAIL; | 901 return E_FAIL; |
902 | 902 |
903 if (!group_level || !similar_items_in_group || !position_in_group) | 903 if (!group_level || !similar_items_in_group || !position_in_group) |
904 return E_INVALIDARG; | 904 return E_INVALIDARG; |
905 | 905 |
906 if (GetRole() == ui::AX_ROLE_LIST_BOX_OPTION && | 906 if (GetRole() == ui::AX_ROLE_LIST_BOX_OPTION && |
(...skipping 2092 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2999 StringAttributeToIA2(ui::AX_ATTR_HTML_TAG, "tag"); | 2999 StringAttributeToIA2(ui::AX_ATTR_HTML_TAG, "tag"); |
3000 StringAttributeToIA2(ui::AX_ATTR_ROLE, "xml-roles"); | 3000 StringAttributeToIA2(ui::AX_ATTR_ROLE, "xml-roles"); |
3001 | 3001 |
3002 // Expose "level" attribute for headings, trees, etc. | 3002 // Expose "level" attribute for headings, trees, etc. |
3003 IntAttributeToIA2(ui::AX_ATTR_HIERARCHICAL_LEVEL, "level"); | 3003 IntAttributeToIA2(ui::AX_ATTR_HIERARCHICAL_LEVEL, "level"); |
3004 | 3004 |
3005 // Expose the set size and position in set for listbox options. | 3005 // Expose the set size and position in set for listbox options. |
3006 if (GetRole() == ui::AX_ROLE_LIST_BOX_OPTION && | 3006 if (GetRole() == ui::AX_ROLE_LIST_BOX_OPTION && |
3007 GetParent() && | 3007 GetParent() && |
3008 GetParent()->GetRole() == ui::AX_ROLE_LIST_BOX) { | 3008 GetParent()->GetRole() == ui::AX_ROLE_LIST_BOX) { |
3009 win_attributes_->ia2_attributes.push_back( | 3009 if (HasIntAttribute(ui::AX_ATTR_SET_SIZE)){ |
3010 L"setsize:" + base::IntToString16(GetParent()->PlatformChildCount())); | 3010 IntAttributeToIA2(ui::AX_ATTR_SET_SIZE, "setsize"); |
3011 win_attributes_->ia2_attributes.push_back( | 3011 } else { |
3012 L"setsize:" + base::IntToString16(GetIndexInParent() + 1)); | 3012 win_attributes_->ia2_attributes.push_back( |
3013 L"setsize:" + base::IntToString16(GetParent()->PlatformChildCount())); | |
dmazzoni
2015/04/09 06:31:22
I think it'd be nicer if this logic was all done i
| |
3014 } | |
3015 | |
3016 if (HasIntAttribute(ui::AX_ATTR_POS_IN_SET)){ | |
3017 IntAttributeToIA2(ui::AX_ATTR_POS_IN_SET, "posinset"); | |
3018 } else { | |
3019 win_attributes_->ia2_attributes.push_back( | |
3020 L"posinset:" + base::IntToString16(GetIndexInParent() + 1)); | |
3021 } | |
3013 } | 3022 } |
3014 | 3023 |
3015 if (ia_role() == ROLE_SYSTEM_CHECKBUTTON || | 3024 if (ia_role() == ROLE_SYSTEM_CHECKBUTTON || |
3016 ia_role() == ROLE_SYSTEM_RADIOBUTTON || | 3025 ia_role() == ROLE_SYSTEM_RADIOBUTTON || |
3017 ia2_role() == IA2_ROLE_CHECK_MENU_ITEM || | 3026 ia2_role() == IA2_ROLE_CHECK_MENU_ITEM || |
3018 ia2_role() == IA2_ROLE_RADIO_MENU_ITEM || | 3027 ia2_role() == IA2_ROLE_RADIO_MENU_ITEM || |
3019 ia2_role() == IA2_ROLE_TOGGLE_BUTTON) { | 3028 ia2_role() == IA2_ROLE_TOGGLE_BUTTON) { |
3020 win_attributes_->ia2_attributes.push_back(L"checkable:true"); | 3029 win_attributes_->ia2_attributes.push_back(L"checkable:true"); |
3021 } | 3030 } |
3022 | 3031 |
(...skipping 1121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
4144 ia2_role = ia_role; | 4153 ia2_role = ia_role; |
4145 | 4154 |
4146 win_attributes_->ia_role = ia_role; | 4155 win_attributes_->ia_role = ia_role; |
4147 win_attributes_->ia_state = ia_state; | 4156 win_attributes_->ia_state = ia_state; |
4148 win_attributes_->role_name = role_name; | 4157 win_attributes_->role_name = role_name; |
4149 win_attributes_->ia2_role = ia2_role; | 4158 win_attributes_->ia2_role = ia2_role; |
4150 win_attributes_->ia2_state = ia2_state; | 4159 win_attributes_->ia2_state = ia2_state; |
4151 } | 4160 } |
4152 | 4161 |
4153 } // namespace content | 4162 } // namespace content |
OLD | NEW |