Chromium Code Reviews| 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 |