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

Side by Side Diff: content/test/accessibility_test_utils_win.cc

Issue 10826311: Move the corresponding cc files from content\test to be alongside their headers in content\public\t… (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 8 years, 4 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 | Annotate | Revision Log
« no previous file with comments | « content/test/DEPS ('k') | content/test/browser_test_base.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "content/public/test/accessibility_test_utils_win.h"
6
7 #include <oleacc.h>
8
9 #include <map>
10 #include <string>
11
12 #include "base/memory/singleton.h"
13 #include "base/string_util.h"
14 #include "third_party/iaccessible2/ia2_api_all.h"
15
16 namespace {
17
18 class AccessibilityRoleStateMap {
19 public:
20 static AccessibilityRoleStateMap* GetInstance();
21
22 std::map<int32, string16> ia_role_string_map;
23 std::map<int32, string16> ia2_role_string_map;
24 std::map<int32, string16> ia_state_string_map;
25 std::map<int32, string16> ia2_state_string_map;
26
27 private:
28 AccessibilityRoleStateMap();
29 virtual ~AccessibilityRoleStateMap() {}
30
31 friend struct DefaultSingletonTraits<AccessibilityRoleStateMap>;
32
33 DISALLOW_COPY_AND_ASSIGN(AccessibilityRoleStateMap);
34 };
35
36 // static
37 AccessibilityRoleStateMap* AccessibilityRoleStateMap::GetInstance() {
38 return Singleton<AccessibilityRoleStateMap,
39 LeakySingletonTraits<AccessibilityRoleStateMap> >::get();
40 }
41
42 AccessibilityRoleStateMap::AccessibilityRoleStateMap() {
43 // Convenience macros for generating readable strings.
44 #define IA_ROLE_MAP(x) ia_role_string_map[x] = L#x; \
45 ia2_role_string_map[x] = L#x;
46 #define IA2_ROLE_MAP(x) ia2_role_string_map[x] = L#x;
47 #define IA_STATE_MAP(x) ia_state_string_map[STATE_SYSTEM_##x] = L#x;
48 #define IA2_STATE_MAP(x) ia2_state_string_map[x] = L#x;
49
50 // MSAA / IAccessible roles. Each one of these is also a valid
51 // IAccessible2 role, the IA_ROLE_MAP macro adds it to both.
52 IA_ROLE_MAP(ROLE_SYSTEM_ALERT)
53 IA_ROLE_MAP(ROLE_SYSTEM_ANIMATION)
54 IA_ROLE_MAP(ROLE_SYSTEM_APPLICATION)
55 IA_ROLE_MAP(ROLE_SYSTEM_BORDER)
56 IA_ROLE_MAP(ROLE_SYSTEM_BUTTONDROPDOWN)
57 IA_ROLE_MAP(ROLE_SYSTEM_BUTTONDROPDOWNGRID)
58 IA_ROLE_MAP(ROLE_SYSTEM_BUTTONMENU)
59 IA_ROLE_MAP(ROLE_SYSTEM_CARET)
60 IA_ROLE_MAP(ROLE_SYSTEM_CELL)
61 IA_ROLE_MAP(ROLE_SYSTEM_CHARACTER)
62 IA_ROLE_MAP(ROLE_SYSTEM_CHART)
63 IA_ROLE_MAP(ROLE_SYSTEM_CHECKBUTTON)
64 IA_ROLE_MAP(ROLE_SYSTEM_CLIENT)
65 IA_ROLE_MAP(ROLE_SYSTEM_CLOCK)
66 IA_ROLE_MAP(ROLE_SYSTEM_COLUMN)
67 IA_ROLE_MAP(ROLE_SYSTEM_COLUMNHEADER)
68 IA_ROLE_MAP(ROLE_SYSTEM_COMBOBOX)
69 IA_ROLE_MAP(ROLE_SYSTEM_CURSOR)
70 IA_ROLE_MAP(ROLE_SYSTEM_DIAGRAM)
71 IA_ROLE_MAP(ROLE_SYSTEM_DIAL)
72 IA_ROLE_MAP(ROLE_SYSTEM_DIALOG)
73 IA_ROLE_MAP(ROLE_SYSTEM_DOCUMENT)
74 IA_ROLE_MAP(ROLE_SYSTEM_DROPLIST)
75 IA_ROLE_MAP(ROLE_SYSTEM_EQUATION)
76 IA_ROLE_MAP(ROLE_SYSTEM_GRAPHIC)
77 IA_ROLE_MAP(ROLE_SYSTEM_GRIP)
78 IA_ROLE_MAP(ROLE_SYSTEM_GROUPING)
79 IA_ROLE_MAP(ROLE_SYSTEM_HELPBALLOON)
80 IA_ROLE_MAP(ROLE_SYSTEM_HOTKEYFIELD)
81 IA_ROLE_MAP(ROLE_SYSTEM_INDICATOR)
82 IA_ROLE_MAP(ROLE_SYSTEM_IPADDRESS)
83 IA_ROLE_MAP(ROLE_SYSTEM_LINK)
84 IA_ROLE_MAP(ROLE_SYSTEM_LIST)
85 IA_ROLE_MAP(ROLE_SYSTEM_LISTITEM)
86 IA_ROLE_MAP(ROLE_SYSTEM_MENUBAR)
87 IA_ROLE_MAP(ROLE_SYSTEM_MENUITEM)
88 IA_ROLE_MAP(ROLE_SYSTEM_MENUPOPUP)
89 IA_ROLE_MAP(ROLE_SYSTEM_OUTLINE)
90 IA_ROLE_MAP(ROLE_SYSTEM_OUTLINEBUTTON)
91 IA_ROLE_MAP(ROLE_SYSTEM_OUTLINEITEM)
92 IA_ROLE_MAP(ROLE_SYSTEM_PAGETAB)
93 IA_ROLE_MAP(ROLE_SYSTEM_PAGETABLIST)
94 IA_ROLE_MAP(ROLE_SYSTEM_PANE)
95 IA_ROLE_MAP(ROLE_SYSTEM_PROGRESSBAR)
96 IA_ROLE_MAP(ROLE_SYSTEM_PROPERTYPAGE)
97 IA_ROLE_MAP(ROLE_SYSTEM_PUSHBUTTON)
98 IA_ROLE_MAP(ROLE_SYSTEM_RADIOBUTTON)
99 IA_ROLE_MAP(ROLE_SYSTEM_ROW)
100 IA_ROLE_MAP(ROLE_SYSTEM_ROWHEADER)
101 IA_ROLE_MAP(ROLE_SYSTEM_SCROLLBAR)
102 IA_ROLE_MAP(ROLE_SYSTEM_SEPARATOR)
103 IA_ROLE_MAP(ROLE_SYSTEM_SLIDER)
104 IA_ROLE_MAP(ROLE_SYSTEM_SOUND)
105 IA_ROLE_MAP(ROLE_SYSTEM_SPINBUTTON)
106 IA_ROLE_MAP(ROLE_SYSTEM_SPLITBUTTON)
107 IA_ROLE_MAP(ROLE_SYSTEM_STATICTEXT)
108 IA_ROLE_MAP(ROLE_SYSTEM_STATUSBAR)
109 IA_ROLE_MAP(ROLE_SYSTEM_TABLE)
110 IA_ROLE_MAP(ROLE_SYSTEM_TEXT)
111 IA_ROLE_MAP(ROLE_SYSTEM_TITLEBAR)
112 IA_ROLE_MAP(ROLE_SYSTEM_TOOLBAR)
113 IA_ROLE_MAP(ROLE_SYSTEM_TOOLTIP)
114 IA_ROLE_MAP(ROLE_SYSTEM_WHITESPACE)
115 IA_ROLE_MAP(ROLE_SYSTEM_WINDOW)
116
117 // IAccessible2 roles.
118 IA2_ROLE_MAP(IA2_ROLE_CANVAS)
119 IA2_ROLE_MAP(IA2_ROLE_CAPTION)
120 IA2_ROLE_MAP(IA2_ROLE_CHECK_MENU_ITEM)
121 IA2_ROLE_MAP(IA2_ROLE_COLOR_CHOOSER)
122 IA2_ROLE_MAP(IA2_ROLE_DATE_EDITOR)
123 IA2_ROLE_MAP(IA2_ROLE_DESKTOP_ICON)
124 IA2_ROLE_MAP(IA2_ROLE_DESKTOP_PANE)
125 IA2_ROLE_MAP(IA2_ROLE_DIRECTORY_PANE)
126 IA2_ROLE_MAP(IA2_ROLE_EDITBAR)
127 IA2_ROLE_MAP(IA2_ROLE_EMBEDDED_OBJECT)
128 IA2_ROLE_MAP(IA2_ROLE_ENDNOTE)
129 IA2_ROLE_MAP(IA2_ROLE_FILE_CHOOSER)
130 IA2_ROLE_MAP(IA2_ROLE_FONT_CHOOSER)
131 IA2_ROLE_MAP(IA2_ROLE_FOOTER)
132 IA2_ROLE_MAP(IA2_ROLE_FOOTNOTE)
133 IA2_ROLE_MAP(IA2_ROLE_FORM)
134 IA2_ROLE_MAP(IA2_ROLE_FRAME)
135 IA2_ROLE_MAP(IA2_ROLE_GLASS_PANE)
136 IA2_ROLE_MAP(IA2_ROLE_HEADER)
137 IA2_ROLE_MAP(IA2_ROLE_HEADING)
138 IA2_ROLE_MAP(IA2_ROLE_ICON)
139 IA2_ROLE_MAP(IA2_ROLE_IMAGE_MAP)
140 IA2_ROLE_MAP(IA2_ROLE_INPUT_METHOD_WINDOW)
141 IA2_ROLE_MAP(IA2_ROLE_INTERNAL_FRAME)
142 IA2_ROLE_MAP(IA2_ROLE_LABEL)
143 IA2_ROLE_MAP(IA2_ROLE_LAYERED_PANE)
144 IA2_ROLE_MAP(IA2_ROLE_NOTE)
145 IA2_ROLE_MAP(IA2_ROLE_OPTION_PANE)
146 IA2_ROLE_MAP(IA2_ROLE_PAGE)
147 IA2_ROLE_MAP(IA2_ROLE_PARAGRAPH)
148 IA2_ROLE_MAP(IA2_ROLE_RADIO_MENU_ITEM)
149 IA2_ROLE_MAP(IA2_ROLE_REDUNDANT_OBJECT)
150 IA2_ROLE_MAP(IA2_ROLE_ROOT_PANE)
151 IA2_ROLE_MAP(IA2_ROLE_RULER)
152 IA2_ROLE_MAP(IA2_ROLE_SCROLL_PANE)
153 IA2_ROLE_MAP(IA2_ROLE_SECTION)
154 IA2_ROLE_MAP(IA2_ROLE_SHAPE)
155 IA2_ROLE_MAP(IA2_ROLE_SPLIT_PANE)
156 IA2_ROLE_MAP(IA2_ROLE_TEAR_OFF_MENU)
157 IA2_ROLE_MAP(IA2_ROLE_TERMINAL)
158 IA2_ROLE_MAP(IA2_ROLE_TEXT_FRAME)
159 IA2_ROLE_MAP(IA2_ROLE_TOGGLE_BUTTON)
160 IA2_ROLE_MAP(IA2_ROLE_UNKNOWN)
161 IA2_ROLE_MAP(IA2_ROLE_VIEW_PORT)
162
163 // MSAA / IAccessible states. Unlike roles, these are not also IA2 states.
164 IA_STATE_MAP(ALERT_HIGH)
165 IA_STATE_MAP(ALERT_LOW)
166 IA_STATE_MAP(ALERT_MEDIUM)
167 IA_STATE_MAP(ANIMATED)
168 IA_STATE_MAP(BUSY)
169 IA_STATE_MAP(CHECKED)
170 IA_STATE_MAP(COLLAPSED)
171 IA_STATE_MAP(DEFAULT)
172 IA_STATE_MAP(EXPANDED)
173 IA_STATE_MAP(EXTSELECTABLE)
174 IA_STATE_MAP(FLOATING)
175 IA_STATE_MAP(FOCUSABLE)
176 IA_STATE_MAP(FOCUSED)
177 IA_STATE_MAP(HASPOPUP)
178 IA_STATE_MAP(HOTTRACKED)
179 IA_STATE_MAP(INVISIBLE)
180 IA_STATE_MAP(LINKED)
181 IA_STATE_MAP(MARQUEED)
182 IA_STATE_MAP(MIXED)
183 IA_STATE_MAP(MOVEABLE)
184 IA_STATE_MAP(MULTISELECTABLE)
185 IA_STATE_MAP(PRESSED)
186 IA_STATE_MAP(PROTECTED)
187 IA_STATE_MAP(READONLY)
188 IA_STATE_MAP(SELECTABLE)
189 IA_STATE_MAP(SELECTED)
190 IA_STATE_MAP(SELFVOICING)
191 IA_STATE_MAP(SIZEABLE)
192 IA_STATE_MAP(TRAVERSED)
193 IA_STATE_MAP(UNAVAILABLE)
194
195 // Untested states include those that would be repeated on nearly every node,
196 // or would vary based on window size.
197 // IA_STATE_MAP(OFFSCREEN) // Untested.
198
199 // IAccessible2 states.
200 IA2_STATE_MAP(IA2_STATE_ACTIVE)
201 IA2_STATE_MAP(IA2_STATE_ARMED)
202 IA2_STATE_MAP(IA2_STATE_DEFUNCT)
203 IA2_STATE_MAP(IA2_STATE_EDITABLE)
204 IA2_STATE_MAP(IA2_STATE_ICONIFIED)
205 IA2_STATE_MAP(IA2_STATE_INVALID_ENTRY)
206 IA2_STATE_MAP(IA2_STATE_MANAGES_DESCENDANTS)
207 IA2_STATE_MAP(IA2_STATE_MODAL)
208 IA2_STATE_MAP(IA2_STATE_MULTI_LINE)
209 IA2_STATE_MAP(IA2_STATE_REQUIRED)
210 IA2_STATE_MAP(IA2_STATE_SELECTABLE_TEXT)
211 IA2_STATE_MAP(IA2_STATE_SINGLE_LINE)
212 IA2_STATE_MAP(IA2_STATE_STALE)
213 IA2_STATE_MAP(IA2_STATE_SUPPORTS_AUTOCOMPLETION)
214 IA2_STATE_MAP(IA2_STATE_TRANSIENT)
215
216 // Untested states include those that would be repeated on nearly every node,
217 // or would vary based on window size.
218 // IA2_STATE_MAP(IA2_STATE_HORIZONTAL) // Untested.
219 // IA2_STATE_MAP(IA2_STATE_OPAQUE) // Untested.
220 // IA2_STATE_MAP(IA2_STATE_VERTICAL) // Untested.
221 }
222
223 } // namespace.
224
225 string16 IAccessibleRoleToString(int32 ia_role) {
226 return AccessibilityRoleStateMap::GetInstance()->ia_role_string_map[ia_role];
227 }
228
229 string16 IAccessible2RoleToString(int32 ia_role) {
230 return AccessibilityRoleStateMap::GetInstance()->ia2_role_string_map[ia_role];
231 }
232
233 void IAccessibleStateToStringVector(int32 ia_state,
234 std::vector<string16>* result) {
235 const std::map<int32, string16>& state_string_map =
236 AccessibilityRoleStateMap::GetInstance()->ia_state_string_map;
237 std::map<int32, string16>::const_iterator it;
238 for (it = state_string_map.begin(); it != state_string_map.end(); ++it) {
239 if (it->first & ia_state)
240 result->push_back(it->second);
241 }
242 }
243
244 string16 IAccessibleStateToString(int32 ia_state) {
245 std::vector<string16> strings;
246 IAccessibleStateToStringVector(ia_state, &strings);
247 return JoinString(strings, ',');
248 }
249
250 void IAccessible2StateToStringVector(int32 ia2_state,
251 std::vector<string16>* result) {
252 const std::map<int32, string16>& state_string_map =
253 AccessibilityRoleStateMap::GetInstance()->ia2_state_string_map;
254 std::map<int32, string16>::const_iterator it;
255 for (it = state_string_map.begin(); it != state_string_map.end(); ++it) {
256 if (it->first & ia2_state)
257 result->push_back(it->second);
258 }
259 }
260
261 string16 IAccessible2StateToString(int32 ia2_state) {
262 std::vector<string16> strings;
263 IAccessible2StateToStringVector(ia2_state, &strings);
264 return JoinString(strings, ',');
265 }
OLDNEW
« no previous file with comments | « content/test/DEPS ('k') | content/test/browser_test_base.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698