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

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

Issue 790943002: Add DumpAccessibilityEvents test framework. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@dump_acc_events_1
Patch Set: Fix compile errors Created 6 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/accessibility_tree_formatter_utils_win.h " 5 #include "content/browser/accessibility/accessibility_tree_formatter_utils_win.h "
6 6
7 #include <oleacc.h> 7 #include <oleacc.h>
8 8
9 #include <map> 9 #include <map>
10 #include <string> 10 #include <string>
11 11
12 #include "base/memory/singleton.h" 12 #include "base/memory/singleton.h"
13 #include "base/strings/string_util.h" 13 #include "base/strings/string_util.h"
14 #include "third_party/iaccessible2/ia2_api_all.h" 14 #include "third_party/iaccessible2/ia2_api_all.h"
15 15
16 namespace content { 16 namespace content {
17 namespace { 17 namespace {
18 18
19 class AccessibilityRoleStateMap { 19 class AccessibilityEnumMap {
20 public: 20 public:
21 static AccessibilityRoleStateMap* GetInstance(); 21 static AccessibilityEnumMap* GetInstance();
22 22
23 std::map<int32, base::string16> ia_role_string_map; 23 std::map<int32, base::string16> ia_role_string_map;
24 std::map<int32, base::string16> ia2_role_string_map; 24 std::map<int32, base::string16> ia2_role_string_map;
25 std::map<int32, base::string16> ia_state_string_map; 25 std::map<int32, base::string16> ia_state_string_map;
26 std::map<int32, base::string16> ia2_state_string_map; 26 std::map<int32, base::string16> ia2_state_string_map;
27 std::map<int32, base::string16> event_string_map;
27 28
28 private: 29 private:
29 AccessibilityRoleStateMap(); 30 AccessibilityEnumMap();
30 virtual ~AccessibilityRoleStateMap() {} 31 virtual ~AccessibilityEnumMap() {}
31 32
32 friend struct DefaultSingletonTraits<AccessibilityRoleStateMap>; 33 friend struct DefaultSingletonTraits<AccessibilityEnumMap>;
33 34
34 DISALLOW_COPY_AND_ASSIGN(AccessibilityRoleStateMap); 35 DISALLOW_COPY_AND_ASSIGN(AccessibilityEnumMap);
35 }; 36 };
36 37
37 // static 38 // static
38 AccessibilityRoleStateMap* AccessibilityRoleStateMap::GetInstance() { 39 AccessibilityEnumMap* AccessibilityEnumMap::GetInstance() {
39 return Singleton<AccessibilityRoleStateMap, 40 return Singleton<AccessibilityEnumMap,
40 LeakySingletonTraits<AccessibilityRoleStateMap> >::get(); 41 LeakySingletonTraits<AccessibilityEnumMap> >::get();
41 } 42 }
42 43
43 AccessibilityRoleStateMap::AccessibilityRoleStateMap() { 44 AccessibilityEnumMap::AccessibilityEnumMap() {
44 // Convenience macros for generating readable strings. 45 // Convenience macros for generating readable strings.
45 #define IA_ROLE_MAP(x) ia_role_string_map[x] = L###x; \ 46 #define IA_ROLE_MAP(x) ia_role_string_map[x] = L###x; \
46 ia2_role_string_map[x] = L###x; 47 ia2_role_string_map[x] = L###x;
47 #define IA2_ROLE_MAP(x) ia2_role_string_map[x] = L###x; 48 #define IA2_ROLE_MAP(x) ia2_role_string_map[x] = L###x;
48 #define IA_STATE_MAP(x) ia_state_string_map[STATE_SYSTEM_##x] = L###x; 49 #define IA_STATE_MAP(x) ia_state_string_map[STATE_SYSTEM_##x] = L###x;
49 #define IA2_STATE_MAP(x) ia2_state_string_map[x] = L###x; 50 #define IA2_STATE_MAP(x) ia2_state_string_map[x] = L###x;
51 #define EVENT_MAP(x) event_string_map[x] = L###x;
50 52
51 // MSAA / IAccessible roles. Each one of these is also a valid 53 // MSAA / IAccessible roles. Each one of these is also a valid
52 // IAccessible2 role, the IA_ROLE_MAP macro adds it to both. 54 // IAccessible2 role, the IA_ROLE_MAP macro adds it to both.
53 IA_ROLE_MAP(ROLE_SYSTEM_ALERT) 55 IA_ROLE_MAP(ROLE_SYSTEM_ALERT)
54 IA_ROLE_MAP(ROLE_SYSTEM_ANIMATION) 56 IA_ROLE_MAP(ROLE_SYSTEM_ANIMATION)
55 IA_ROLE_MAP(ROLE_SYSTEM_APPLICATION) 57 IA_ROLE_MAP(ROLE_SYSTEM_APPLICATION)
56 IA_ROLE_MAP(ROLE_SYSTEM_BORDER) 58 IA_ROLE_MAP(ROLE_SYSTEM_BORDER)
57 IA_ROLE_MAP(ROLE_SYSTEM_BUTTONDROPDOWN) 59 IA_ROLE_MAP(ROLE_SYSTEM_BUTTONDROPDOWN)
58 IA_ROLE_MAP(ROLE_SYSTEM_BUTTONDROPDOWNGRID) 60 IA_ROLE_MAP(ROLE_SYSTEM_BUTTONDROPDOWNGRID)
59 IA_ROLE_MAP(ROLE_SYSTEM_BUTTONMENU) 61 IA_ROLE_MAP(ROLE_SYSTEM_BUTTONMENU)
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
210 IA2_STATE_MAP(IA2_STATE_SELECTABLE_TEXT) 212 IA2_STATE_MAP(IA2_STATE_SELECTABLE_TEXT)
211 IA2_STATE_MAP(IA2_STATE_SINGLE_LINE) 213 IA2_STATE_MAP(IA2_STATE_SINGLE_LINE)
212 IA2_STATE_MAP(IA2_STATE_STALE) 214 IA2_STATE_MAP(IA2_STATE_STALE)
213 IA2_STATE_MAP(IA2_STATE_SUPPORTS_AUTOCOMPLETION) 215 IA2_STATE_MAP(IA2_STATE_SUPPORTS_AUTOCOMPLETION)
214 IA2_STATE_MAP(IA2_STATE_TRANSIENT) 216 IA2_STATE_MAP(IA2_STATE_TRANSIENT)
215 IA2_STATE_MAP(IA2_STATE_VERTICAL) 217 IA2_STATE_MAP(IA2_STATE_VERTICAL)
216 218
217 // Untested states include those that would be repeated on nearly every node, 219 // Untested states include those that would be repeated on nearly every node,
218 // or would vary based on window size. 220 // or would vary based on window size.
219 // IA2_STATE_MAP(IA2_STATE_OPAQUE) // Untested. 221 // IA2_STATE_MAP(IA2_STATE_OPAQUE) // Untested.
222
223 EVENT_MAP(EVENT_OBJECT_CREATE)
224 EVENT_MAP(EVENT_OBJECT_DESTROY)
225 EVENT_MAP(EVENT_OBJECT_SHOW)
226 EVENT_MAP(EVENT_OBJECT_HIDE)
227 EVENT_MAP(EVENT_OBJECT_REORDER)
228 EVENT_MAP(EVENT_OBJECT_FOCUS)
229 EVENT_MAP(EVENT_OBJECT_SELECTION)
230 EVENT_MAP(EVENT_OBJECT_SELECTIONADD)
231 EVENT_MAP(EVENT_OBJECT_SELECTIONREMOVE)
232 EVENT_MAP(EVENT_OBJECT_SELECTIONWITHIN)
233 EVENT_MAP(EVENT_OBJECT_STATECHANGE)
234 EVENT_MAP(EVENT_OBJECT_LOCATIONCHANGE)
235 EVENT_MAP(EVENT_OBJECT_NAMECHANGE)
236 EVENT_MAP(EVENT_OBJECT_DESCRIPTIONCHANGE)
237 EVENT_MAP(EVENT_OBJECT_VALUECHANGE)
238 EVENT_MAP(EVENT_OBJECT_PARENTCHANGE)
239 EVENT_MAP(EVENT_OBJECT_HELPCHANGE)
240 EVENT_MAP(EVENT_OBJECT_DEFACTIONCHANGE)
241 EVENT_MAP(EVENT_OBJECT_ACCELERATORCHANGE)
242 EVENT_MAP(EVENT_OBJECT_INVOKED)
243 EVENT_MAP(EVENT_OBJECT_TEXTSELECTIONCHANGED)
244 EVENT_MAP(EVENT_OBJECT_CONTENTSCROLLED)
245 EVENT_MAP(EVENT_OBJECT_LIVEREGIONCHANGED)
246 EVENT_MAP(EVENT_OBJECT_HOSTEDOBJECTSINVALIDATED)
247 EVENT_MAP(EVENT_OBJECT_DRAGSTART)
248 EVENT_MAP(EVENT_OBJECT_DRAGCANCEL)
249 EVENT_MAP(EVENT_OBJECT_DRAGCOMPLETE)
250 EVENT_MAP(EVENT_OBJECT_DRAGENTER)
251 EVENT_MAP(EVENT_OBJECT_DRAGLEAVE)
252 EVENT_MAP(EVENT_OBJECT_DRAGDROPPED)
253 EVENT_MAP(EVENT_SYSTEM_ALERT)
254 EVENT_MAP(EVENT_SYSTEM_SCROLLINGSTART)
255 EVENT_MAP(EVENT_SYSTEM_SCROLLINGEND)
256 EVENT_MAP(IA2_EVENT_ACTION_CHANGED)
257 EVENT_MAP(IA2_EVENT_ACTIVE_DECENDENT_CHANGED)
258 EVENT_MAP(IA2_EVENT_ACTIVE_DESCENDANT_CHANGED)
259 EVENT_MAP(IA2_EVENT_DOCUMENT_ATTRIBUTE_CHANGED)
260 EVENT_MAP(IA2_EVENT_DOCUMENT_CONTENT_CHANGED)
261 EVENT_MAP(IA2_EVENT_DOCUMENT_LOAD_COMPLETE)
262 EVENT_MAP(IA2_EVENT_DOCUMENT_LOAD_STOPPED)
263 EVENT_MAP(IA2_EVENT_DOCUMENT_RELOAD)
264 EVENT_MAP(IA2_EVENT_HYPERLINK_END_INDEX_CHANGED)
265 EVENT_MAP(IA2_EVENT_HYPERLINK_NUMBER_OF_ANCHORS_CHANGED)
266 EVENT_MAP(IA2_EVENT_HYPERLINK_SELECTED_LINK_CHANGED)
267 EVENT_MAP(IA2_EVENT_HYPERTEXT_LINK_ACTIVATED)
268 EVENT_MAP(IA2_EVENT_HYPERTEXT_LINK_SELECTED)
269 EVENT_MAP(IA2_EVENT_HYPERLINK_START_INDEX_CHANGED)
270 EVENT_MAP(IA2_EVENT_HYPERTEXT_CHANGED)
271 EVENT_MAP(IA2_EVENT_HYPERTEXT_NLINKS_CHANGED)
272 EVENT_MAP(IA2_EVENT_OBJECT_ATTRIBUTE_CHANGED)
273 EVENT_MAP(IA2_EVENT_PAGE_CHANGED)
274 EVENT_MAP(IA2_EVENT_SECTION_CHANGED)
275 EVENT_MAP(IA2_EVENT_TABLE_CAPTION_CHANGED)
276 EVENT_MAP(IA2_EVENT_TABLE_COLUMN_DESCRIPTION_CHANGED)
277 EVENT_MAP(IA2_EVENT_TABLE_COLUMN_HEADER_CHANGED)
278 EVENT_MAP(IA2_EVENT_TABLE_MODEL_CHANGED)
279 EVENT_MAP(IA2_EVENT_TABLE_ROW_DESCRIPTION_CHANGED)
280 EVENT_MAP(IA2_EVENT_TABLE_ROW_HEADER_CHANGED)
281 EVENT_MAP(IA2_EVENT_TABLE_SUMMARY_CHANGED)
282 EVENT_MAP(IA2_EVENT_TEXT_ATTRIBUTE_CHANGED)
283 EVENT_MAP(IA2_EVENT_TEXT_CARET_MOVED)
284 EVENT_MAP(IA2_EVENT_TEXT_CHANGED)
285 EVENT_MAP(IA2_EVENT_TEXT_COLUMN_CHANGED)
286 EVENT_MAP(IA2_EVENT_TEXT_INSERTED)
287 EVENT_MAP(IA2_EVENT_TEXT_REMOVED)
288 EVENT_MAP(IA2_EVENT_TEXT_UPDATED)
289 EVENT_MAP(IA2_EVENT_TEXT_SELECTION_CHANGED)
290 EVENT_MAP(IA2_EVENT_VISIBLE_DATA_CHANGED)
220 } 291 }
221 292
222 } // namespace. 293 } // namespace.
223 294
224 base::string16 IAccessibleRoleToString(int32 ia_role) { 295 base::string16 IAccessibleRoleToString(int32 ia_role) {
225 return AccessibilityRoleStateMap::GetInstance()->ia_role_string_map[ia_role]; 296 return AccessibilityEnumMap::GetInstance()->ia_role_string_map[ia_role];
226 } 297 }
227 298
228 base::string16 IAccessible2RoleToString(int32 ia_role) { 299 base::string16 IAccessible2RoleToString(int32 ia_role) {
229 return AccessibilityRoleStateMap::GetInstance()->ia2_role_string_map[ia_role]; 300 return AccessibilityEnumMap::GetInstance()->ia2_role_string_map[ia_role];
230 } 301 }
231 302
232 void IAccessibleStateToStringVector(int32 ia_state, 303 void IAccessibleStateToStringVector(int32 ia_state,
233 std::vector<base::string16>* result) { 304 std::vector<base::string16>* result) {
234 const std::map<int32, base::string16>& state_string_map = 305 const std::map<int32, base::string16>& state_string_map =
235 AccessibilityRoleStateMap::GetInstance()->ia_state_string_map; 306 AccessibilityEnumMap::GetInstance()->ia_state_string_map;
236 std::map<int32, base::string16>::const_iterator it; 307 std::map<int32, base::string16>::const_iterator it;
237 for (it = state_string_map.begin(); it != state_string_map.end(); ++it) { 308 for (it = state_string_map.begin(); it != state_string_map.end(); ++it) {
238 if (it->first & ia_state) 309 if (it->first & ia_state)
239 result->push_back(it->second); 310 result->push_back(it->second);
240 } 311 }
241 } 312 }
242 313
243 base::string16 IAccessibleStateToString(int32 ia_state) { 314 base::string16 IAccessibleStateToString(int32 ia_state) {
244 std::vector<base::string16> strings; 315 std::vector<base::string16> strings;
245 IAccessibleStateToStringVector(ia_state, &strings); 316 IAccessibleStateToStringVector(ia_state, &strings);
246 return JoinString(strings, ','); 317 return JoinString(strings, ',');
247 } 318 }
248 319
249 void IAccessible2StateToStringVector(int32 ia2_state, 320 void IAccessible2StateToStringVector(int32 ia2_state,
250 std::vector<base::string16>* result) { 321 std::vector<base::string16>* result) {
251 const std::map<int32, base::string16>& state_string_map = 322 const std::map<int32, base::string16>& state_string_map =
252 AccessibilityRoleStateMap::GetInstance()->ia2_state_string_map; 323 AccessibilityEnumMap::GetInstance()->ia2_state_string_map;
253 std::map<int32, base::string16>::const_iterator it; 324 std::map<int32, base::string16>::const_iterator it;
254 for (it = state_string_map.begin(); it != state_string_map.end(); ++it) { 325 for (it = state_string_map.begin(); it != state_string_map.end(); ++it) {
255 if (it->first & ia2_state) 326 if (it->first & ia2_state)
256 result->push_back(it->second); 327 result->push_back(it->second);
257 } 328 }
258 } 329 }
259 330
260 base::string16 IAccessible2StateToString(int32 ia2_state) { 331 base::string16 IAccessible2StateToString(int32 ia2_state) {
261 std::vector<base::string16> strings; 332 std::vector<base::string16> strings;
262 IAccessible2StateToStringVector(ia2_state, &strings); 333 IAccessible2StateToStringVector(ia2_state, &strings);
263 return JoinString(strings, ','); 334 return JoinString(strings, ',');
264 } 335 }
265 336
337 base::string16 AccessibilityEventToString(int32 event_id) {
338 return AccessibilityEnumMap::GetInstance()->event_string_map[event_id];
339 }
340
266 } // namespace content 341 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698