OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 <atlbase.h> | 5 #include <atlbase.h> |
6 #include <atlcom.h> | 6 #include <atlcom.h> |
7 #include <limits.h> | 7 #include <limits.h> |
8 #include <oleacc.h> | 8 #include <oleacc.h> |
9 #include <stdint.h> | 9 #include <stdint.h> |
10 | 10 |
(...skipping 481 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
492 return S_OK; | 492 return S_OK; |
493 } | 493 } |
494 | 494 |
495 return S_FALSE; | 495 return S_FALSE; |
496 } | 496 } |
497 | 497 |
498 STDMETHODIMP AXPlatformNodeWin::get_accRole( | 498 STDMETHODIMP AXPlatformNodeWin::get_accRole( |
499 VARIANT var_id, VARIANT* role) { | 499 VARIANT var_id, VARIANT* role) { |
500 AXPlatformNodeWin* target; | 500 AXPlatformNodeWin* target; |
501 COM_OBJECT_VALIDATE_VAR_ID_1_ARG_AND_GET_TARGET(var_id, role, target); | 501 COM_OBJECT_VALIDATE_VAR_ID_1_ARG_AND_GET_TARGET(var_id, role, target); |
| 502 |
| 503 // For historical reasons, we return a string (typically |
| 504 // containing the HTML tag name) as the MSAA role, rather |
| 505 // than a int. |
| 506 std::string role_string = target->StringOverrideForMSAARole(); |
| 507 if (!role_string.empty()) { |
| 508 role->vt = VT_BSTR; |
| 509 std::wstring wsTmp(role_string.begin(), role_string.end()); |
| 510 role->bstrVal = SysAllocString(wsTmp.c_str()); |
| 511 return S_OK; |
| 512 } |
| 513 |
502 role->vt = VT_I4; | 514 role->vt = VT_I4; |
503 role->lVal = target->MSAARole(); | 515 role->lVal = target->MSAARole(); |
504 return S_OK; | 516 return S_OK; |
505 } | 517 } |
506 | 518 |
507 STDMETHODIMP AXPlatformNodeWin::get_accState( | 519 STDMETHODIMP AXPlatformNodeWin::get_accState( |
508 VARIANT var_id, VARIANT* state) { | 520 VARIANT var_id, VARIANT* state) { |
509 AXPlatformNodeWin* target; | 521 AXPlatformNodeWin* target; |
510 COM_OBJECT_VALIDATE_VAR_ID_1_ARG_AND_GET_TARGET(var_id, state, target); | 522 COM_OBJECT_VALIDATE_VAR_ID_1_ARG_AND_GET_TARGET(var_id, state, target); |
511 state->vt = VT_I4; | 523 state->vt = VT_I4; |
(...skipping 510 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1022 return E_FAIL; | 1034 return E_FAIL; |
1023 } | 1035 } |
1024 | 1036 |
1025 // | 1037 // |
1026 // Private member functions. | 1038 // Private member functions. |
1027 // | 1039 // |
1028 int AXPlatformNodeWin::MSAARole() { | 1040 int AXPlatformNodeWin::MSAARole() { |
1029 switch (GetData().role) { | 1041 switch (GetData().role) { |
1030 case ui::AX_ROLE_ALERT: | 1042 case ui::AX_ROLE_ALERT: |
1031 return ROLE_SYSTEM_ALERT; | 1043 return ROLE_SYSTEM_ALERT; |
| 1044 |
| 1045 case ui::AX_ROLE_ALERT_DIALOG: |
| 1046 return ROLE_SYSTEM_DIALOG; |
| 1047 |
| 1048 case ui::AX_ROLE_ANCHOR: |
| 1049 return ROLE_SYSTEM_LINK; |
| 1050 |
1032 case ui::AX_ROLE_APPLICATION: | 1051 case ui::AX_ROLE_APPLICATION: |
1033 return ROLE_SYSTEM_APPLICATION; | 1052 return ROLE_SYSTEM_APPLICATION; |
1034 case ui::AX_ROLE_BUTTON_DROP_DOWN: | 1053 |
1035 return ROLE_SYSTEM_BUTTONDROPDOWN; | 1054 case ui::AX_ROLE_ARTICLE: |
1036 case ui::AX_ROLE_POP_UP_BUTTON: | 1055 return ROLE_SYSTEM_DOCUMENT; |
1037 return ROLE_SYSTEM_BUTTONMENU; | 1056 |
1038 case ui::AX_ROLE_CARET: | 1057 case ui::AX_ROLE_AUDIO: |
1039 return ROLE_SYSTEM_CARET; | 1058 return ROLE_SYSTEM_GROUPING; |
| 1059 |
| 1060 case ui::AX_ROLE_BANNER: |
| 1061 return ROLE_SYSTEM_GROUPING; |
| 1062 |
| 1063 case ui::AX_ROLE_BUSY_INDICATOR: |
| 1064 return ROLE_SYSTEM_ANIMATION; |
| 1065 |
| 1066 case ui::AX_ROLE_BUTTON: |
| 1067 return ROLE_SYSTEM_PUSHBUTTON; |
| 1068 |
| 1069 case ui::AX_ROLE_CANVAS: |
| 1070 return ROLE_SYSTEM_GRAPHIC; |
| 1071 |
| 1072 case ui::AX_ROLE_CAPTION: |
| 1073 return ROLE_SYSTEM_TEXT; |
| 1074 |
| 1075 case ui::AX_ROLE_CELL: |
| 1076 return ROLE_SYSTEM_CELL; |
| 1077 |
1040 case ui::AX_ROLE_CHECK_BOX: | 1078 case ui::AX_ROLE_CHECK_BOX: |
1041 return ROLE_SYSTEM_CHECKBUTTON; | 1079 return ROLE_SYSTEM_CHECKBUTTON; |
| 1080 |
| 1081 case ui::AX_ROLE_COLOR_WELL: |
| 1082 return ROLE_SYSTEM_TEXT; |
| 1083 |
| 1084 case ui::AX_ROLE_COLUMN: |
| 1085 return ROLE_SYSTEM_COLUMN; |
| 1086 |
| 1087 case ui::AX_ROLE_COLUMN_HEADER: |
| 1088 return ROLE_SYSTEM_COLUMNHEADER; |
| 1089 |
1042 case ui::AX_ROLE_COMBO_BOX: | 1090 case ui::AX_ROLE_COMBO_BOX: |
1043 return ROLE_SYSTEM_COMBOBOX; | 1091 return ROLE_SYSTEM_COMBOBOX; |
| 1092 |
| 1093 case ui::AX_ROLE_COMPLEMENTARY: |
| 1094 return ROLE_SYSTEM_GROUPING; |
| 1095 |
| 1096 case ui::AX_ROLE_CONTENT_INFO: |
| 1097 return ROLE_SYSTEM_TEXT; |
| 1098 |
| 1099 case ui::AX_ROLE_DATE: |
| 1100 case ui::AX_ROLE_DATE_TIME: |
| 1101 return ROLE_SYSTEM_DROPLIST; |
| 1102 |
| 1103 case ui::AX_ROLE_DESCRIPTION_LIST_DETAIL: |
| 1104 return ROLE_SYSTEM_TEXT; |
| 1105 |
| 1106 case ui::AX_ROLE_DESCRIPTION_LIST: |
| 1107 return ROLE_SYSTEM_LIST; |
| 1108 |
| 1109 case ui::AX_ROLE_DESCRIPTION_LIST_TERM: |
| 1110 return ROLE_SYSTEM_LISTITEM; |
| 1111 |
| 1112 case ui::AX_ROLE_DETAILS: |
| 1113 return ROLE_SYSTEM_GROUPING; |
| 1114 |
1044 case ui::AX_ROLE_DIALOG: | 1115 case ui::AX_ROLE_DIALOG: |
1045 return ROLE_SYSTEM_DIALOG; | 1116 return ROLE_SYSTEM_DIALOG; |
| 1117 |
| 1118 case ui::AX_ROLE_DISCLOSURE_TRIANGLE: |
| 1119 return ROLE_SYSTEM_PUSHBUTTON; |
| 1120 |
| 1121 case ui::AX_ROLE_DOCUMENT: |
| 1122 case ui::AX_ROLE_ROOT_WEB_AREA: |
| 1123 case ui::AX_ROLE_WEB_AREA: |
| 1124 return ROLE_SYSTEM_DOCUMENT; |
| 1125 |
| 1126 case ui::AX_ROLE_EMBEDDED_OBJECT: |
| 1127 if (delegate_->GetChildCount()) { |
| 1128 return ROLE_SYSTEM_GROUPING; |
| 1129 } else { |
| 1130 return ROLE_SYSTEM_CLIENT; |
| 1131 } |
| 1132 |
| 1133 case ui::AX_ROLE_FIGURE: |
| 1134 return ROLE_SYSTEM_GROUPING; |
| 1135 |
| 1136 case ui::AX_ROLE_FEED: |
| 1137 return ROLE_SYSTEM_GROUPING; |
| 1138 |
1046 case ui::AX_ROLE_GENERIC_CONTAINER: | 1139 case ui::AX_ROLE_GENERIC_CONTAINER: |
1047 return ROLE_SYSTEM_GROUPING; | 1140 return ROLE_SYSTEM_GROUPING; |
| 1141 |
| 1142 case ui::AX_ROLE_GRID: |
| 1143 return ROLE_SYSTEM_TABLE; |
| 1144 |
1048 case ui::AX_ROLE_GROUP: | 1145 case ui::AX_ROLE_GROUP: |
1049 return ROLE_SYSTEM_GROUPING; | 1146 return ROLE_SYSTEM_GROUPING; |
| 1147 |
| 1148 case ui::AX_ROLE_HEADING: |
| 1149 return ROLE_SYSTEM_GROUPING; |
| 1150 |
| 1151 case ui::AX_ROLE_IFRAME: |
| 1152 return ROLE_SYSTEM_DOCUMENT; |
| 1153 |
| 1154 case ui::AX_ROLE_IFRAME_PRESENTATIONAL: |
| 1155 return ROLE_SYSTEM_GROUPING; |
| 1156 |
1050 case ui::AX_ROLE_IMAGE: | 1157 case ui::AX_ROLE_IMAGE: |
1051 return ROLE_SYSTEM_GRAPHIC; | 1158 return ROLE_SYSTEM_GRAPHIC; |
| 1159 |
| 1160 case ui::AX_ROLE_IMAGE_MAP_LINK: |
| 1161 return ROLE_SYSTEM_LINK; |
| 1162 |
| 1163 case ui::AX_ROLE_INPUT_TIME: |
| 1164 return ROLE_SYSTEM_GROUPING; |
| 1165 |
| 1166 case ui::AX_ROLE_LABEL_TEXT: |
| 1167 case ui::AX_ROLE_LEGEND: |
| 1168 return ROLE_SYSTEM_TEXT; |
| 1169 |
1052 case ui::AX_ROLE_LINK: | 1170 case ui::AX_ROLE_LINK: |
1053 return ROLE_SYSTEM_LINK; | 1171 return ROLE_SYSTEM_LINK; |
1054 case ui::AX_ROLE_LOCATION_BAR: | 1172 |
1055 return ROLE_SYSTEM_GROUPING; | 1173 case ui::AX_ROLE_LIST: |
| 1174 return ROLE_SYSTEM_LIST; |
| 1175 |
| 1176 case ui::AX_ROLE_LIST_BOX: |
| 1177 return ROLE_SYSTEM_LIST; |
| 1178 |
| 1179 case ui::AX_ROLE_LIST_BOX_OPTION: |
| 1180 return ROLE_SYSTEM_LISTITEM; |
| 1181 |
| 1182 case ui::AX_ROLE_LIST_ITEM: |
| 1183 return ROLE_SYSTEM_LISTITEM; |
| 1184 |
| 1185 case ui::AX_ROLE_MAIN: |
| 1186 return ROLE_SYSTEM_GROUPING; |
| 1187 |
| 1188 case ui::AX_ROLE_MARK: |
| 1189 return ROLE_SYSTEM_TEXT; |
| 1190 |
| 1191 case ui::AX_ROLE_MARQUEE: |
| 1192 return ROLE_SYSTEM_ANIMATION; |
| 1193 |
| 1194 case ui::AX_ROLE_MATH: |
| 1195 return ROLE_SYSTEM_EQUATION; |
| 1196 |
| 1197 case ui::AX_ROLE_MENU: |
| 1198 case ui::AX_ROLE_MENU_BUTTON: |
| 1199 return ROLE_SYSTEM_MENUPOPUP; |
| 1200 |
1056 case ui::AX_ROLE_MENU_BAR: | 1201 case ui::AX_ROLE_MENU_BAR: |
1057 return ROLE_SYSTEM_MENUBAR; | 1202 return ROLE_SYSTEM_MENUBAR; |
| 1203 |
1058 case ui::AX_ROLE_MENU_ITEM: | 1204 case ui::AX_ROLE_MENU_ITEM: |
1059 return ROLE_SYSTEM_MENUITEM; | 1205 return ROLE_SYSTEM_MENUITEM; |
| 1206 |
| 1207 case ui::AX_ROLE_MENU_ITEM_CHECK_BOX: |
| 1208 return ROLE_SYSTEM_MENUITEM; |
| 1209 |
| 1210 case ui::AX_ROLE_MENU_ITEM_RADIO: |
| 1211 return ROLE_SYSTEM_MENUITEM; |
| 1212 |
1060 case ui::AX_ROLE_MENU_LIST_POPUP: | 1213 case ui::AX_ROLE_MENU_LIST_POPUP: |
1061 return ROLE_SYSTEM_MENUPOPUP; | 1214 return ROLE_SYSTEM_LIST; |
| 1215 |
| 1216 case ui::AX_ROLE_MENU_LIST_OPTION: |
| 1217 return ROLE_SYSTEM_LISTITEM; |
| 1218 |
| 1219 case ui::AX_ROLE_NAVIGATION: |
| 1220 return ROLE_SYSTEM_GROUPING; |
| 1221 |
| 1222 case ui::AX_ROLE_NOTE: |
| 1223 return ROLE_SYSTEM_GROUPING; |
| 1224 |
| 1225 case ui::AX_ROLE_OUTLINE: |
| 1226 return ROLE_SYSTEM_OUTLINE; |
| 1227 |
| 1228 case ui::AX_ROLE_POP_UP_BUTTON: { |
| 1229 std::string html_tag = GetData().GetStringAttribute(ui::AX_ATTR_HTML_TAG); |
| 1230 if (html_tag == "select") |
| 1231 return ROLE_SYSTEM_COMBOBOX; |
| 1232 return ROLE_SYSTEM_BUTTONMENU; |
| 1233 } |
| 1234 case ui::AX_ROLE_PRE: |
| 1235 return ROLE_SYSTEM_TEXT; |
| 1236 |
| 1237 case ui::AX_ROLE_PROGRESS_INDICATOR: |
| 1238 return ROLE_SYSTEM_PROGRESSBAR; |
| 1239 |
| 1240 case ui::AX_ROLE_RADIO_BUTTON: |
| 1241 return ROLE_SYSTEM_RADIOBUTTON; |
| 1242 |
| 1243 case ui::AX_ROLE_RADIO_GROUP: |
| 1244 return ROLE_SYSTEM_GROUPING; |
| 1245 |
| 1246 case ui::AX_ROLE_REGION: { |
| 1247 std::string html_tag = GetData().GetStringAttribute(ui::AX_ATTR_HTML_TAG); |
| 1248 if (html_tag == "section") |
| 1249 return ROLE_SYSTEM_GROUPING; |
| 1250 return ROLE_SYSTEM_PANE; |
| 1251 } |
| 1252 |
| 1253 case ui::AX_ROLE_ROW: { |
| 1254 // Role changes depending on whether row is inside a treegrid |
| 1255 // https://www.w3.org/TR/core-aam-1.1/#role-map-row |
| 1256 auto* container = FromNativeViewAccessible(GetParent()); |
| 1257 if (container && container->GetData().role == ui::AX_ROLE_GROUP) { |
| 1258 // If parent was a rowgroup, we need to look at the grandparent |
| 1259 container = FromNativeViewAccessible(container->GetParent()); |
| 1260 } |
| 1261 |
| 1262 if (!container) |
| 1263 return ROLE_SYSTEM_ROW; |
| 1264 |
| 1265 return ROLE_SYSTEM_OUTLINEITEM; |
| 1266 } |
| 1267 |
| 1268 case ui::AX_ROLE_ROW_HEADER: |
| 1269 return ROLE_SYSTEM_ROWHEADER; |
| 1270 |
| 1271 case ui::AX_ROLE_RUBY: |
| 1272 return ROLE_SYSTEM_TEXT; |
| 1273 |
| 1274 case ui::AX_ROLE_RULER: |
| 1275 return ROLE_SYSTEM_CLIENT; |
| 1276 |
| 1277 case ui::AX_ROLE_SCROLL_AREA: |
| 1278 return ROLE_SYSTEM_CLIENT; |
| 1279 |
| 1280 case ui::AX_ROLE_SCROLL_BAR: |
| 1281 return ROLE_SYSTEM_SCROLLBAR; |
| 1282 |
| 1283 case ui::AX_ROLE_SEARCH: |
| 1284 return ROLE_SYSTEM_GROUPING; |
| 1285 |
| 1286 case ui::AX_ROLE_SLIDER: |
| 1287 return ROLE_SYSTEM_SLIDER; |
| 1288 |
| 1289 case ui::AX_ROLE_SPIN_BUTTON: |
| 1290 return ROLE_SYSTEM_SPINBUTTON; |
| 1291 |
| 1292 case ui::AX_ROLE_SPIN_BUTTON_PART: |
| 1293 return ROLE_SYSTEM_PUSHBUTTON; |
| 1294 |
| 1295 case ui::AX_ROLE_ANNOTATION: |
| 1296 case ui::AX_ROLE_LIST_MARKER: |
| 1297 case ui::AX_ROLE_STATIC_TEXT: |
| 1298 return ROLE_SYSTEM_STATICTEXT; |
| 1299 |
| 1300 case ui::AX_ROLE_STATUS: |
| 1301 return ROLE_SYSTEM_STATUSBAR; |
| 1302 |
| 1303 case ui::AX_ROLE_SPLITTER: |
| 1304 return ROLE_SYSTEM_SEPARATOR; |
| 1305 |
| 1306 case ui::AX_ROLE_SVG_ROOT: |
| 1307 return ROLE_SYSTEM_GRAPHIC; |
| 1308 |
| 1309 case ui::AX_ROLE_TAB: |
| 1310 return ROLE_SYSTEM_PAGETAB; |
| 1311 |
| 1312 case ui::AX_ROLE_TABLE: |
| 1313 return ROLE_SYSTEM_TABLE; |
| 1314 |
| 1315 case ui::AX_ROLE_TABLE_HEADER_CONTAINER: |
| 1316 return ROLE_SYSTEM_GROUPING; |
| 1317 |
| 1318 case ui::AX_ROLE_TAB_LIST: |
| 1319 return ROLE_SYSTEM_PAGETABLIST; |
| 1320 |
| 1321 case ui::AX_ROLE_TAB_PANEL: |
| 1322 return ROLE_SYSTEM_PROPERTYPAGE; |
| 1323 |
| 1324 case ui::AX_ROLE_TERM: |
| 1325 return ROLE_SYSTEM_LISTITEM; |
| 1326 |
| 1327 case ui::AX_ROLE_TOGGLE_BUTTON: |
| 1328 return ROLE_SYSTEM_PUSHBUTTON; |
| 1329 |
| 1330 case ui::AX_ROLE_TEXT_FIELD: |
| 1331 case ui::AX_ROLE_SEARCH_BOX: |
| 1332 return ROLE_SYSTEM_TEXT; |
| 1333 |
| 1334 case ui::AX_ROLE_ABBR: |
| 1335 case ui::AX_ROLE_TIME: |
| 1336 return ROLE_SYSTEM_TEXT; |
| 1337 |
| 1338 case ui::AX_ROLE_TIMER: |
| 1339 return ROLE_SYSTEM_CLOCK; |
| 1340 |
| 1341 case ui::AX_ROLE_TOOLBAR: |
| 1342 return ROLE_SYSTEM_TOOLBAR; |
| 1343 |
| 1344 case ui::AX_ROLE_TOOLTIP: |
| 1345 return ROLE_SYSTEM_TOOLTIP; |
| 1346 |
1062 case ui::AX_ROLE_TREE: | 1347 case ui::AX_ROLE_TREE: |
1063 return ROLE_SYSTEM_OUTLINE; | 1348 return ROLE_SYSTEM_OUTLINE; |
| 1349 |
| 1350 case ui::AX_ROLE_TREE_GRID: |
| 1351 return ROLE_SYSTEM_OUTLINE; |
| 1352 |
1064 case ui::AX_ROLE_TREE_ITEM: | 1353 case ui::AX_ROLE_TREE_ITEM: |
1065 return ROLE_SYSTEM_OUTLINEITEM; | 1354 return ROLE_SYSTEM_OUTLINEITEM; |
1066 case ui::AX_ROLE_TAB: | 1355 |
1067 return ROLE_SYSTEM_PAGETAB; | 1356 case ui::AX_ROLE_LINE_BREAK: |
1068 case ui::AX_ROLE_TAB_LIST: | 1357 return ROLE_SYSTEM_WHITESPACE; |
1069 return ROLE_SYSTEM_PAGETABLIST; | 1358 |
1070 case ui::AX_ROLE_PANE: | 1359 case ui::AX_ROLE_VIDEO: |
1071 return ROLE_SYSTEM_PANE; | 1360 return ROLE_SYSTEM_GROUPING; |
1072 case ui::AX_ROLE_PROGRESS_INDICATOR: | 1361 |
1073 return ROLE_SYSTEM_PROGRESSBAR; | |
1074 case ui::AX_ROLE_BUTTON: | |
1075 return ROLE_SYSTEM_PUSHBUTTON; | |
1076 case ui::AX_ROLE_RADIO_BUTTON: | |
1077 return ROLE_SYSTEM_RADIOBUTTON; | |
1078 case ui::AX_ROLE_SCROLL_BAR: | |
1079 return ROLE_SYSTEM_SCROLLBAR; | |
1080 case ui::AX_ROLE_SPLITTER: | |
1081 return ROLE_SYSTEM_SEPARATOR; | |
1082 case ui::AX_ROLE_SLIDER: | |
1083 return ROLE_SYSTEM_SLIDER; | |
1084 case ui::AX_ROLE_STATIC_TEXT: | |
1085 return ROLE_SYSTEM_STATICTEXT; | |
1086 case ui::AX_ROLE_TEXT_FIELD: | |
1087 return ROLE_SYSTEM_TEXT; | |
1088 case ui::AX_ROLE_TITLE_BAR: | |
1089 return ROLE_SYSTEM_TITLEBAR; | |
1090 case ui::AX_ROLE_TOOLBAR: | |
1091 return ROLE_SYSTEM_TOOLBAR; | |
1092 case ui::AX_ROLE_WEB_VIEW: | |
1093 return ROLE_SYSTEM_GROUPING; | |
1094 case ui::AX_ROLE_WINDOW: | 1362 case ui::AX_ROLE_WINDOW: |
1095 return ROLE_SYSTEM_WINDOW; | 1363 return ROLE_SYSTEM_WINDOW; |
1096 case ui::AX_ROLE_CLIENT: | 1364 |
| 1365 // TODO(dmazzoni): figure out the proper MSAA role for roles not called out |
| 1366 // here. |
1097 default: | 1367 default: |
1098 // This is the default role for MSAA. | |
1099 return ROLE_SYSTEM_CLIENT; | 1368 return ROLE_SYSTEM_CLIENT; |
1100 } | 1369 } |
1101 } | 1370 } |
1102 | 1371 |
| 1372 std::string AXPlatformNodeWin::StringOverrideForMSAARole() { |
| 1373 std::string html_tag = GetData().GetStringAttribute(ui::AX_ATTR_HTML_TAG); |
| 1374 |
| 1375 switch (GetData().role) { |
| 1376 case ui::AX_ROLE_BLOCKQUOTE: |
| 1377 case ui::AX_ROLE_DEFINITION: |
| 1378 case ui::AX_ROLE_IMAGE_MAP: |
| 1379 return html_tag; |
| 1380 |
| 1381 case ui::AX_ROLE_CANVAS: |
| 1382 if (GetData().GetBoolAttribute(ui::AX_ATTR_CANVAS_HAS_FALLBACK)) { |
| 1383 // TODO(dougt) why not just use the html_tag? |
| 1384 return "canvas"; |
| 1385 } |
| 1386 break; |
| 1387 |
| 1388 case ui::AX_ROLE_FORM: |
| 1389 // TODO(dougt) why not just use the html_tag? |
| 1390 return "form"; |
| 1391 |
| 1392 case ui::AX_ROLE_HEADING: |
| 1393 if (!html_tag.empty()) |
| 1394 return html_tag; |
| 1395 break; |
| 1396 |
| 1397 case ui::AX_ROLE_PARAGRAPH: |
| 1398 // TODO(dougt) why not just use the html_tag and why upper case? |
| 1399 return "P"; |
| 1400 |
| 1401 case ui::AX_ROLE_GENERIC_CONTAINER: |
| 1402 // TODO(dougt) why can't we always use div in this case? |
| 1403 if (html_tag.empty()) |
| 1404 return "div"; |
| 1405 return html_tag; |
| 1406 |
| 1407 case ui::AX_ROLE_SWITCH: |
| 1408 return "switch"; |
| 1409 |
| 1410 default: |
| 1411 return ""; |
| 1412 } |
| 1413 |
| 1414 return ""; |
| 1415 } |
| 1416 |
1103 int AXPlatformNodeWin::MSAAState() { | 1417 int AXPlatformNodeWin::MSAAState() { |
1104 const AXNodeData& data = GetData(); | 1418 const AXNodeData& data = GetData(); |
1105 const uint32_t state = data.state; | 1419 const uint32_t state = data.state; |
1106 | 1420 |
1107 int msaa_state = 0; | 1421 int msaa_state = 0; |
1108 if (state & (1 << ui::AX_STATE_COLLAPSED)) | 1422 if (state & (1 << ui::AX_STATE_COLLAPSED)) |
1109 msaa_state |= STATE_SYSTEM_COLLAPSED; | 1423 msaa_state |= STATE_SYSTEM_COLLAPSED; |
1110 if (state & (1 << ui::AX_STATE_DEFAULT)) | 1424 if (state & (1 << ui::AX_STATE_DEFAULT)) |
1111 msaa_state |= STATE_SYSTEM_DEFAULT; | 1425 msaa_state |= STATE_SYSTEM_DEFAULT; |
1112 if (state & (1 << ui::AX_STATE_EXPANDED)) | 1426 if (state & (1 << ui::AX_STATE_EXPANDED)) |
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1293 | 1607 |
1294 AXPlatformNodeBase* base = | 1608 AXPlatformNodeBase* base = |
1295 FromNativeViewAccessible(node->GetNativeViewAccessible()); | 1609 FromNativeViewAccessible(node->GetNativeViewAccessible()); |
1296 if (base && !IsDescendant(base)) | 1610 if (base && !IsDescendant(base)) |
1297 base = nullptr; | 1611 base = nullptr; |
1298 | 1612 |
1299 return static_cast<AXPlatformNodeWin*>(base); | 1613 return static_cast<AXPlatformNodeWin*>(base); |
1300 } | 1614 } |
1301 | 1615 |
1302 } // namespace ui | 1616 } // namespace ui |
OLD | NEW |