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

Side by Side Diff: ui/accessibility/platform/ax_platform_node_win.cc

Issue 2909853002: Forward BrowserAccessibility get_accRole to AXPlatformNode. (Closed)
Patch Set: some of dmazzoni's comments addressed Created 3 years, 6 months 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
« no previous file with comments | « ui/accessibility/platform/ax_platform_node_win.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
OLDNEW
« no previous file with comments | « ui/accessibility/platform/ax_platform_node_win.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698