diff options
Diffstat (limited to 'views/accessibility')
-rw-r--r-- | views/accessibility/accessibility_types.h | 33 | ||||
-rw-r--r-- | views/accessibility/view_accessibility.cc | 35 |
2 files changed, 49 insertions, 19 deletions
diff --git a/views/accessibility/accessibility_types.h b/views/accessibility/accessibility_types.h index 79b9e03..83c7aa7 100644 --- a/views/accessibility/accessibility_types.h +++ b/views/accessibility/accessibility_types.h @@ -1,4 +1,4 @@ -// Copyright (c) 2006-2009 The Chromium Authors. All rights reserved. +// Copyright (c) 2010 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -15,6 +15,21 @@ //////////////////////////////////////////////////////////////////////////////// class AccessibilityTypes { public: + + + // This defines states of the supported accessibility roles in our + // Views (e.g. used in View::GetAccessibleState). Any interface using roles + // must provide a conversion to its own roles (see e.g. + // ViewAccessibility::get_accState and ViewAccessibility::MSAAState). + typedef uint32 State; + enum StateFlag { + STATE_CHECKED = 1 << 0, + STATE_HASPOPUP = 1 << 1, + STATE_LINKED = 1 << 2, + STATE_PROTECTED = 1 << 3, + STATE_READONLY = 1 << 4 + }; + // This defines an enumeration of the supported accessibility roles in our // Views (e.g. used in View::GetAccessibleRole). Any interface using roles // must provide a conversion to its own roles (see e.g. @@ -29,26 +44,24 @@ class AccessibilityTypes { ROLE_GRAPHIC, ROLE_GROUPING, ROLE_LINK, + ROLE_MENUITEM, + ROLE_MENUPOPUP, + ROLE_OUTLINE, + ROLE_OUTLINEITEM, ROLE_PAGETAB, ROLE_PAGETABLIST, ROLE_PANE, + ROLE_PROGRESSBAR, ROLE_PUSHBUTTON, + ROLE_SCROLLBAR, ROLE_SEPARATOR, + ROLE_STATICTEXT, ROLE_TEXT, ROLE_TITLEBAR, ROLE_TOOLBAR, ROLE_WINDOW }; - // This defines an enumeration of the supported accessibility roles in our - // Views (e.g. used in View::GetAccessibleState). Any interface using roles - // must provide a conversion to its own roles (see e.g. - // ViewAccessibility::get_accState and ViewAccessibility::MSAAState). - enum State { - STATE_HASPOPUP, - STATE_READONLY - }; - private: // Do not instantiate this class. AccessibilityTypes() {} diff --git a/views/accessibility/view_accessibility.cc b/views/accessibility/view_accessibility.cc index 9d8861a..f9dc5c6 100644 --- a/views/accessibility/view_accessibility.cc +++ b/views/accessibility/view_accessibility.cc @@ -717,16 +717,30 @@ int32 ViewAccessibility::MSAARole(AccessibilityTypes::Role role) { return ROLE_SYSTEM_GROUPING; case AccessibilityTypes::ROLE_LINK: return ROLE_SYSTEM_LINK; + case AccessibilityTypes::ROLE_MENUITEM: + return ROLE_SYSTEM_MENUITEM; + case AccessibilityTypes::ROLE_MENUPOPUP: + return ROLE_SYSTEM_MENUPOPUP; + case AccessibilityTypes::ROLE_OUTLINE: + return ROLE_SYSTEM_OUTLINE; + case AccessibilityTypes::ROLE_OUTLINEITEM: + return ROLE_SYSTEM_OUTLINEITEM; case AccessibilityTypes::ROLE_PAGETAB: return ROLE_SYSTEM_PAGETAB; case AccessibilityTypes::ROLE_PAGETABLIST: return ROLE_SYSTEM_PAGETABLIST; case AccessibilityTypes::ROLE_PANE: return ROLE_SYSTEM_PANE; + case AccessibilityTypes::ROLE_PROGRESSBAR: + return ROLE_SYSTEM_PROGRESSBAR; case AccessibilityTypes::ROLE_PUSHBUTTON: return ROLE_SYSTEM_PUSHBUTTON; + case AccessibilityTypes::ROLE_SCROLLBAR: + return ROLE_SYSTEM_SCROLLBAR; case AccessibilityTypes::ROLE_SEPARATOR: return ROLE_SYSTEM_SEPARATOR; + case AccessibilityTypes::ROLE_STATICTEXT: + return ROLE_SYSTEM_STATICTEXT; case AccessibilityTypes::ROLE_TEXT: return ROLE_SYSTEM_TEXT; case AccessibilityTypes::ROLE_TITLEBAR: @@ -743,15 +757,18 @@ int32 ViewAccessibility::MSAARole(AccessibilityTypes::Role role) { } int32 ViewAccessibility::MSAAState(AccessibilityTypes::State state) { - switch (state) { - case AccessibilityTypes::STATE_HASPOPUP : - return STATE_SYSTEM_HASPOPUP; - case AccessibilityTypes::STATE_READONLY : - return STATE_SYSTEM_READONLY; - default : - // No default state in MSAA. - return 0; - } + int32 msaa_state = 0; + if (state & AccessibilityTypes::STATE_CHECKED) + msaa_state |= STATE_SYSTEM_CHECKED; + if (state & AccessibilityTypes::STATE_HASPOPUP) + msaa_state |= STATE_SYSTEM_HASPOPUP; + if (state & AccessibilityTypes::STATE_LINKED) + msaa_state |= STATE_SYSTEM_LINKED; + if (state & AccessibilityTypes::STATE_PROTECTED) + msaa_state |= STATE_SYSTEM_PROTECTED; + if (state & AccessibilityTypes::STATE_READONLY) + msaa_state |= STATE_SYSTEM_READONLY; + return msaa_state; } // IAccessible functions not supported. |