15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "content/browser/accessibility/accessibility_tree_formatter_utils_win.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <oleacc.h> 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <map> 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string> 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/singleton.h" 13868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/string_util.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "third_party/iaccessible2/ia2_api_all.h" 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace content { 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace { 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class AccessibilityRoleStateMap { 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static AccessibilityRoleStateMap* GetInstance(); 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::map<int32, string16> ia_role_string_map; 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::map<int32, string16> ia2_role_string_map; 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::map<int32, string16> ia_state_string_map; 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::map<int32, string16> ia2_state_string_map; 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AccessibilityRoleStateMap(); 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~AccessibilityRoleStateMap() {} 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) friend struct DefaultSingletonTraits<AccessibilityRoleStateMap>; 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(AccessibilityRoleStateMap); 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// static 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)AccessibilityRoleStateMap* AccessibilityRoleStateMap::GetInstance() { 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return Singleton<AccessibilityRoleStateMap, 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LeakySingletonTraits<AccessibilityRoleStateMap> >::get(); 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)AccessibilityRoleStateMap::AccessibilityRoleStateMap() { 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Convenience macros for generating readable strings. 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define IA_ROLE_MAP(x) ia_role_string_map[x] = L#x; \ 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ia2_role_string_map[x] = L#x; 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define IA2_ROLE_MAP(x) ia2_role_string_map[x] = L#x; 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define IA_STATE_MAP(x) ia_state_string_map[STATE_SYSTEM_##x] = L#x; 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define IA2_STATE_MAP(x) ia2_state_string_map[x] = L#x; 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // MSAA / IAccessible roles. Each one of these is also a valid 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // IAccessible2 role, the IA_ROLE_MAP macro adds it to both. 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_ROLE_MAP(ROLE_SYSTEM_ALERT) 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_ROLE_MAP(ROLE_SYSTEM_ANIMATION) 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_ROLE_MAP(ROLE_SYSTEM_APPLICATION) 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_ROLE_MAP(ROLE_SYSTEM_BORDER) 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_ROLE_MAP(ROLE_SYSTEM_BUTTONDROPDOWN) 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_ROLE_MAP(ROLE_SYSTEM_BUTTONDROPDOWNGRID) 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_ROLE_MAP(ROLE_SYSTEM_BUTTONMENU) 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_ROLE_MAP(ROLE_SYSTEM_CARET) 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_ROLE_MAP(ROLE_SYSTEM_CELL) 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_ROLE_MAP(ROLE_SYSTEM_CHARACTER) 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_ROLE_MAP(ROLE_SYSTEM_CHART) 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_ROLE_MAP(ROLE_SYSTEM_CHECKBUTTON) 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_ROLE_MAP(ROLE_SYSTEM_CLIENT) 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_ROLE_MAP(ROLE_SYSTEM_CLOCK) 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_ROLE_MAP(ROLE_SYSTEM_COLUMN) 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_ROLE_MAP(ROLE_SYSTEM_COLUMNHEADER) 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_ROLE_MAP(ROLE_SYSTEM_COMBOBOX) 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_ROLE_MAP(ROLE_SYSTEM_CURSOR) 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_ROLE_MAP(ROLE_SYSTEM_DIAGRAM) 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_ROLE_MAP(ROLE_SYSTEM_DIAL) 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_ROLE_MAP(ROLE_SYSTEM_DIALOG) 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_ROLE_MAP(ROLE_SYSTEM_DOCUMENT) 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_ROLE_MAP(ROLE_SYSTEM_DROPLIST) 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_ROLE_MAP(ROLE_SYSTEM_EQUATION) 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_ROLE_MAP(ROLE_SYSTEM_GRAPHIC) 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_ROLE_MAP(ROLE_SYSTEM_GRIP) 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_ROLE_MAP(ROLE_SYSTEM_GROUPING) 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_ROLE_MAP(ROLE_SYSTEM_HELPBALLOON) 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_ROLE_MAP(ROLE_SYSTEM_HOTKEYFIELD) 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_ROLE_MAP(ROLE_SYSTEM_INDICATOR) 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_ROLE_MAP(ROLE_SYSTEM_IPADDRESS) 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_ROLE_MAP(ROLE_SYSTEM_LINK) 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_ROLE_MAP(ROLE_SYSTEM_LIST) 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_ROLE_MAP(ROLE_SYSTEM_LISTITEM) 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_ROLE_MAP(ROLE_SYSTEM_MENUBAR) 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_ROLE_MAP(ROLE_SYSTEM_MENUITEM) 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_ROLE_MAP(ROLE_SYSTEM_MENUPOPUP) 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_ROLE_MAP(ROLE_SYSTEM_OUTLINE) 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_ROLE_MAP(ROLE_SYSTEM_OUTLINEBUTTON) 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_ROLE_MAP(ROLE_SYSTEM_OUTLINEITEM) 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_ROLE_MAP(ROLE_SYSTEM_PAGETAB) 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_ROLE_MAP(ROLE_SYSTEM_PAGETABLIST) 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_ROLE_MAP(ROLE_SYSTEM_PANE) 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_ROLE_MAP(ROLE_SYSTEM_PROGRESSBAR) 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_ROLE_MAP(ROLE_SYSTEM_PROPERTYPAGE) 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_ROLE_MAP(ROLE_SYSTEM_PUSHBUTTON) 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_ROLE_MAP(ROLE_SYSTEM_RADIOBUTTON) 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_ROLE_MAP(ROLE_SYSTEM_ROW) 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_ROLE_MAP(ROLE_SYSTEM_ROWHEADER) 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_ROLE_MAP(ROLE_SYSTEM_SCROLLBAR) 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_ROLE_MAP(ROLE_SYSTEM_SEPARATOR) 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_ROLE_MAP(ROLE_SYSTEM_SLIDER) 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_ROLE_MAP(ROLE_SYSTEM_SOUND) 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_ROLE_MAP(ROLE_SYSTEM_SPINBUTTON) 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_ROLE_MAP(ROLE_SYSTEM_SPLITBUTTON) 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_ROLE_MAP(ROLE_SYSTEM_STATICTEXT) 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_ROLE_MAP(ROLE_SYSTEM_STATUSBAR) 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_ROLE_MAP(ROLE_SYSTEM_TABLE) 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_ROLE_MAP(ROLE_SYSTEM_TEXT) 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_ROLE_MAP(ROLE_SYSTEM_TITLEBAR) 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_ROLE_MAP(ROLE_SYSTEM_TOOLBAR) 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_ROLE_MAP(ROLE_SYSTEM_TOOLTIP) 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_ROLE_MAP(ROLE_SYSTEM_WHITESPACE) 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_ROLE_MAP(ROLE_SYSTEM_WINDOW) 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // IAccessible2 roles. 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA2_ROLE_MAP(IA2_ROLE_CANVAS) 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA2_ROLE_MAP(IA2_ROLE_CAPTION) 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA2_ROLE_MAP(IA2_ROLE_CHECK_MENU_ITEM) 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA2_ROLE_MAP(IA2_ROLE_COLOR_CHOOSER) 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA2_ROLE_MAP(IA2_ROLE_DATE_EDITOR) 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA2_ROLE_MAP(IA2_ROLE_DESKTOP_ICON) 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA2_ROLE_MAP(IA2_ROLE_DESKTOP_PANE) 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA2_ROLE_MAP(IA2_ROLE_DIRECTORY_PANE) 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA2_ROLE_MAP(IA2_ROLE_EDITBAR) 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA2_ROLE_MAP(IA2_ROLE_EMBEDDED_OBJECT) 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA2_ROLE_MAP(IA2_ROLE_ENDNOTE) 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA2_ROLE_MAP(IA2_ROLE_FILE_CHOOSER) 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA2_ROLE_MAP(IA2_ROLE_FONT_CHOOSER) 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA2_ROLE_MAP(IA2_ROLE_FOOTER) 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA2_ROLE_MAP(IA2_ROLE_FOOTNOTE) 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA2_ROLE_MAP(IA2_ROLE_FORM) 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA2_ROLE_MAP(IA2_ROLE_FRAME) 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA2_ROLE_MAP(IA2_ROLE_GLASS_PANE) 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA2_ROLE_MAP(IA2_ROLE_HEADER) 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA2_ROLE_MAP(IA2_ROLE_HEADING) 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA2_ROLE_MAP(IA2_ROLE_ICON) 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA2_ROLE_MAP(IA2_ROLE_IMAGE_MAP) 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA2_ROLE_MAP(IA2_ROLE_INPUT_METHOD_WINDOW) 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA2_ROLE_MAP(IA2_ROLE_INTERNAL_FRAME) 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA2_ROLE_MAP(IA2_ROLE_LABEL) 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA2_ROLE_MAP(IA2_ROLE_LAYERED_PANE) 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA2_ROLE_MAP(IA2_ROLE_NOTE) 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA2_ROLE_MAP(IA2_ROLE_OPTION_PANE) 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA2_ROLE_MAP(IA2_ROLE_PAGE) 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA2_ROLE_MAP(IA2_ROLE_PARAGRAPH) 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA2_ROLE_MAP(IA2_ROLE_RADIO_MENU_ITEM) 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA2_ROLE_MAP(IA2_ROLE_REDUNDANT_OBJECT) 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA2_ROLE_MAP(IA2_ROLE_ROOT_PANE) 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA2_ROLE_MAP(IA2_ROLE_RULER) 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA2_ROLE_MAP(IA2_ROLE_SCROLL_PANE) 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA2_ROLE_MAP(IA2_ROLE_SECTION) 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA2_ROLE_MAP(IA2_ROLE_SHAPE) 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA2_ROLE_MAP(IA2_ROLE_SPLIT_PANE) 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA2_ROLE_MAP(IA2_ROLE_TEAR_OFF_MENU) 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA2_ROLE_MAP(IA2_ROLE_TERMINAL) 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA2_ROLE_MAP(IA2_ROLE_TEXT_FRAME) 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA2_ROLE_MAP(IA2_ROLE_TOGGLE_BUTTON) 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA2_ROLE_MAP(IA2_ROLE_UNKNOWN) 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA2_ROLE_MAP(IA2_ROLE_VIEW_PORT) 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // MSAA / IAccessible states. Unlike roles, these are not also IA2 states. 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_STATE_MAP(ALERT_HIGH) 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_STATE_MAP(ALERT_LOW) 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_STATE_MAP(ALERT_MEDIUM) 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_STATE_MAP(ANIMATED) 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_STATE_MAP(BUSY) 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_STATE_MAP(CHECKED) 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_STATE_MAP(COLLAPSED) 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_STATE_MAP(DEFAULT) 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_STATE_MAP(EXPANDED) 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_STATE_MAP(EXTSELECTABLE) 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_STATE_MAP(FLOATING) 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_STATE_MAP(FOCUSABLE) 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_STATE_MAP(FOCUSED) 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_STATE_MAP(HASPOPUP) 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_STATE_MAP(HOTTRACKED) 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_STATE_MAP(INVISIBLE) 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_STATE_MAP(LINKED) 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_STATE_MAP(MARQUEED) 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_STATE_MAP(MIXED) 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_STATE_MAP(MOVEABLE) 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_STATE_MAP(MULTISELECTABLE) 186c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) IA_STATE_MAP(OFFSCREEN) 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_STATE_MAP(PRESSED) 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_STATE_MAP(PROTECTED) 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_STATE_MAP(READONLY) 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_STATE_MAP(SELECTABLE) 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_STATE_MAP(SELECTED) 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_STATE_MAP(SELFVOICING) 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_STATE_MAP(SIZEABLE) 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_STATE_MAP(TRAVERSED) 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA_STATE_MAP(UNAVAILABLE) 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // IAccessible2 states. 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA2_STATE_MAP(IA2_STATE_ACTIVE) 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA2_STATE_MAP(IA2_STATE_ARMED) 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA2_STATE_MAP(IA2_STATE_DEFUNCT) 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA2_STATE_MAP(IA2_STATE_EDITABLE) 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA2_STATE_MAP(IA2_STATE_ICONIFIED) 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA2_STATE_MAP(IA2_STATE_INVALID_ENTRY) 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA2_STATE_MAP(IA2_STATE_MANAGES_DESCENDANTS) 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA2_STATE_MAP(IA2_STATE_MODAL) 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA2_STATE_MAP(IA2_STATE_MULTI_LINE) 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA2_STATE_MAP(IA2_STATE_REQUIRED) 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA2_STATE_MAP(IA2_STATE_SELECTABLE_TEXT) 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA2_STATE_MAP(IA2_STATE_SINGLE_LINE) 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA2_STATE_MAP(IA2_STATE_STALE) 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA2_STATE_MAP(IA2_STATE_SUPPORTS_AUTOCOMPLETION) 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IA2_STATE_MAP(IA2_STATE_TRANSIENT) 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Untested states include those that would be repeated on nearly every node, 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // or would vary based on window size. 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // IA2_STATE_MAP(IA2_STATE_HORIZONTAL) // Untested. 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // IA2_STATE_MAP(IA2_STATE_OPAQUE) // Untested. 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // IA2_STATE_MAP(IA2_STATE_VERTICAL) // Untested. 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace. 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)string16 IAccessibleRoleToString(int32 ia_role) { 2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return AccessibilityRoleStateMap::GetInstance()->ia_role_string_map[ia_role]; 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)string16 IAccessible2RoleToString(int32 ia_role) { 2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return AccessibilityRoleStateMap::GetInstance()->ia2_role_string_map[ia_role]; 2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void IAccessibleStateToStringVector(int32 ia_state, 2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<string16>* result) { 2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::map<int32, string16>& state_string_map = 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AccessibilityRoleStateMap::GetInstance()->ia_state_string_map; 2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::map<int32, string16>::const_iterator it; 2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (it = state_string_map.begin(); it != state_string_map.end(); ++it) { 2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (it->first & ia_state) 2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) result->push_back(it->second); 2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)string16 IAccessibleStateToString(int32 ia_state) { 2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<string16> strings; 2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IAccessibleStateToStringVector(ia_state, &strings); 2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return JoinString(strings, ','); 2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void IAccessible2StateToStringVector(int32 ia2_state, 2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<string16>* result) { 2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::map<int32, string16>& state_string_map = 2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AccessibilityRoleStateMap::GetInstance()->ia2_state_string_map; 2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::map<int32, string16>::const_iterator it; 2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (it = state_string_map.begin(); it != state_string_map.end(); ++it) { 2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (it->first & ia2_state) 2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) result->push_back(it->second); 2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)string16 IAccessible2StateToString(int32 ia2_state) { 2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<string16> strings; 2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IAccessible2StateToStringVector(ia2_state, &strings); 2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return JoinString(strings, ','); 2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace content 266