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