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

Side by Side Diff: content/browser/accessibility/browser_accessibility_win.cc

Issue 2694413006: Scope and clean up uses of AccessibilityMode. (Closed)
Patch Set: build bustage Created 3 years, 10 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "content/browser/accessibility/browser_accessibility_win.h" 5 #include "content/browser/accessibility/browser_accessibility_win.h"
6 6
7 #include <UIAutomationClient.h> 7 #include <UIAutomationClient.h>
8 #include <UIAutomationCoreApi.h> 8 #include <UIAutomationCoreApi.h>
9 9
10 #include <algorithm> 10 #include <algorithm>
(...skipping 894 matching lines...) Expand 10 before | Expand all | Expand 10 after
905 905
906 if (!role) 906 if (!role)
907 return E_INVALIDARG; 907 return E_INVALIDARG;
908 908
909 *role = ia2_role(); 909 *role = ia2_role();
910 return S_OK; 910 return S_OK;
911 } 911 }
912 912
913 STDMETHODIMP BrowserAccessibilityWin::get_attributes(BSTR* attributes) { 913 STDMETHODIMP BrowserAccessibilityWin::get_attributes(BSTR* attributes) {
914 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_IA2_GET_ATTRIBUTES); 914 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_IA2_GET_ATTRIBUTES);
915 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 915 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
916 if (!attributes) 916 if (!attributes)
917 return E_INVALIDARG; 917 return E_INVALIDARG;
918 *attributes = nullptr; 918 *attributes = nullptr;
919 919
920 if (!instance_active()) 920 if (!instance_active())
921 return E_FAIL; 921 return E_FAIL;
922 922
923 base::string16 str; 923 base::string16 str;
924 for (const base::string16& attribute : ia2_attributes()) 924 for (const base::string16& attribute : ia2_attributes())
925 str += attribute + L';'; 925 str += attribute + L';';
926 926
927 if (str.empty()) 927 if (str.empty())
928 return S_FALSE; 928 return S_FALSE;
929 929
930 *attributes = SysAllocString(str.c_str()); 930 *attributes = SysAllocString(str.c_str());
931 DCHECK(*attributes); 931 DCHECK(*attributes);
932 return S_OK; 932 return S_OK;
933 } 933 }
934 934
935 STDMETHODIMP BrowserAccessibilityWin::get_states(AccessibleStates* states) { 935 STDMETHODIMP BrowserAccessibilityWin::get_states(AccessibleStates* states) {
936 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_STATES); 936 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_STATES);
937 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 937 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
938 if (!instance_active()) 938 if (!instance_active())
939 return E_FAIL; 939 return E_FAIL;
940 940
941 if (!states) 941 if (!states)
942 return E_INVALIDARG; 942 return E_INVALIDARG;
943 943
944 *states = ia2_state(); 944 *states = ia2_state();
945 945
946 return S_OK; 946 return S_OK;
947 } 947 }
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
981 981
982 if (!index_in_parent) 982 if (!index_in_parent)
983 return E_INVALIDARG; 983 return E_INVALIDARG;
984 984
985 *index_in_parent = this->GetIndexInParent(); 985 *index_in_parent = this->GetIndexInParent();
986 return S_OK; 986 return S_OK;
987 } 987 }
988 988
989 STDMETHODIMP BrowserAccessibilityWin::get_nRelations(LONG* n_relations) { 989 STDMETHODIMP BrowserAccessibilityWin::get_nRelations(LONG* n_relations) {
990 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_N_RELATIONS); 990 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_N_RELATIONS);
991 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 991 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
992 if (!instance_active()) 992 if (!instance_active())
993 return E_FAIL; 993 return E_FAIL;
994 994
995 if (!n_relations) 995 if (!n_relations)
996 return E_INVALIDARG; 996 return E_INVALIDARG;
997 997
998 *n_relations = relations_.size(); 998 *n_relations = relations_.size();
999 return S_OK; 999 return S_OK;
1000 } 1000 }
1001 1001
1002 STDMETHODIMP BrowserAccessibilityWin::get_relation( 1002 STDMETHODIMP BrowserAccessibilityWin::get_relation(
1003 LONG relation_index, 1003 LONG relation_index,
1004 IAccessibleRelation** relation) { 1004 IAccessibleRelation** relation) {
1005 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_RELATION); 1005 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_RELATION);
1006 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 1006 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
1007 if (!instance_active()) 1007 if (!instance_active())
1008 return E_FAIL; 1008 return E_FAIL;
1009 1009
1010 if (relation_index < 0 || 1010 if (relation_index < 0 ||
1011 relation_index >= static_cast<long>(relations_.size())) { 1011 relation_index >= static_cast<long>(relations_.size())) {
1012 return E_INVALIDARG; 1012 return E_INVALIDARG;
1013 } 1013 }
1014 1014
1015 if (!relation) 1015 if (!relation)
1016 return E_INVALIDARG; 1016 return E_INVALIDARG;
1017 1017
1018 relations_[relation_index]->AddRef(); 1018 relations_[relation_index]->AddRef();
1019 *relation = relations_[relation_index]; 1019 *relation = relations_[relation_index];
1020 return S_OK; 1020 return S_OK;
1021 } 1021 }
1022 1022
1023 STDMETHODIMP BrowserAccessibilityWin::get_relations( 1023 STDMETHODIMP BrowserAccessibilityWin::get_relations(
1024 LONG max_relations, 1024 LONG max_relations,
1025 IAccessibleRelation** relations, 1025 IAccessibleRelation** relations,
1026 LONG* n_relations) { 1026 LONG* n_relations) {
1027 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_RELATIONS); 1027 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_RELATIONS);
1028 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 1028 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
1029 if (!instance_active()) 1029 if (!instance_active())
1030 return E_FAIL; 1030 return E_FAIL;
1031 1031
1032 if (!relations || !n_relations) 1032 if (!relations || !n_relations)
1033 return E_INVALIDARG; 1033 return E_INVALIDARG;
1034 1034
1035 long count = static_cast<long>(relations_.size()); 1035 long count = static_cast<long>(relations_.size());
1036 *n_relations = count; 1036 *n_relations = count;
1037 if (count == 0) 1037 if (count == 0)
1038 return S_FALSE; 1038 return S_FALSE;
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
1106 manager()->ScrollToPoint(*this, scroll_to); 1106 manager()->ScrollToPoint(*this, scroll_to);
1107 1107
1108 return S_OK; 1108 return S_OK;
1109 } 1109 }
1110 1110
1111 STDMETHODIMP BrowserAccessibilityWin::get_groupPosition( 1111 STDMETHODIMP BrowserAccessibilityWin::get_groupPosition(
1112 LONG* group_level, 1112 LONG* group_level,
1113 LONG* similar_items_in_group, 1113 LONG* similar_items_in_group,
1114 LONG* position_in_group) { 1114 LONG* position_in_group) {
1115 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_GROUP_POSITION); 1115 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_GROUP_POSITION);
1116 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 1116 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
1117 if (!instance_active()) 1117 if (!instance_active())
1118 return E_FAIL; 1118 return E_FAIL;
1119 1119
1120 if (!group_level || !similar_items_in_group || !position_in_group) 1120 if (!group_level || !similar_items_in_group || !position_in_group)
1121 return E_INVALIDARG; 1121 return E_INVALIDARG;
1122 1122
1123 *group_level = GetIntAttribute(ui::AX_ATTR_HIERARCHICAL_LEVEL); 1123 *group_level = GetIntAttribute(ui::AX_ATTR_HIERARCHICAL_LEVEL);
1124 *similar_items_in_group = GetIntAttribute(ui::AX_ATTR_SET_SIZE); 1124 *similar_items_in_group = GetIntAttribute(ui::AX_ATTR_SET_SIZE);
1125 *position_in_group = GetIntAttribute(ui::AX_ATTR_POS_IN_SET); 1125 *position_in_group = GetIntAttribute(ui::AX_ATTR_POS_IN_SET);
1126 1126
1127 if (*group_level == *similar_items_in_group == *position_in_group == 0) 1127 if (*group_level == *similar_items_in_group == *position_in_group == 0)
1128 return S_FALSE; 1128 return S_FALSE;
1129 return S_OK; 1129 return S_OK;
1130 } 1130 }
1131 1131
1132 STDMETHODIMP 1132 STDMETHODIMP
1133 BrowserAccessibilityWin::get_localizedExtendedRole( 1133 BrowserAccessibilityWin::get_localizedExtendedRole(
1134 BSTR* localized_extended_role) { 1134 BSTR* localized_extended_role) {
1135 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_LOCALIZED_EXTENDED_ROLE); 1135 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_LOCALIZED_EXTENDED_ROLE);
1136 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 1136 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
1137 1137
1138 if (!instance_active()) 1138 if (!instance_active())
1139 return E_FAIL; 1139 return E_FAIL;
1140 1140
1141 if (!localized_extended_role) 1141 if (!localized_extended_role)
1142 return E_INVALIDARG; 1142 return E_INVALIDARG;
1143 1143
1144 return GetStringAttributeAsBstr( 1144 return GetStringAttributeAsBstr(
1145 ui::AX_ATTR_ROLE_DESCRIPTION, localized_extended_role); 1145 ui::AX_ATTR_ROLE_DESCRIPTION, localized_extended_role);
1146 } 1146 }
1147 1147
1148 // 1148 //
1149 // IAccessible2 methods not implemented. 1149 // IAccessible2 methods not implemented.
1150 // 1150 //
1151 1151
1152 STDMETHODIMP BrowserAccessibilityWin::get_extendedRole(BSTR* extended_role) { 1152 STDMETHODIMP BrowserAccessibilityWin::get_extendedRole(BSTR* extended_role) {
1153 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_EXTENDED_ROLE); 1153 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_EXTENDED_ROLE);
1154 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 1154 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
1155 return E_NOTIMPL; 1155 return E_NOTIMPL;
1156 } 1156 }
1157 STDMETHODIMP 1157 STDMETHODIMP
1158 BrowserAccessibilityWin::get_nExtendedStates(LONG* n_extended_states) { 1158 BrowserAccessibilityWin::get_nExtendedStates(LONG* n_extended_states) {
1159 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_N_EXTENDED_STATES); 1159 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_N_EXTENDED_STATES);
1160 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 1160 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
1161 return E_NOTIMPL; 1161 return E_NOTIMPL;
1162 } 1162 }
1163 STDMETHODIMP 1163 STDMETHODIMP
1164 BrowserAccessibilityWin::get_extendedStates(LONG max_extended_states, 1164 BrowserAccessibilityWin::get_extendedStates(LONG max_extended_states,
1165 BSTR** extended_states, 1165 BSTR** extended_states,
1166 LONG* n_extended_states) { 1166 LONG* n_extended_states) {
1167 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_EXTENDED_STATES); 1167 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_EXTENDED_STATES);
1168 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 1168 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
1169 return E_NOTIMPL; 1169 return E_NOTIMPL;
1170 } 1170 }
1171 STDMETHODIMP 1171 STDMETHODIMP
1172 BrowserAccessibilityWin::get_localizedExtendedStates( 1172 BrowserAccessibilityWin::get_localizedExtendedStates(
1173 LONG max_localized_extended_states, 1173 LONG max_localized_extended_states,
1174 BSTR** localized_extended_states, 1174 BSTR** localized_extended_states,
1175 LONG* n_localized_extended_states) { 1175 LONG* n_localized_extended_states) {
1176 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_LOCALIZED_EXTENDED_STATES); 1176 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_LOCALIZED_EXTENDED_STATES);
1177 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 1177 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
1178 return E_NOTIMPL; 1178 return E_NOTIMPL;
1179 } 1179 }
1180 STDMETHODIMP BrowserAccessibilityWin::get_locale(IA2Locale* locale) { 1180 STDMETHODIMP BrowserAccessibilityWin::get_locale(IA2Locale* locale) {
1181 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_LOCALE); 1181 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_LOCALE);
1182 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 1182 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
1183 return E_NOTIMPL; 1183 return E_NOTIMPL;
1184 } 1184 }
1185 1185
1186 // 1186 //
1187 // IAccessibleApplication methods. 1187 // IAccessibleApplication methods.
1188 // 1188 //
1189 1189
1190 STDMETHODIMP BrowserAccessibilityWin::get_appName(BSTR* app_name) { 1190 STDMETHODIMP BrowserAccessibilityWin::get_appName(BSTR* app_name) {
1191 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_APP_NAME); 1191 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_APP_NAME);
1192 // No need to check |instance_active()| because this interface is 1192 // No need to check |instance_active()| because this interface is
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
1325 1325
1326 // 1326 //
1327 // IAccessibleTable methods. 1327 // IAccessibleTable methods.
1328 // 1328 //
1329 1329
1330 STDMETHODIMP BrowserAccessibilityWin::get_accessibleAt( 1330 STDMETHODIMP BrowserAccessibilityWin::get_accessibleAt(
1331 long row, 1331 long row,
1332 long column, 1332 long column,
1333 IUnknown** accessible) { 1333 IUnknown** accessible) {
1334 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_ACCESSIBLE_AT); 1334 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_ACCESSIBLE_AT);
1335 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 1335 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
1336 if (!instance_active()) 1336 if (!instance_active())
1337 return E_FAIL; 1337 return E_FAIL;
1338 1338
1339 if (!accessible) 1339 if (!accessible)
1340 return E_INVALIDARG; 1340 return E_INVALIDARG;
1341 1341
1342 int columns; 1342 int columns;
1343 int rows; 1343 int rows;
1344 if (!GetIntAttribute( 1344 if (!GetIntAttribute(
1345 ui::AX_ATTR_TABLE_COLUMN_COUNT, &columns) || 1345 ui::AX_ATTR_TABLE_COLUMN_COUNT, &columns) ||
(...skipping 17 matching lines...) Expand all
1363 *accessible = static_cast<IAccessible*>(cell->NewReference()); 1363 *accessible = static_cast<IAccessible*>(cell->NewReference());
1364 return S_OK; 1364 return S_OK;
1365 } 1365 }
1366 1366
1367 *accessible = NULL; 1367 *accessible = NULL;
1368 return E_INVALIDARG; 1368 return E_INVALIDARG;
1369 } 1369 }
1370 1370
1371 STDMETHODIMP BrowserAccessibilityWin::get_caption(IUnknown** accessible) { 1371 STDMETHODIMP BrowserAccessibilityWin::get_caption(IUnknown** accessible) {
1372 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_CAPTION); 1372 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_CAPTION);
1373 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 1373 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
1374 if (!instance_active()) 1374 if (!instance_active())
1375 return E_FAIL; 1375 return E_FAIL;
1376 1376
1377 if (!accessible) 1377 if (!accessible)
1378 return E_INVALIDARG; 1378 return E_INVALIDARG;
1379 1379
1380 // TODO(dmazzoni): implement 1380 // TODO(dmazzoni): implement
1381 return S_FALSE; 1381 return S_FALSE;
1382 } 1382 }
1383 1383
1384 STDMETHODIMP BrowserAccessibilityWin::get_childIndex(long row, 1384 STDMETHODIMP BrowserAccessibilityWin::get_childIndex(long row,
1385 long column, 1385 long column,
1386 long* cell_index) { 1386 long* cell_index) {
1387 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_CHILD_INDEX); 1387 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_CHILD_INDEX);
1388 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 1388 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
1389 if (!instance_active()) 1389 if (!instance_active())
1390 return E_FAIL; 1390 return E_FAIL;
1391 1391
1392 if (!cell_index) 1392 if (!cell_index)
1393 return E_INVALIDARG; 1393 return E_INVALIDARG;
1394 1394
1395 int columns; 1395 int columns;
1396 int rows; 1396 int rows;
1397 if (!GetIntAttribute( 1397 if (!GetIntAttribute(
1398 ui::AX_ATTR_TABLE_COLUMN_COUNT, &columns) || 1398 ui::AX_ATTR_TABLE_COLUMN_COUNT, &columns) ||
(...skipping 19 matching lines...) Expand all
1418 return S_OK; 1418 return S_OK;
1419 } 1419 }
1420 } 1420 }
1421 1421
1422 return S_FALSE; 1422 return S_FALSE;
1423 } 1423 }
1424 1424
1425 STDMETHODIMP BrowserAccessibilityWin::get_columnDescription(long column, 1425 STDMETHODIMP BrowserAccessibilityWin::get_columnDescription(long column,
1426 BSTR* description) { 1426 BSTR* description) {
1427 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_COLUMN_DESCRIPTION); 1427 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_COLUMN_DESCRIPTION);
1428 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 1428 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
1429 if (!instance_active()) 1429 if (!instance_active())
1430 return E_FAIL; 1430 return E_FAIL;
1431 1431
1432 if (!description) 1432 if (!description)
1433 return E_INVALIDARG; 1433 return E_INVALIDARG;
1434 1434
1435 int columns; 1435 int columns;
1436 int rows; 1436 int rows;
1437 if (!GetIntAttribute( 1437 if (!GetIntAttribute(
1438 ui::AX_ATTR_TABLE_COLUMN_COUNT, &columns) || 1438 ui::AX_ATTR_TABLE_COLUMN_COUNT, &columns) ||
(...skipping 27 matching lines...) Expand all
1466 } 1466 }
1467 1467
1468 return S_FALSE; 1468 return S_FALSE;
1469 } 1469 }
1470 1470
1471 STDMETHODIMP BrowserAccessibilityWin::get_columnExtentAt( 1471 STDMETHODIMP BrowserAccessibilityWin::get_columnExtentAt(
1472 long row, 1472 long row,
1473 long column, 1473 long column,
1474 long* n_columns_spanned) { 1474 long* n_columns_spanned) {
1475 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_COLUMN_EXTENT_AT); 1475 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_COLUMN_EXTENT_AT);
1476 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 1476 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
1477 if (!instance_active()) 1477 if (!instance_active())
1478 return E_FAIL; 1478 return E_FAIL;
1479 1479
1480 if (!n_columns_spanned) 1480 if (!n_columns_spanned)
1481 return E_INVALIDARG; 1481 return E_INVALIDARG;
1482 1482
1483 int columns; 1483 int columns;
1484 int rows; 1484 int rows;
1485 if (!GetIntAttribute( 1485 if (!GetIntAttribute(
1486 ui::AX_ATTR_TABLE_COLUMN_COUNT, &columns) || 1486 ui::AX_ATTR_TABLE_COLUMN_COUNT, &columns) ||
(...skipping 19 matching lines...) Expand all
1506 return S_OK; 1506 return S_OK;
1507 } 1507 }
1508 1508
1509 return S_FALSE; 1509 return S_FALSE;
1510 } 1510 }
1511 1511
1512 STDMETHODIMP BrowserAccessibilityWin::get_columnHeader( 1512 STDMETHODIMP BrowserAccessibilityWin::get_columnHeader(
1513 IAccessibleTable** accessible_table, 1513 IAccessibleTable** accessible_table,
1514 long* starting_row_index) { 1514 long* starting_row_index) {
1515 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_COLUMN_HEADER); 1515 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_COLUMN_HEADER);
1516 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 1516 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
1517 // TODO(dmazzoni): implement 1517 // TODO(dmazzoni): implement
1518 return E_NOTIMPL; 1518 return E_NOTIMPL;
1519 } 1519 }
1520 1520
1521 STDMETHODIMP BrowserAccessibilityWin::get_columnIndex(long cell_index, 1521 STDMETHODIMP BrowserAccessibilityWin::get_columnIndex(long cell_index,
1522 long* column_index) { 1522 long* column_index) {
1523 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_COLUMN_INDEX); 1523 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_COLUMN_INDEX);
1524 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 1524 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
1525 if (!instance_active()) 1525 if (!instance_active())
1526 return E_FAIL; 1526 return E_FAIL;
1527 1527
1528 if (!column_index) 1528 if (!column_index)
1529 return E_INVALIDARG; 1529 return E_INVALIDARG;
1530 1530
1531 const std::vector<int32_t>& unique_cell_ids = 1531 const std::vector<int32_t>& unique_cell_ids =
1532 GetIntListAttribute(ui::AX_ATTR_UNIQUE_CELL_IDS); 1532 GetIntListAttribute(ui::AX_ATTR_UNIQUE_CELL_IDS);
1533 int cell_id_count = static_cast<int>(unique_cell_ids.size()); 1533 int cell_id_count = static_cast<int>(unique_cell_ids.size());
1534 if (cell_index < 0) 1534 if (cell_index < 0)
1535 return E_INVALIDARG; 1535 return E_INVALIDARG;
1536 if (cell_index >= cell_id_count) 1536 if (cell_index >= cell_id_count)
1537 return S_FALSE; 1537 return S_FALSE;
1538 1538
1539 int cell_id = unique_cell_ids[cell_index]; 1539 int cell_id = unique_cell_ids[cell_index];
1540 BrowserAccessibilityWin* cell = GetFromID(cell_id); 1540 BrowserAccessibilityWin* cell = GetFromID(cell_id);
1541 int col_index; 1541 int col_index;
1542 if (cell && 1542 if (cell &&
1543 cell->GetIntAttribute( 1543 cell->GetIntAttribute(
1544 ui::AX_ATTR_TABLE_CELL_COLUMN_INDEX, &col_index)) { 1544 ui::AX_ATTR_TABLE_CELL_COLUMN_INDEX, &col_index)) {
1545 *column_index = col_index; 1545 *column_index = col_index;
1546 return S_OK; 1546 return S_OK;
1547 } 1547 }
1548 1548
1549 return S_FALSE; 1549 return S_FALSE;
1550 } 1550 }
1551 1551
1552 STDMETHODIMP BrowserAccessibilityWin::get_nColumns(long* column_count) { 1552 STDMETHODIMP BrowserAccessibilityWin::get_nColumns(long* column_count) {
1553 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_N_COLUMNS); 1553 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_N_COLUMNS);
1554 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 1554 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
1555 if (!instance_active()) 1555 if (!instance_active())
1556 return E_FAIL; 1556 return E_FAIL;
1557 1557
1558 if (!column_count) 1558 if (!column_count)
1559 return E_INVALIDARG; 1559 return E_INVALIDARG;
1560 1560
1561 int columns; 1561 int columns;
1562 if (GetIntAttribute( 1562 if (GetIntAttribute(
1563 ui::AX_ATTR_TABLE_COLUMN_COUNT, &columns)) { 1563 ui::AX_ATTR_TABLE_COLUMN_COUNT, &columns)) {
1564 *column_count = columns; 1564 *column_count = columns;
1565 return S_OK; 1565 return S_OK;
1566 } 1566 }
1567 1567
1568 return S_FALSE; 1568 return S_FALSE;
1569 } 1569 }
1570 1570
1571 STDMETHODIMP BrowserAccessibilityWin::get_nRows(long* row_count) { 1571 STDMETHODIMP BrowserAccessibilityWin::get_nRows(long* row_count) {
1572 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_N_ROWS); 1572 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_N_ROWS);
1573 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 1573 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
1574 if (!instance_active()) 1574 if (!instance_active())
1575 return E_FAIL; 1575 return E_FAIL;
1576 1576
1577 if (!row_count) 1577 if (!row_count)
1578 return E_INVALIDARG; 1578 return E_INVALIDARG;
1579 1579
1580 int rows; 1580 int rows;
1581 if (GetIntAttribute(ui::AX_ATTR_TABLE_ROW_COUNT, &rows)) { 1581 if (GetIntAttribute(ui::AX_ATTR_TABLE_ROW_COUNT, &rows)) {
1582 *row_count = rows; 1582 *row_count = rows;
1583 return S_OK; 1583 return S_OK;
1584 } 1584 }
1585 1585
1586 return S_FALSE; 1586 return S_FALSE;
1587 } 1587 }
1588 1588
1589 STDMETHODIMP BrowserAccessibilityWin::get_nSelectedChildren(long* cell_count) { 1589 STDMETHODIMP BrowserAccessibilityWin::get_nSelectedChildren(long* cell_count) {
1590 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_N_SELECTED_CHILDREN); 1590 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_N_SELECTED_CHILDREN);
1591 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 1591 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
1592 if (!instance_active()) 1592 if (!instance_active())
1593 return E_FAIL; 1593 return E_FAIL;
1594 1594
1595 if (!cell_count) 1595 if (!cell_count)
1596 return E_INVALIDARG; 1596 return E_INVALIDARG;
1597 1597
1598 // TODO(dmazzoni): add support for selected cells/rows/columns in tables. 1598 // TODO(dmazzoni): add support for selected cells/rows/columns in tables.
1599 *cell_count = 0; 1599 *cell_count = 0;
1600 return S_OK; 1600 return S_OK;
1601 } 1601 }
1602 1602
1603 STDMETHODIMP BrowserAccessibilityWin::get_nSelectedColumns(long* column_count) { 1603 STDMETHODIMP BrowserAccessibilityWin::get_nSelectedColumns(long* column_count) {
1604 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_N_SELECTED_COLUMNS); 1604 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_N_SELECTED_COLUMNS);
1605 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 1605 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
1606 if (!instance_active()) 1606 if (!instance_active())
1607 return E_FAIL; 1607 return E_FAIL;
1608 1608
1609 if (!column_count) 1609 if (!column_count)
1610 return E_INVALIDARG; 1610 return E_INVALIDARG;
1611 1611
1612 *column_count = 0; 1612 *column_count = 0;
1613 return S_OK; 1613 return S_OK;
1614 } 1614 }
1615 1615
1616 STDMETHODIMP BrowserAccessibilityWin::get_nSelectedRows(long* row_count) { 1616 STDMETHODIMP BrowserAccessibilityWin::get_nSelectedRows(long* row_count) {
1617 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_N_SELECTED_ROWS); 1617 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_N_SELECTED_ROWS);
1618 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 1618 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
1619 if (!instance_active()) 1619 if (!instance_active())
1620 return E_FAIL; 1620 return E_FAIL;
1621 1621
1622 if (!row_count) 1622 if (!row_count)
1623 return E_INVALIDARG; 1623 return E_INVALIDARG;
1624 1624
1625 *row_count = 0; 1625 *row_count = 0;
1626 return S_OK; 1626 return S_OK;
1627 } 1627 }
1628 1628
1629 STDMETHODIMP BrowserAccessibilityWin::get_rowDescription(long row, 1629 STDMETHODIMP BrowserAccessibilityWin::get_rowDescription(long row,
1630 BSTR* description) { 1630 BSTR* description) {
1631 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_ROW_DESCRIPTION); 1631 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_ROW_DESCRIPTION);
1632 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 1632 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
1633 if (!instance_active()) 1633 if (!instance_active())
1634 return E_FAIL; 1634 return E_FAIL;
1635 1635
1636 if (!description) 1636 if (!description)
1637 return E_INVALIDARG; 1637 return E_INVALIDARG;
1638 1638
1639 int columns; 1639 int columns;
1640 int rows; 1640 int rows;
1641 if (!GetIntAttribute( 1641 if (!GetIntAttribute(
1642 ui::AX_ATTR_TABLE_COLUMN_COUNT, &columns) || 1642 ui::AX_ATTR_TABLE_COLUMN_COUNT, &columns) ||
(...skipping 26 matching lines...) Expand all
1669 } 1669 }
1670 } 1670 }
1671 1671
1672 return S_FALSE; 1672 return S_FALSE;
1673 } 1673 }
1674 1674
1675 STDMETHODIMP BrowserAccessibilityWin::get_rowExtentAt(long row, 1675 STDMETHODIMP BrowserAccessibilityWin::get_rowExtentAt(long row,
1676 long column, 1676 long column,
1677 long* n_rows_spanned) { 1677 long* n_rows_spanned) {
1678 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_ROW_EXTENT_AT); 1678 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_ROW_EXTENT_AT);
1679 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 1679 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
1680 if (!instance_active()) 1680 if (!instance_active())
1681 return E_FAIL; 1681 return E_FAIL;
1682 1682
1683 if (!n_rows_spanned) 1683 if (!n_rows_spanned)
1684 return E_INVALIDARG; 1684 return E_INVALIDARG;
1685 1685
1686 int columns; 1686 int columns;
1687 int rows; 1687 int rows;
1688 if (!GetIntAttribute( 1688 if (!GetIntAttribute(
1689 ui::AX_ATTR_TABLE_COLUMN_COUNT, &columns) || 1689 ui::AX_ATTR_TABLE_COLUMN_COUNT, &columns) ||
(...skipping 19 matching lines...) Expand all
1709 return S_OK; 1709 return S_OK;
1710 } 1710 }
1711 1711
1712 return S_FALSE; 1712 return S_FALSE;
1713 } 1713 }
1714 1714
1715 STDMETHODIMP BrowserAccessibilityWin::get_rowHeader( 1715 STDMETHODIMP BrowserAccessibilityWin::get_rowHeader(
1716 IAccessibleTable** accessible_table, 1716 IAccessibleTable** accessible_table,
1717 long* starting_column_index) { 1717 long* starting_column_index) {
1718 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_ROW_HEADER); 1718 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_ROW_HEADER);
1719 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 1719 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
1720 // TODO(dmazzoni): implement 1720 // TODO(dmazzoni): implement
1721 return E_NOTIMPL; 1721 return E_NOTIMPL;
1722 } 1722 }
1723 1723
1724 STDMETHODIMP BrowserAccessibilityWin::get_rowIndex(long cell_index, 1724 STDMETHODIMP BrowserAccessibilityWin::get_rowIndex(long cell_index,
1725 long* row_index) { 1725 long* row_index) {
1726 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_ROW_INDEX); 1726 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_ROW_INDEX);
1727 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 1727 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
1728 if (!instance_active()) 1728 if (!instance_active())
1729 return E_FAIL; 1729 return E_FAIL;
1730 1730
1731 if (!row_index) 1731 if (!row_index)
1732 return E_INVALIDARG; 1732 return E_INVALIDARG;
1733 1733
1734 const std::vector<int32_t>& unique_cell_ids = 1734 const std::vector<int32_t>& unique_cell_ids =
1735 GetIntListAttribute(ui::AX_ATTR_UNIQUE_CELL_IDS); 1735 GetIntListAttribute(ui::AX_ATTR_UNIQUE_CELL_IDS);
1736 int cell_id_count = static_cast<int>(unique_cell_ids.size()); 1736 int cell_id_count = static_cast<int>(unique_cell_ids.size());
1737 if (cell_index < 0) 1737 if (cell_index < 0)
(...skipping 11 matching lines...) Expand all
1749 return S_OK; 1749 return S_OK;
1750 } 1750 }
1751 1751
1752 return S_FALSE; 1752 return S_FALSE;
1753 } 1753 }
1754 1754
1755 STDMETHODIMP BrowserAccessibilityWin::get_selectedChildren(long max_children, 1755 STDMETHODIMP BrowserAccessibilityWin::get_selectedChildren(long max_children,
1756 long** children, 1756 long** children,
1757 long* n_children) { 1757 long* n_children) {
1758 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_SELECTED_CHILDREN); 1758 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_SELECTED_CHILDREN);
1759 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 1759 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
1760 if (!instance_active()) 1760 if (!instance_active())
1761 return E_FAIL; 1761 return E_FAIL;
1762 1762
1763 if (!children || !n_children) 1763 if (!children || !n_children)
1764 return E_INVALIDARG; 1764 return E_INVALIDARG;
1765 1765
1766 // TODO(dmazzoni): Implement this. 1766 // TODO(dmazzoni): Implement this.
1767 *n_children = 0; 1767 *n_children = 0;
1768 return S_OK; 1768 return S_OK;
1769 } 1769 }
1770 1770
1771 STDMETHODIMP BrowserAccessibilityWin::get_selectedColumns(long max_columns, 1771 STDMETHODIMP BrowserAccessibilityWin::get_selectedColumns(long max_columns,
1772 long** columns, 1772 long** columns,
1773 long* n_columns) { 1773 long* n_columns) {
1774 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_SELECTED_COLUMNS); 1774 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_SELECTED_COLUMNS);
1775 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 1775 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
1776 if (!instance_active()) 1776 if (!instance_active())
1777 return E_FAIL; 1777 return E_FAIL;
1778 1778
1779 if (!columns || !n_columns) 1779 if (!columns || !n_columns)
1780 return E_INVALIDARG; 1780 return E_INVALIDARG;
1781 1781
1782 // TODO(dmazzoni): Implement this. 1782 // TODO(dmazzoni): Implement this.
1783 *n_columns = 0; 1783 *n_columns = 0;
1784 return S_OK; 1784 return S_OK;
1785 } 1785 }
1786 1786
1787 STDMETHODIMP BrowserAccessibilityWin::get_selectedRows(long max_rows, 1787 STDMETHODIMP BrowserAccessibilityWin::get_selectedRows(long max_rows,
1788 long** rows, 1788 long** rows,
1789 long* n_rows) { 1789 long* n_rows) {
1790 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_SELECTED_ROWS); 1790 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_SELECTED_ROWS);
1791 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 1791 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
1792 if (!instance_active()) 1792 if (!instance_active())
1793 return E_FAIL; 1793 return E_FAIL;
1794 1794
1795 if (!rows || !n_rows) 1795 if (!rows || !n_rows)
1796 return E_INVALIDARG; 1796 return E_INVALIDARG;
1797 1797
1798 // TODO(dmazzoni): Implement this. 1798 // TODO(dmazzoni): Implement this.
1799 *n_rows = 0; 1799 *n_rows = 0;
1800 return S_OK; 1800 return S_OK;
1801 } 1801 }
1802 1802
1803 STDMETHODIMP BrowserAccessibilityWin::get_summary(IUnknown** accessible) { 1803 STDMETHODIMP BrowserAccessibilityWin::get_summary(IUnknown** accessible) {
1804 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_SUMMARY); 1804 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_SUMMARY);
1805 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 1805 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
1806 if (!instance_active()) 1806 if (!instance_active())
1807 return E_FAIL; 1807 return E_FAIL;
1808 1808
1809 if (!accessible) 1809 if (!accessible)
1810 return E_INVALIDARG; 1810 return E_INVALIDARG;
1811 1811
1812 // TODO(dmazzoni): implement 1812 // TODO(dmazzoni): implement
1813 return S_FALSE; 1813 return S_FALSE;
1814 } 1814 }
1815 1815
1816 STDMETHODIMP BrowserAccessibilityWin::get_isColumnSelected( 1816 STDMETHODIMP BrowserAccessibilityWin::get_isColumnSelected(
1817 long column, 1817 long column,
1818 boolean* is_selected) { 1818 boolean* is_selected) {
1819 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_IS_COLUMN_SELECTED); 1819 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_IS_COLUMN_SELECTED);
1820 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 1820 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
1821 if (!instance_active()) 1821 if (!instance_active())
1822 return E_FAIL; 1822 return E_FAIL;
1823 1823
1824 if (!is_selected) 1824 if (!is_selected)
1825 return E_INVALIDARG; 1825 return E_INVALIDARG;
1826 1826
1827 // TODO(dmazzoni): Implement this. 1827 // TODO(dmazzoni): Implement this.
1828 *is_selected = false; 1828 *is_selected = false;
1829 return S_OK; 1829 return S_OK;
1830 } 1830 }
1831 1831
1832 STDMETHODIMP BrowserAccessibilityWin::get_isRowSelected(long row, 1832 STDMETHODIMP BrowserAccessibilityWin::get_isRowSelected(long row,
1833 boolean* is_selected) { 1833 boolean* is_selected) {
1834 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_IS_ROW_SELECTED); 1834 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_IS_ROW_SELECTED);
1835 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 1835 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
1836 if (!instance_active()) 1836 if (!instance_active())
1837 return E_FAIL; 1837 return E_FAIL;
1838 1838
1839 if (!is_selected) 1839 if (!is_selected)
1840 return E_INVALIDARG; 1840 return E_INVALIDARG;
1841 1841
1842 // TODO(dmazzoni): Implement this. 1842 // TODO(dmazzoni): Implement this.
1843 *is_selected = false; 1843 *is_selected = false;
1844 return S_OK; 1844 return S_OK;
1845 } 1845 }
1846 1846
1847 STDMETHODIMP BrowserAccessibilityWin::get_isSelected(long row, 1847 STDMETHODIMP BrowserAccessibilityWin::get_isSelected(long row,
1848 long column, 1848 long column,
1849 boolean* is_selected) { 1849 boolean* is_selected) {
1850 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_IS_SELECTED); 1850 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_IS_SELECTED);
1851 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 1851 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
1852 if (!instance_active()) 1852 if (!instance_active())
1853 return E_FAIL; 1853 return E_FAIL;
1854 1854
1855 if (!is_selected) 1855 if (!is_selected)
1856 return E_INVALIDARG; 1856 return E_INVALIDARG;
1857 1857
1858 // TODO(dmazzoni): Implement this. 1858 // TODO(dmazzoni): Implement this.
1859 *is_selected = false; 1859 *is_selected = false;
1860 return S_OK; 1860 return S_OK;
1861 } 1861 }
1862 1862
1863 STDMETHODIMP BrowserAccessibilityWin::get_rowColumnExtentsAtIndex( 1863 STDMETHODIMP BrowserAccessibilityWin::get_rowColumnExtentsAtIndex(
1864 long index, 1864 long index,
1865 long* row, 1865 long* row,
1866 long* column, 1866 long* column,
1867 long* row_extents, 1867 long* row_extents,
1868 long* column_extents, 1868 long* column_extents,
1869 boolean* is_selected) { 1869 boolean* is_selected) {
1870 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_ROW_COLUMN_EXTENTS_AT_INDEX); 1870 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_ROW_COLUMN_EXTENTS_AT_INDEX);
1871 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 1871 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
1872 if (!instance_active()) 1872 if (!instance_active())
1873 return E_FAIL; 1873 return E_FAIL;
1874 1874
1875 if (!row || !column || !row_extents || !column_extents || !is_selected) 1875 if (!row || !column || !row_extents || !column_extents || !is_selected)
1876 return E_INVALIDARG; 1876 return E_INVALIDARG;
1877 1877
1878 const std::vector<int32_t>& unique_cell_ids = 1878 const std::vector<int32_t>& unique_cell_ids =
1879 GetIntListAttribute(ui::AX_ATTR_UNIQUE_CELL_IDS); 1879 GetIntListAttribute(ui::AX_ATTR_UNIQUE_CELL_IDS);
1880 int cell_id_count = static_cast<int>(unique_cell_ids.size()); 1880 int cell_id_count = static_cast<int>(unique_cell_ids.size());
1881 if (index < 0) 1881 if (index < 0)
(...skipping 15 matching lines...) Expand all
1897 *row_extents = rowspan; 1897 *row_extents = rowspan;
1898 *column_extents = colspan; 1898 *column_extents = colspan;
1899 return S_OK; 1899 return S_OK;
1900 } 1900 }
1901 1901
1902 return S_FALSE; 1902 return S_FALSE;
1903 } 1903 }
1904 1904
1905 STDMETHODIMP BrowserAccessibilityWin::selectRow(long row) { 1905 STDMETHODIMP BrowserAccessibilityWin::selectRow(long row) {
1906 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_SELECT_ROW); 1906 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_SELECT_ROW);
1907 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 1907 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
1908 return E_NOTIMPL; 1908 return E_NOTIMPL;
1909 } 1909 }
1910 1910
1911 STDMETHODIMP BrowserAccessibilityWin::selectColumn(long column) { 1911 STDMETHODIMP BrowserAccessibilityWin::selectColumn(long column) {
1912 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_SELECT_COLUMN); 1912 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_SELECT_COLUMN);
1913 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 1913 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
1914 return E_NOTIMPL; 1914 return E_NOTIMPL;
1915 } 1915 }
1916 1916
1917 STDMETHODIMP BrowserAccessibilityWin::unselectRow(long row) { 1917 STDMETHODIMP BrowserAccessibilityWin::unselectRow(long row) {
1918 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_UNSELECT_ROW); 1918 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_UNSELECT_ROW);
1919 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 1919 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
1920 return E_NOTIMPL; 1920 return E_NOTIMPL;
1921 } 1921 }
1922 1922
1923 STDMETHODIMP BrowserAccessibilityWin::unselectColumn(long column) { 1923 STDMETHODIMP BrowserAccessibilityWin::unselectColumn(long column) {
1924 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_UNSELECT_COLUMN); 1924 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_UNSELECT_COLUMN);
1925 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 1925 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
1926 return E_NOTIMPL; 1926 return E_NOTIMPL;
1927 } 1927 }
1928 1928
1929 STDMETHODIMP 1929 STDMETHODIMP
1930 BrowserAccessibilityWin::get_modelChange(IA2TableModelChange* model_change) { 1930 BrowserAccessibilityWin::get_modelChange(IA2TableModelChange* model_change) {
1931 return E_NOTIMPL; 1931 return E_NOTIMPL;
1932 } 1932 }
1933 1933
1934 // 1934 //
1935 // IAccessibleTable2 methods. 1935 // IAccessibleTable2 methods.
1936 // 1936 //
1937 1937
1938 STDMETHODIMP BrowserAccessibilityWin::get_cellAt(long row, 1938 STDMETHODIMP BrowserAccessibilityWin::get_cellAt(long row,
1939 long column, 1939 long column,
1940 IUnknown** cell) { 1940 IUnknown** cell) {
1941 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_CELL_AT); 1941 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_CELL_AT);
1942 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 1942 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
1943 return get_accessibleAt(row, column, cell); 1943 return get_accessibleAt(row, column, cell);
1944 } 1944 }
1945 1945
1946 STDMETHODIMP BrowserAccessibilityWin::get_nSelectedCells(long* cell_count) { 1946 STDMETHODIMP BrowserAccessibilityWin::get_nSelectedCells(long* cell_count) {
1947 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_N_SELECTED_CELLS); 1947 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_N_SELECTED_CELLS);
1948 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 1948 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
1949 return get_nSelectedChildren(cell_count); 1949 return get_nSelectedChildren(cell_count);
1950 } 1950 }
1951 1951
1952 STDMETHODIMP BrowserAccessibilityWin::get_selectedCells( 1952 STDMETHODIMP BrowserAccessibilityWin::get_selectedCells(
1953 IUnknown*** cells, 1953 IUnknown*** cells,
1954 long* n_selected_cells) { 1954 long* n_selected_cells) {
1955 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_SELECTED_CELLS); 1955 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_SELECTED_CELLS);
1956 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 1956 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
1957 if (!instance_active()) 1957 if (!instance_active())
1958 return E_FAIL; 1958 return E_FAIL;
1959 1959
1960 if (!cells || !n_selected_cells) 1960 if (!cells || !n_selected_cells)
1961 return E_INVALIDARG; 1961 return E_INVALIDARG;
1962 1962
1963 // TODO(dmazzoni): Implement this. 1963 // TODO(dmazzoni): Implement this.
1964 *n_selected_cells = 0; 1964 *n_selected_cells = 0;
1965 return S_OK; 1965 return S_OK;
1966 } 1966 }
1967 1967
1968 STDMETHODIMP BrowserAccessibilityWin::get_selectedColumns(long** columns, 1968 STDMETHODIMP BrowserAccessibilityWin::get_selectedColumns(long** columns,
1969 long* n_columns) { 1969 long* n_columns) {
1970 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_TABLE2_GET_SELECTED_COLUMNS); 1970 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_TABLE2_GET_SELECTED_COLUMNS);
1971 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 1971 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
1972 if (!instance_active()) 1972 if (!instance_active())
1973 return E_FAIL; 1973 return E_FAIL;
1974 1974
1975 if (!columns || !n_columns) 1975 if (!columns || !n_columns)
1976 return E_INVALIDARG; 1976 return E_INVALIDARG;
1977 1977
1978 // TODO(dmazzoni): Implement this. 1978 // TODO(dmazzoni): Implement this.
1979 *n_columns = 0; 1979 *n_columns = 0;
1980 return S_OK; 1980 return S_OK;
1981 } 1981 }
1982 1982
1983 STDMETHODIMP BrowserAccessibilityWin::get_selectedRows(long** rows, 1983 STDMETHODIMP BrowserAccessibilityWin::get_selectedRows(long** rows,
1984 long* n_rows) { 1984 long* n_rows) {
1985 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_TABLE2_GET_SELECTED_ROWS); 1985 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_TABLE2_GET_SELECTED_ROWS);
1986 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 1986 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
1987 if (!instance_active()) 1987 if (!instance_active())
1988 return E_FAIL; 1988 return E_FAIL;
1989 1989
1990 if (!rows || !n_rows) 1990 if (!rows || !n_rows)
1991 return E_INVALIDARG; 1991 return E_INVALIDARG;
1992 1992
1993 // TODO(dmazzoni): Implement this. 1993 // TODO(dmazzoni): Implement this.
1994 *n_rows = 0; 1994 *n_rows = 0;
1995 return S_OK; 1995 return S_OK;
1996 } 1996 }
1997 1997
1998 1998
1999 // 1999 //
2000 // IAccessibleTableCell methods. 2000 // IAccessibleTableCell methods.
2001 // 2001 //
2002 2002
2003 STDMETHODIMP BrowserAccessibilityWin::get_columnExtent( 2003 STDMETHODIMP BrowserAccessibilityWin::get_columnExtent(
2004 long* n_columns_spanned) { 2004 long* n_columns_spanned) {
2005 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_COLUMN_EXTENT); 2005 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_COLUMN_EXTENT);
2006 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 2006 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
2007 if (!instance_active()) 2007 if (!instance_active())
2008 return E_FAIL; 2008 return E_FAIL;
2009 2009
2010 if (!n_columns_spanned) 2010 if (!n_columns_spanned)
2011 return E_INVALIDARG; 2011 return E_INVALIDARG;
2012 2012
2013 int colspan; 2013 int colspan;
2014 if (GetIntAttribute( 2014 if (GetIntAttribute(
2015 ui::AX_ATTR_TABLE_CELL_COLUMN_SPAN, &colspan) && 2015 ui::AX_ATTR_TABLE_CELL_COLUMN_SPAN, &colspan) &&
2016 colspan >= 1) { 2016 colspan >= 1) {
2017 *n_columns_spanned = colspan; 2017 *n_columns_spanned = colspan;
2018 return S_OK; 2018 return S_OK;
2019 } 2019 }
2020 2020
2021 return S_FALSE; 2021 return S_FALSE;
2022 } 2022 }
2023 2023
2024 STDMETHODIMP BrowserAccessibilityWin::get_columnHeaderCells( 2024 STDMETHODIMP BrowserAccessibilityWin::get_columnHeaderCells(
2025 IUnknown*** cell_accessibles, 2025 IUnknown*** cell_accessibles,
2026 long* n_column_header_cells) { 2026 long* n_column_header_cells) {
2027 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_COLUMN_HEADER_CELLS); 2027 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_COLUMN_HEADER_CELLS);
2028 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 2028 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
2029 if (!instance_active()) 2029 if (!instance_active())
2030 return E_FAIL; 2030 return E_FAIL;
2031 2031
2032 if (!cell_accessibles || !n_column_header_cells) 2032 if (!cell_accessibles || !n_column_header_cells)
2033 return E_INVALIDARG; 2033 return E_INVALIDARG;
2034 2034
2035 *n_column_header_cells = 0; 2035 *n_column_header_cells = 0;
2036 2036
2037 int column; 2037 int column;
2038 if (!GetIntAttribute( 2038 if (!GetIntAttribute(
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
2080 ToBrowserAccessibilityWin(cell)->NewReference()); 2080 ToBrowserAccessibilityWin(cell)->NewReference());
2081 ++index; 2081 ++index;
2082 } 2082 }
2083 } 2083 }
2084 2084
2085 return S_OK; 2085 return S_OK;
2086 } 2086 }
2087 2087
2088 STDMETHODIMP BrowserAccessibilityWin::get_columnIndex(long* column_index) { 2088 STDMETHODIMP BrowserAccessibilityWin::get_columnIndex(long* column_index) {
2089 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_TABLECELL_GET_COLUMN_INDEX); 2089 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_TABLECELL_GET_COLUMN_INDEX);
2090 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 2090 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
2091 if (!instance_active()) 2091 if (!instance_active())
2092 return E_FAIL; 2092 return E_FAIL;
2093 2093
2094 if (!column_index) 2094 if (!column_index)
2095 return E_INVALIDARG; 2095 return E_INVALIDARG;
2096 2096
2097 int column; 2097 int column;
2098 if (GetIntAttribute( 2098 if (GetIntAttribute(
2099 ui::AX_ATTR_TABLE_CELL_COLUMN_INDEX, &column)) { 2099 ui::AX_ATTR_TABLE_CELL_COLUMN_INDEX, &column)) {
2100 *column_index = column; 2100 *column_index = column;
2101 return S_OK; 2101 return S_OK;
2102 } 2102 }
2103 2103
2104 return S_FALSE; 2104 return S_FALSE;
2105 } 2105 }
2106 2106
2107 STDMETHODIMP BrowserAccessibilityWin::get_rowExtent(long* n_rows_spanned) { 2107 STDMETHODIMP BrowserAccessibilityWin::get_rowExtent(long* n_rows_spanned) {
2108 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_ROW_EXTENT); 2108 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_ROW_EXTENT);
2109 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 2109 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
2110 if (!instance_active()) 2110 if (!instance_active())
2111 return E_FAIL; 2111 return E_FAIL;
2112 2112
2113 if (!n_rows_spanned) 2113 if (!n_rows_spanned)
2114 return E_INVALIDARG; 2114 return E_INVALIDARG;
2115 2115
2116 int rowspan; 2116 int rowspan;
2117 if (GetIntAttribute( 2117 if (GetIntAttribute(
2118 ui::AX_ATTR_TABLE_CELL_ROW_SPAN, &rowspan) && 2118 ui::AX_ATTR_TABLE_CELL_ROW_SPAN, &rowspan) &&
2119 rowspan >= 1) { 2119 rowspan >= 1) {
2120 *n_rows_spanned = rowspan; 2120 *n_rows_spanned = rowspan;
2121 return S_OK; 2121 return S_OK;
2122 } 2122 }
2123 2123
2124 return S_FALSE; 2124 return S_FALSE;
2125 } 2125 }
2126 2126
2127 STDMETHODIMP BrowserAccessibilityWin::get_rowHeaderCells( 2127 STDMETHODIMP BrowserAccessibilityWin::get_rowHeaderCells(
2128 IUnknown*** cell_accessibles, 2128 IUnknown*** cell_accessibles,
2129 long* n_row_header_cells) { 2129 long* n_row_header_cells) {
2130 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_ROW_HEADER_CELLS); 2130 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_ROW_HEADER_CELLS);
2131 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 2131 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
2132 if (!instance_active()) 2132 if (!instance_active())
2133 return E_FAIL; 2133 return E_FAIL;
2134 2134
2135 if (!cell_accessibles || !n_row_header_cells) 2135 if (!cell_accessibles || !n_row_header_cells)
2136 return E_INVALIDARG; 2136 return E_INVALIDARG;
2137 2137
2138 *n_row_header_cells = 0; 2138 *n_row_header_cells = 0;
2139 2139
2140 int row; 2140 int row;
2141 if (!GetIntAttribute( 2141 if (!GetIntAttribute(
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
2183 ToBrowserAccessibilityWin(cell)->NewReference()); 2183 ToBrowserAccessibilityWin(cell)->NewReference());
2184 ++index; 2184 ++index;
2185 } 2185 }
2186 } 2186 }
2187 2187
2188 return S_OK; 2188 return S_OK;
2189 } 2189 }
2190 2190
2191 STDMETHODIMP BrowserAccessibilityWin::get_rowIndex(long* row_index) { 2191 STDMETHODIMP BrowserAccessibilityWin::get_rowIndex(long* row_index) {
2192 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_TABLECELL_GET_ROW_INDEX); 2192 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_TABLECELL_GET_ROW_INDEX);
2193 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 2193 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
2194 if (!instance_active()) 2194 if (!instance_active())
2195 return E_FAIL; 2195 return E_FAIL;
2196 2196
2197 if (!row_index) 2197 if (!row_index)
2198 return E_INVALIDARG; 2198 return E_INVALIDARG;
2199 2199
2200 int row; 2200 int row;
2201 if (GetIntAttribute(ui::AX_ATTR_TABLE_CELL_ROW_INDEX, &row)) { 2201 if (GetIntAttribute(ui::AX_ATTR_TABLE_CELL_ROW_INDEX, &row)) {
2202 *row_index = row; 2202 *row_index = row;
2203 return S_OK; 2203 return S_OK;
2204 } 2204 }
2205 return S_FALSE; 2205 return S_FALSE;
2206 } 2206 }
2207 2207
2208 STDMETHODIMP BrowserAccessibilityWin::get_isSelected(boolean* is_selected) { 2208 STDMETHODIMP BrowserAccessibilityWin::get_isSelected(boolean* is_selected) {
2209 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_TABLECELL_GET_IS_SELECTED); 2209 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_TABLECELL_GET_IS_SELECTED);
2210 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 2210 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
2211 if (!instance_active()) 2211 if (!instance_active())
2212 return E_FAIL; 2212 return E_FAIL;
2213 2213
2214 if (!is_selected) 2214 if (!is_selected)
2215 return E_INVALIDARG; 2215 return E_INVALIDARG;
2216 2216
2217 *is_selected = false; 2217 *is_selected = false;
2218 return S_OK; 2218 return S_OK;
2219 } 2219 }
2220 2220
2221 STDMETHODIMP BrowserAccessibilityWin::get_rowColumnExtents( 2221 STDMETHODIMP BrowserAccessibilityWin::get_rowColumnExtents(
2222 long* row_index, 2222 long* row_index,
2223 long* column_index, 2223 long* column_index,
2224 long* row_extents, 2224 long* row_extents,
2225 long* column_extents, 2225 long* column_extents,
2226 boolean* is_selected) { 2226 boolean* is_selected) {
2227 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_ROW_COLUMN_EXTENTS); 2227 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_ROW_COLUMN_EXTENTS);
2228 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 2228 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
2229 if (!instance_active()) 2229 if (!instance_active())
2230 return E_FAIL; 2230 return E_FAIL;
2231 2231
2232 if (!row_index || 2232 if (!row_index ||
2233 !column_index || 2233 !column_index ||
2234 !row_extents || 2234 !row_extents ||
2235 !column_extents || 2235 !column_extents ||
2236 !is_selected) { 2236 !is_selected) {
2237 return E_INVALIDARG; 2237 return E_INVALIDARG;
2238 } 2238 }
(...skipping 15 matching lines...) Expand all
2254 *column_extents = colspan; 2254 *column_extents = colspan;
2255 *is_selected = false; 2255 *is_selected = false;
2256 return S_OK; 2256 return S_OK;
2257 } 2257 }
2258 2258
2259 return S_FALSE; 2259 return S_FALSE;
2260 } 2260 }
2261 2261
2262 STDMETHODIMP BrowserAccessibilityWin::get_table(IUnknown** table) { 2262 STDMETHODIMP BrowserAccessibilityWin::get_table(IUnknown** table) {
2263 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_TABLE); 2263 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_TABLE);
2264 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 2264 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
2265 if (!instance_active()) 2265 if (!instance_active())
2266 return E_FAIL; 2266 return E_FAIL;
2267 2267
2268 if (!table) 2268 if (!table)
2269 return E_INVALIDARG; 2269 return E_INVALIDARG;
2270 2270
2271 2271
2272 int row; 2272 int row;
2273 int column; 2273 int column;
2274 GetIntAttribute(ui::AX_ATTR_TABLE_CELL_ROW_INDEX, &row); 2274 GetIntAttribute(ui::AX_ATTR_TABLE_CELL_ROW_INDEX, &row);
(...skipping 12 matching lines...) Expand all
2287 2287
2288 return S_OK; 2288 return S_OK;
2289 } 2289 }
2290 2290
2291 // 2291 //
2292 // IAccessibleText methods. 2292 // IAccessibleText methods.
2293 // 2293 //
2294 2294
2295 STDMETHODIMP BrowserAccessibilityWin::get_nCharacters(LONG* n_characters) { 2295 STDMETHODIMP BrowserAccessibilityWin::get_nCharacters(LONG* n_characters) {
2296 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_N_CHARACTERS); 2296 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_N_CHARACTERS);
2297 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER | 2297 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER |
2298 ACCESSIBILITY_MODE_FLAG_INLINE_TEXT_BOXES); 2298 AccessibilityMode::INLINE_TEXT_BOXES);
2299 if (!instance_active()) 2299 if (!instance_active())
2300 return E_FAIL; 2300 return E_FAIL;
2301 2301
2302 if (!n_characters) 2302 if (!n_characters)
2303 return E_INVALIDARG; 2303 return E_INVALIDARG;
2304 2304
2305 *n_characters = static_cast<LONG>(GetText().size()); 2305 *n_characters = static_cast<LONG>(GetText().size());
2306 return S_OK; 2306 return S_OK;
2307 } 2307 }
2308 2308
2309 STDMETHODIMP BrowserAccessibilityWin::get_caretOffset(LONG* offset) { 2309 STDMETHODIMP BrowserAccessibilityWin::get_caretOffset(LONG* offset) {
2310 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_CARET_OFFSET); 2310 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_CARET_OFFSET);
2311 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 2311 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
2312 if (!instance_active()) 2312 if (!instance_active())
2313 return E_FAIL; 2313 return E_FAIL;
2314 2314
2315 if (!offset) 2315 if (!offset)
2316 return E_INVALIDARG; 2316 return E_INVALIDARG;
2317 2317
2318 if (!HasCaret()) 2318 if (!HasCaret())
2319 return S_FALSE; 2319 return S_FALSE;
2320 2320
2321 int selection_start, selection_end; 2321 int selection_start, selection_end;
2322 GetSelectionOffsets(&selection_start, &selection_end); 2322 GetSelectionOffsets(&selection_start, &selection_end);
2323 // The caret is always at the end of the selection. 2323 // The caret is always at the end of the selection.
2324 *offset = selection_end; 2324 *offset = selection_end;
2325 if (*offset < 0) 2325 if (*offset < 0)
2326 return S_FALSE; 2326 return S_FALSE;
2327 2327
2328 return S_OK; 2328 return S_OK;
2329 } 2329 }
2330 2330
2331 STDMETHODIMP BrowserAccessibilityWin::get_characterExtents( 2331 STDMETHODIMP BrowserAccessibilityWin::get_characterExtents(
2332 LONG offset, 2332 LONG offset,
2333 IA2CoordinateType coordinate_type, 2333 IA2CoordinateType coordinate_type,
2334 LONG* out_x, 2334 LONG* out_x,
2335 LONG* out_y, 2335 LONG* out_y,
2336 LONG* out_width, 2336 LONG* out_width,
2337 LONG* out_height) { 2337 LONG* out_height) {
2338 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_CHARACTER_EXTENTS); 2338 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_CHARACTER_EXTENTS);
2339 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER | 2339 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER |
2340 ACCESSIBILITY_MODE_FLAG_INLINE_TEXT_BOXES); 2340 AccessibilityMode::INLINE_TEXT_BOXES);
2341 if (!instance_active()) 2341 if (!instance_active())
2342 return E_FAIL; 2342 return E_FAIL;
2343 2343
2344 if (!out_x || !out_y || !out_width || !out_height) 2344 if (!out_x || !out_y || !out_width || !out_height)
2345 return E_INVALIDARG; 2345 return E_INVALIDARG;
2346 2346
2347 const base::string16& text_str = GetText(); 2347 const base::string16& text_str = GetText();
2348 HandleSpecialTextOffset(text_str, &offset); 2348 HandleSpecialTextOffset(text_str, &offset);
2349 2349
2350 if (offset < 0 || offset > static_cast<LONG>(text_str.size())) 2350 if (offset < 0 || offset > static_cast<LONG>(text_str.size()))
(...skipping 13 matching lines...) Expand all
2364 *out_x = character_bounds.x(); 2364 *out_x = character_bounds.x();
2365 *out_y = character_bounds.y(); 2365 *out_y = character_bounds.y();
2366 *out_width = character_bounds.width(); 2366 *out_width = character_bounds.width();
2367 *out_height = character_bounds.height(); 2367 *out_height = character_bounds.height();
2368 2368
2369 return S_OK; 2369 return S_OK;
2370 } 2370 }
2371 2371
2372 STDMETHODIMP BrowserAccessibilityWin::get_nSelections(LONG* n_selections) { 2372 STDMETHODIMP BrowserAccessibilityWin::get_nSelections(LONG* n_selections) {
2373 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_N_SELECTIONS); 2373 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_N_SELECTIONS);
2374 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 2374 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
2375 if (!instance_active()) 2375 if (!instance_active())
2376 return E_FAIL; 2376 return E_FAIL;
2377 2377
2378 if (!n_selections) 2378 if (!n_selections)
2379 return E_INVALIDARG; 2379 return E_INVALIDARG;
2380 2380
2381 *n_selections = 0; 2381 *n_selections = 0;
2382 int selection_start, selection_end; 2382 int selection_start, selection_end;
2383 GetSelectionOffsets(&selection_start, &selection_end); 2383 GetSelectionOffsets(&selection_start, &selection_end);
2384 if (selection_start >= 0 && selection_end >= 0 && 2384 if (selection_start >= 0 && selection_end >= 0 &&
2385 selection_start != selection_end) { 2385 selection_start != selection_end) {
2386 *n_selections = 1; 2386 *n_selections = 1;
2387 } 2387 }
2388 2388
2389 return S_OK; 2389 return S_OK;
2390 } 2390 }
2391 2391
2392 STDMETHODIMP BrowserAccessibilityWin::get_selection(LONG selection_index, 2392 STDMETHODIMP BrowserAccessibilityWin::get_selection(LONG selection_index,
2393 LONG* start_offset, 2393 LONG* start_offset,
2394 LONG* end_offset) { 2394 LONG* end_offset) {
2395 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_SELECTION); 2395 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_SELECTION);
2396 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 2396 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
2397 if (!instance_active()) 2397 if (!instance_active())
2398 return E_FAIL; 2398 return E_FAIL;
2399 2399
2400 if (!start_offset || !end_offset || selection_index != 0) 2400 if (!start_offset || !end_offset || selection_index != 0)
2401 return E_INVALIDARG; 2401 return E_INVALIDARG;
2402 2402
2403 LONG n_selections = 0; 2403 LONG n_selections = 0;
2404 if (FAILED(get_nSelections(&n_selections)) || n_selections < 1) 2404 if (FAILED(get_nSelections(&n_selections)) || n_selections < 1)
2405 return E_INVALIDARG; 2405 return E_INVALIDARG;
2406 2406
(...skipping 13 matching lines...) Expand all
2420 *end_offset = selection_end; 2420 *end_offset = selection_end;
2421 } 2421 }
2422 2422
2423 return S_OK; 2423 return S_OK;
2424 } 2424 }
2425 2425
2426 STDMETHODIMP BrowserAccessibilityWin::get_text(LONG start_offset, 2426 STDMETHODIMP BrowserAccessibilityWin::get_text(LONG start_offset,
2427 LONG end_offset, 2427 LONG end_offset,
2428 BSTR* text) { 2428 BSTR* text) {
2429 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_TEXT); 2429 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_TEXT);
2430 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 2430 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
2431 if (!instance_active()) 2431 if (!instance_active())
2432 return E_FAIL; 2432 return E_FAIL;
2433 2433
2434 if (!text) 2434 if (!text)
2435 return E_INVALIDARG; 2435 return E_INVALIDARG;
2436 2436
2437 const base::string16& text_str = GetText(); 2437 const base::string16& text_str = GetText();
2438 HandleSpecialTextOffset(text_str, &start_offset); 2438 HandleSpecialTextOffset(text_str, &start_offset);
2439 HandleSpecialTextOffset(text_str, &end_offset); 2439 HandleSpecialTextOffset(text_str, &end_offset);
2440 2440
(...skipping 23 matching lines...) Expand all
2464 return S_OK; 2464 return S_OK;
2465 } 2465 }
2466 2466
2467 STDMETHODIMP BrowserAccessibilityWin::get_textAtOffset( 2467 STDMETHODIMP BrowserAccessibilityWin::get_textAtOffset(
2468 LONG offset, 2468 LONG offset,
2469 IA2TextBoundaryType boundary_type, 2469 IA2TextBoundaryType boundary_type,
2470 LONG* start_offset, 2470 LONG* start_offset,
2471 LONG* end_offset, 2471 LONG* end_offset,
2472 BSTR* text) { 2472 BSTR* text) {
2473 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_TEXT_AT_OFFSET); 2473 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_TEXT_AT_OFFSET);
2474 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER | 2474 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER |
2475 ACCESSIBILITY_MODE_FLAG_INLINE_TEXT_BOXES); 2475 AccessibilityMode::INLINE_TEXT_BOXES);
2476 if (!instance_active()) 2476 if (!instance_active())
2477 return E_FAIL; 2477 return E_FAIL;
2478 2478
2479 if (!start_offset || !end_offset || !text) 2479 if (!start_offset || !end_offset || !text)
2480 return E_INVALIDARG; 2480 return E_INVALIDARG;
2481 2481
2482 const base::string16& text_str = GetText(); 2482 const base::string16& text_str = GetText();
2483 HandleSpecialTextOffset(text_str, &offset); 2483 HandleSpecialTextOffset(text_str, &offset);
2484 if (offset < 0) 2484 if (offset < 0)
2485 return E_INVALIDARG; 2485 return E_INVALIDARG;
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
2517 return get_text(*start_offset, *end_offset, text); 2517 return get_text(*start_offset, *end_offset, text);
2518 } 2518 }
2519 2519
2520 STDMETHODIMP BrowserAccessibilityWin::get_textBeforeOffset( 2520 STDMETHODIMP BrowserAccessibilityWin::get_textBeforeOffset(
2521 LONG offset, 2521 LONG offset,
2522 IA2TextBoundaryType boundary_type, 2522 IA2TextBoundaryType boundary_type,
2523 LONG* start_offset, 2523 LONG* start_offset,
2524 LONG* end_offset, 2524 LONG* end_offset,
2525 BSTR* text) { 2525 BSTR* text) {
2526 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_TEXT_BEFORE_OFFSET); 2526 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_TEXT_BEFORE_OFFSET);
2527 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER | 2527 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER |
2528 ACCESSIBILITY_MODE_FLAG_INLINE_TEXT_BOXES); 2528 AccessibilityMode::INLINE_TEXT_BOXES);
2529 if (!instance_active()) 2529 if (!instance_active())
2530 return E_FAIL; 2530 return E_FAIL;
2531 2531
2532 if (!start_offset || !end_offset || !text) 2532 if (!start_offset || !end_offset || !text)
2533 return E_INVALIDARG; 2533 return E_INVALIDARG;
2534 2534
2535 // The IAccessible2 spec says we don't have to implement the "sentence" 2535 // The IAccessible2 spec says we don't have to implement the "sentence"
2536 // boundary type, we can just let the screenreader handle it. 2536 // boundary type, we can just let the screenreader handle it.
2537 if (boundary_type == IA2_TEXT_BOUNDARY_SENTENCE) { 2537 if (boundary_type == IA2_TEXT_BOUNDARY_SENTENCE) {
2538 *start_offset = 0; 2538 *start_offset = 0;
(...skipping 10 matching lines...) Expand all
2549 return get_text(*start_offset, *end_offset, text); 2549 return get_text(*start_offset, *end_offset, text);
2550 } 2550 }
2551 2551
2552 STDMETHODIMP BrowserAccessibilityWin::get_textAfterOffset( 2552 STDMETHODIMP BrowserAccessibilityWin::get_textAfterOffset(
2553 LONG offset, 2553 LONG offset,
2554 IA2TextBoundaryType boundary_type, 2554 IA2TextBoundaryType boundary_type,
2555 LONG* start_offset, 2555 LONG* start_offset,
2556 LONG* end_offset, 2556 LONG* end_offset,
2557 BSTR* text) { 2557 BSTR* text) {
2558 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_TEXT_AFTER_OFFSET); 2558 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_TEXT_AFTER_OFFSET);
2559 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER | 2559 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER |
2560 ACCESSIBILITY_MODE_FLAG_INLINE_TEXT_BOXES); 2560 AccessibilityMode::INLINE_TEXT_BOXES);
2561 if (!instance_active()) 2561 if (!instance_active())
2562 return E_FAIL; 2562 return E_FAIL;
2563 2563
2564 if (!start_offset || !end_offset || !text) 2564 if (!start_offset || !end_offset || !text)
2565 return E_INVALIDARG; 2565 return E_INVALIDARG;
2566 2566
2567 // The IAccessible2 spec says we don't have to implement the "sentence" 2567 // The IAccessible2 spec says we don't have to implement the "sentence"
2568 // boundary type, we can just let the screenreader handle it. 2568 // boundary type, we can just let the screenreader handle it.
2569 if (boundary_type == IA2_TEXT_BOUNDARY_SENTENCE) { 2569 if (boundary_type == IA2_TEXT_BOUNDARY_SENTENCE) {
2570 *start_offset = 0; 2570 *start_offset = 0;
2571 *end_offset = 0; 2571 *end_offset = 0;
2572 *text = NULL; 2572 *text = NULL;
2573 return S_FALSE; 2573 return S_FALSE;
2574 } 2574 }
2575 2575
2576 const base::string16& text_str = GetText(); 2576 const base::string16& text_str = GetText();
2577 2577
2578 *start_offset = offset; 2578 *start_offset = offset;
2579 *end_offset = FindBoundary( 2579 *end_offset = FindBoundary(
2580 text_str, boundary_type, offset, ui::FORWARDS_DIRECTION); 2580 text_str, boundary_type, offset, ui::FORWARDS_DIRECTION);
2581 return get_text(*start_offset, *end_offset, text); 2581 return get_text(*start_offset, *end_offset, text);
2582 } 2582 }
2583 2583
2584 STDMETHODIMP BrowserAccessibilityWin::get_newText(IA2TextSegment* new_text) { 2584 STDMETHODIMP BrowserAccessibilityWin::get_newText(IA2TextSegment* new_text) {
2585 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_NEW_TEXT); 2585 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_NEW_TEXT);
2586 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 2586 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
2587 if (!instance_active()) 2587 if (!instance_active())
2588 return E_FAIL; 2588 return E_FAIL;
2589 2589
2590 if (!new_text) 2590 if (!new_text)
2591 return E_INVALIDARG; 2591 return E_INVALIDARG;
2592 2592
2593 if (!old_win_attributes_) 2593 if (!old_win_attributes_)
2594 return E_FAIL; 2594 return E_FAIL;
2595 2595
2596 int start, old_len, new_len; 2596 int start, old_len, new_len;
2597 ComputeHypertextRemovedAndInserted(&start, &old_len, &new_len); 2597 ComputeHypertextRemovedAndInserted(&start, &old_len, &new_len);
2598 if (new_len == 0) 2598 if (new_len == 0)
2599 return E_FAIL; 2599 return E_FAIL;
2600 2600
2601 base::string16 substr = GetText().substr(start, new_len); 2601 base::string16 substr = GetText().substr(start, new_len);
2602 new_text->text = SysAllocString(substr.c_str()); 2602 new_text->text = SysAllocString(substr.c_str());
2603 new_text->start = static_cast<long>(start); 2603 new_text->start = static_cast<long>(start);
2604 new_text->end = static_cast<long>(start + new_len); 2604 new_text->end = static_cast<long>(start + new_len);
2605 return S_OK; 2605 return S_OK;
2606 } 2606 }
2607 2607
2608 STDMETHODIMP BrowserAccessibilityWin::get_oldText(IA2TextSegment* old_text) { 2608 STDMETHODIMP BrowserAccessibilityWin::get_oldText(IA2TextSegment* old_text) {
2609 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_OLD_TEXT); 2609 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_OLD_TEXT);
2610 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 2610 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
2611 if (!instance_active()) 2611 if (!instance_active())
2612 return E_FAIL; 2612 return E_FAIL;
2613 2613
2614 if (!old_text) 2614 if (!old_text)
2615 return E_INVALIDARG; 2615 return E_INVALIDARG;
2616 2616
2617 if (!old_win_attributes_) 2617 if (!old_win_attributes_)
2618 return E_FAIL; 2618 return E_FAIL;
2619 2619
2620 int start, old_len, new_len; 2620 int start, old_len, new_len;
2621 ComputeHypertextRemovedAndInserted(&start, &old_len, &new_len); 2621 ComputeHypertextRemovedAndInserted(&start, &old_len, &new_len);
2622 if (old_len == 0) 2622 if (old_len == 0)
2623 return E_FAIL; 2623 return E_FAIL;
2624 2624
2625 base::string16 old_hypertext = old_win_attributes_->hypertext; 2625 base::string16 old_hypertext = old_win_attributes_->hypertext;
2626 base::string16 substr = old_hypertext.substr(start, old_len); 2626 base::string16 substr = old_hypertext.substr(start, old_len);
2627 old_text->text = SysAllocString(substr.c_str()); 2627 old_text->text = SysAllocString(substr.c_str());
2628 old_text->start = static_cast<long>(start); 2628 old_text->start = static_cast<long>(start);
2629 old_text->end = static_cast<long>(start + old_len); 2629 old_text->end = static_cast<long>(start + old_len);
2630 return S_OK; 2630 return S_OK;
2631 } 2631 }
2632 2632
2633 STDMETHODIMP BrowserAccessibilityWin::get_offsetAtPoint( 2633 STDMETHODIMP BrowserAccessibilityWin::get_offsetAtPoint(
2634 LONG x, 2634 LONG x,
2635 LONG y, 2635 LONG y,
2636 IA2CoordinateType coord_type, 2636 IA2CoordinateType coord_type,
2637 LONG* offset) { 2637 LONG* offset) {
2638 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_OFFSET_AT_POINT); 2638 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_OFFSET_AT_POINT);
2639 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER | 2639 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER |
2640 ACCESSIBILITY_MODE_FLAG_INLINE_TEXT_BOXES); 2640 AccessibilityMode::INLINE_TEXT_BOXES);
2641 if (!instance_active()) 2641 if (!instance_active())
2642 return E_FAIL; 2642 return E_FAIL;
2643 2643
2644 if (!offset) 2644 if (!offset)
2645 return E_INVALIDARG; 2645 return E_INVALIDARG;
2646 2646
2647 // TODO(dmazzoni): implement this. We're returning S_OK for now so that 2647 // TODO(dmazzoni): implement this. We're returning S_OK for now so that
2648 // screen readers still return partially accurate results rather than 2648 // screen readers still return partially accurate results rather than
2649 // completely failing. 2649 // completely failing.
2650 *offset = 0; 2650 *offset = 0;
2651 return S_OK; 2651 return S_OK;
2652 } 2652 }
2653 2653
2654 STDMETHODIMP BrowserAccessibilityWin::scrollSubstringTo( 2654 STDMETHODIMP BrowserAccessibilityWin::scrollSubstringTo(
2655 LONG start_index, 2655 LONG start_index,
2656 LONG end_index, 2656 LONG end_index,
2657 IA2ScrollType scroll_type) { 2657 IA2ScrollType scroll_type) {
2658 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_SCROLL_SUBSTRING_TO); 2658 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_SCROLL_SUBSTRING_TO);
2659 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER | 2659 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER |
2660 ACCESSIBILITY_MODE_FLAG_INLINE_TEXT_BOXES); 2660 AccessibilityMode::INLINE_TEXT_BOXES);
2661 // TODO(dmazzoni): adjust this for the start and end index, too. 2661 // TODO(dmazzoni): adjust this for the start and end index, too.
2662 return scrollTo(scroll_type); 2662 return scrollTo(scroll_type);
2663 } 2663 }
2664 2664
2665 STDMETHODIMP BrowserAccessibilityWin::scrollSubstringToPoint( 2665 STDMETHODIMP BrowserAccessibilityWin::scrollSubstringToPoint(
2666 LONG start_index, 2666 LONG start_index,
2667 LONG end_index, 2667 LONG end_index,
2668 IA2CoordinateType coordinate_type, 2668 IA2CoordinateType coordinate_type,
2669 LONG x, 2669 LONG x,
2670 LONG y) { 2670 LONG y) {
2671 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_SCROLL_SUBSTRING_TO_POINT); 2671 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_SCROLL_SUBSTRING_TO_POINT);
2672 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER | 2672 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER |
2673 ACCESSIBILITY_MODE_FLAG_INLINE_TEXT_BOXES); 2673 AccessibilityMode::INLINE_TEXT_BOXES);
2674 if (start_index > end_index) 2674 if (start_index > end_index)
2675 std::swap(start_index, end_index); 2675 std::swap(start_index, end_index);
2676 LONG length = end_index - start_index + 1; 2676 LONG length = end_index - start_index + 1;
2677 DCHECK_GE(length, 0); 2677 DCHECK_GE(length, 0);
2678 2678
2679 gfx::Rect string_bounds = GetPageBoundsForRange(start_index, length); 2679 gfx::Rect string_bounds = GetPageBoundsForRange(start_index, length);
2680 string_bounds -= GetPageBoundsRect().OffsetFromOrigin(); 2680 string_bounds -= GetPageBoundsRect().OffsetFromOrigin();
2681 x -= string_bounds.x(); 2681 x -= string_bounds.x();
2682 y -= string_bounds.y(); 2682 y -= string_bounds.y();
2683 2683
2684 return scrollToPoint(coordinate_type, x, y); 2684 return scrollToPoint(coordinate_type, x, y);
2685 } 2685 }
2686 2686
2687 STDMETHODIMP BrowserAccessibilityWin::addSelection(LONG start_offset, 2687 STDMETHODIMP BrowserAccessibilityWin::addSelection(LONG start_offset,
2688 LONG end_offset) { 2688 LONG end_offset) {
2689 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_ADD_SELECTION); 2689 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_ADD_SELECTION);
2690 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 2690 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
2691 if (!instance_active()) 2691 if (!instance_active())
2692 return E_FAIL; 2692 return E_FAIL;
2693 2693
2694 const base::string16& text_str = GetText(); 2694 const base::string16& text_str = GetText();
2695 HandleSpecialTextOffset(text_str, &start_offset); 2695 HandleSpecialTextOffset(text_str, &start_offset);
2696 HandleSpecialTextOffset(text_str, &end_offset); 2696 HandleSpecialTextOffset(text_str, &end_offset);
2697 2697
2698 manager()->SetTextSelection(*this, start_offset, end_offset); 2698 manager()->SetTextSelection(*this, start_offset, end_offset);
2699 return S_OK; 2699 return S_OK;
2700 } 2700 }
2701 2701
2702 STDMETHODIMP BrowserAccessibilityWin::removeSelection(LONG selection_index) { 2702 STDMETHODIMP BrowserAccessibilityWin::removeSelection(LONG selection_index) {
2703 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_REMOVE_SELECTION); 2703 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_REMOVE_SELECTION);
2704 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 2704 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
2705 if (!instance_active()) 2705 if (!instance_active())
2706 return E_FAIL; 2706 return E_FAIL;
2707 2707
2708 if (selection_index != 0) 2708 if (selection_index != 0)
2709 return E_INVALIDARG; 2709 return E_INVALIDARG;
2710 2710
2711 manager()->SetTextSelection(*this, 0, 0); 2711 manager()->SetTextSelection(*this, 0, 0);
2712 return S_OK; 2712 return S_OK;
2713 } 2713 }
2714 2714
2715 STDMETHODIMP BrowserAccessibilityWin::setCaretOffset(LONG offset) { 2715 STDMETHODIMP BrowserAccessibilityWin::setCaretOffset(LONG offset) {
2716 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_SET_CARET_OFFSET); 2716 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_SET_CARET_OFFSET);
2717 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 2717 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
2718 if (!instance_active()) 2718 if (!instance_active())
2719 return E_FAIL; 2719 return E_FAIL;
2720 2720
2721 const base::string16& text_str = GetText(); 2721 const base::string16& text_str = GetText();
2722 HandleSpecialTextOffset(text_str, &offset); 2722 HandleSpecialTextOffset(text_str, &offset);
2723 manager()->SetTextSelection(*this, offset, offset); 2723 manager()->SetTextSelection(*this, offset, offset);
2724 return S_OK; 2724 return S_OK;
2725 } 2725 }
2726 2726
2727 STDMETHODIMP BrowserAccessibilityWin::setSelection(LONG selection_index, 2727 STDMETHODIMP BrowserAccessibilityWin::setSelection(LONG selection_index,
2728 LONG start_offset, 2728 LONG start_offset,
2729 LONG end_offset) { 2729 LONG end_offset) {
2730 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_SET_SELECTION); 2730 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_SET_SELECTION);
2731 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 2731 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
2732 if (!instance_active()) 2732 if (!instance_active())
2733 return E_FAIL; 2733 return E_FAIL;
2734 2734
2735 if (selection_index != 0) 2735 if (selection_index != 0)
2736 return E_INVALIDARG; 2736 return E_INVALIDARG;
2737 2737
2738 const base::string16& text_str = GetText(); 2738 const base::string16& text_str = GetText();
2739 HandleSpecialTextOffset(text_str, &start_offset); 2739 HandleSpecialTextOffset(text_str, &start_offset);
2740 HandleSpecialTextOffset(text_str, &end_offset); 2740 HandleSpecialTextOffset(text_str, &end_offset);
2741 2741
2742 manager()->SetTextSelection(*this, start_offset, end_offset); 2742 manager()->SetTextSelection(*this, start_offset, end_offset);
2743 return S_OK; 2743 return S_OK;
2744 } 2744 }
2745 2745
2746 STDMETHODIMP BrowserAccessibilityWin::get_attributes(LONG offset, 2746 STDMETHODIMP BrowserAccessibilityWin::get_attributes(LONG offset,
2747 LONG* start_offset, 2747 LONG* start_offset,
2748 LONG* end_offset, 2748 LONG* end_offset,
2749 BSTR* text_attributes) { 2749 BSTR* text_attributes) {
2750 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_IATEXT_GET_ATTRIBUTES); 2750 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_IATEXT_GET_ATTRIBUTES);
2751 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 2751 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
2752 if (!start_offset || !end_offset || !text_attributes) 2752 if (!start_offset || !end_offset || !text_attributes)
2753 return E_INVALIDARG; 2753 return E_INVALIDARG;
2754 2754
2755 *start_offset = *end_offset = 0; 2755 *start_offset = *end_offset = 0;
2756 *text_attributes = nullptr; 2756 *text_attributes = nullptr;
2757 if (!instance_active()) 2757 if (!instance_active())
2758 return E_FAIL; 2758 return E_FAIL;
2759 2759
2760 const base::string16& text = GetText(); 2760 const base::string16& text = GetText();
2761 HandleSpecialTextOffset(text, &offset); 2761 HandleSpecialTextOffset(text, &offset);
(...skipping 18 matching lines...) Expand all
2780 DCHECK(*text_attributes); 2780 DCHECK(*text_attributes);
2781 return S_OK; 2781 return S_OK;
2782 } 2782 }
2783 2783
2784 // 2784 //
2785 // IAccessibleHypertext methods. 2785 // IAccessibleHypertext methods.
2786 // 2786 //
2787 2787
2788 STDMETHODIMP BrowserAccessibilityWin::get_nHyperlinks(long* hyperlink_count) { 2788 STDMETHODIMP BrowserAccessibilityWin::get_nHyperlinks(long* hyperlink_count) {
2789 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_N_HYPERLINKS); 2789 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_N_HYPERLINKS);
2790 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 2790 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
2791 if (!instance_active()) 2791 if (!instance_active())
2792 return E_FAIL; 2792 return E_FAIL;
2793 2793
2794 if (!hyperlink_count) 2794 if (!hyperlink_count)
2795 return E_INVALIDARG; 2795 return E_INVALIDARG;
2796 2796
2797 *hyperlink_count = hyperlink_offset_to_index().size(); 2797 *hyperlink_count = hyperlink_offset_to_index().size();
2798 return S_OK; 2798 return S_OK;
2799 } 2799 }
2800 2800
2801 STDMETHODIMP BrowserAccessibilityWin::get_hyperlink( 2801 STDMETHODIMP BrowserAccessibilityWin::get_hyperlink(
2802 long index, 2802 long index,
2803 IAccessibleHyperlink** hyperlink) { 2803 IAccessibleHyperlink** hyperlink) {
2804 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_HYPERLINK); 2804 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_HYPERLINK);
2805 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 2805 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
2806 if (!instance_active()) 2806 if (!instance_active())
2807 return E_FAIL; 2807 return E_FAIL;
2808 2808
2809 if (!hyperlink || 2809 if (!hyperlink ||
2810 index < 0 || 2810 index < 0 ||
2811 index >= static_cast<long>(hyperlinks().size())) { 2811 index >= static_cast<long>(hyperlinks().size())) {
2812 return E_INVALIDARG; 2812 return E_INVALIDARG;
2813 } 2813 }
2814 2814
2815 int32_t id = hyperlinks()[index]; 2815 int32_t id = hyperlinks()[index];
2816 BrowserAccessibilityWin* link = 2816 BrowserAccessibilityWin* link =
2817 ToBrowserAccessibilityWin(GetFromUniqueID(id)); 2817 ToBrowserAccessibilityWin(GetFromUniqueID(id));
2818 if (!link) 2818 if (!link)
2819 return E_FAIL; 2819 return E_FAIL;
2820 2820
2821 *hyperlink = static_cast<IAccessibleHyperlink*>(link->NewReference()); 2821 *hyperlink = static_cast<IAccessibleHyperlink*>(link->NewReference());
2822 return S_OK; 2822 return S_OK;
2823 } 2823 }
2824 2824
2825 STDMETHODIMP BrowserAccessibilityWin::get_hyperlinkIndex( 2825 STDMETHODIMP BrowserAccessibilityWin::get_hyperlinkIndex(
2826 long char_index, 2826 long char_index,
2827 long* hyperlink_index) { 2827 long* hyperlink_index) {
2828 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_HYPERLINK_INDEX); 2828 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_HYPERLINK_INDEX);
2829 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 2829 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
2830 if (!instance_active()) 2830 if (!instance_active())
2831 return E_FAIL; 2831 return E_FAIL;
2832 2832
2833 if (!hyperlink_index) 2833 if (!hyperlink_index)
2834 return E_INVALIDARG; 2834 return E_INVALIDARG;
2835 2835
2836 if (char_index < 0 || char_index >= static_cast<long>(GetText().size())) { 2836 if (char_index < 0 || char_index >= static_cast<long>(GetText().size())) {
2837 return E_INVALIDARG; 2837 return E_INVALIDARG;
2838 } 2838 }
2839 2839
2840 std::map<int32_t, int32_t>::iterator it = 2840 std::map<int32_t, int32_t>::iterator it =
2841 hyperlink_offset_to_index().find(char_index); 2841 hyperlink_offset_to_index().find(char_index);
2842 if (it == hyperlink_offset_to_index().end()) { 2842 if (it == hyperlink_offset_to_index().end()) {
2843 *hyperlink_index = -1; 2843 *hyperlink_index = -1;
2844 return S_FALSE; 2844 return S_FALSE;
2845 } 2845 }
2846 2846
2847 *hyperlink_index = it->second; 2847 *hyperlink_index = it->second;
2848 return S_OK; 2848 return S_OK;
2849 } 2849 }
2850 2850
2851 // 2851 //
2852 // IAccessibleHyperlink methods. 2852 // IAccessibleHyperlink methods.
2853 // 2853 //
2854 2854
2855 // Currently, only text links are supported. 2855 // Currently, only text links are supported.
2856 STDMETHODIMP BrowserAccessibilityWin::get_anchor(long index, VARIANT* anchor) { 2856 STDMETHODIMP BrowserAccessibilityWin::get_anchor(long index, VARIANT* anchor) {
2857 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_ANCHOR); 2857 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_ANCHOR);
2858 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 2858 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
2859 if (!instance_active() || !IsHyperlink()) 2859 if (!instance_active() || !IsHyperlink())
2860 return E_FAIL; 2860 return E_FAIL;
2861 2861
2862 // IA2 text links can have only one anchor, that is the text inside them. 2862 // IA2 text links can have only one anchor, that is the text inside them.
2863 if (index != 0 || !anchor) 2863 if (index != 0 || !anchor)
2864 return E_INVALIDARG; 2864 return E_INVALIDARG;
2865 2865
2866 BSTR ia2_hypertext = SysAllocString(GetText().c_str()); 2866 BSTR ia2_hypertext = SysAllocString(GetText().c_str());
2867 DCHECK(ia2_hypertext); 2867 DCHECK(ia2_hypertext);
2868 anchor->vt = VT_BSTR; 2868 anchor->vt = VT_BSTR;
2869 anchor->bstrVal = ia2_hypertext; 2869 anchor->bstrVal = ia2_hypertext;
2870 2870
2871 // Returning S_FALSE is not mentioned in the IA2 Spec, but it might have been 2871 // Returning S_FALSE is not mentioned in the IA2 Spec, but it might have been
2872 // an oversight. 2872 // an oversight.
2873 if (!SysStringLen(ia2_hypertext)) 2873 if (!SysStringLen(ia2_hypertext))
2874 return S_FALSE; 2874 return S_FALSE;
2875 2875
2876 return S_OK; 2876 return S_OK;
2877 } 2877 }
2878 2878
2879 // Currently, only text links are supported. 2879 // Currently, only text links are supported.
2880 STDMETHODIMP BrowserAccessibilityWin::get_anchorTarget(long index, 2880 STDMETHODIMP BrowserAccessibilityWin::get_anchorTarget(long index,
2881 VARIANT* anchor_target) { 2881 VARIANT* anchor_target) {
2882 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_ANCHOR_TARGET); 2882 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_ANCHOR_TARGET);
2883 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 2883 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
2884 if (!instance_active() || !IsHyperlink()) 2884 if (!instance_active() || !IsHyperlink())
2885 return E_FAIL; 2885 return E_FAIL;
2886 2886
2887 // IA2 text links can have at most one target, that is when they represent an 2887 // IA2 text links can have at most one target, that is when they represent an
2888 // HTML hyperlink, i.e. an <a> element with a "href" attribute. 2888 // HTML hyperlink, i.e. an <a> element with a "href" attribute.
2889 if (index != 0 || !anchor_target) 2889 if (index != 0 || !anchor_target)
2890 return E_INVALIDARG; 2890 return E_INVALIDARG;
2891 2891
2892 BSTR target; 2892 BSTR target;
2893 if (!(ia_state() & STATE_SYSTEM_LINKED) || 2893 if (!(ia_state() & STATE_SYSTEM_LINKED) ||
2894 FAILED(GetStringAttributeAsBstr(ui::AX_ATTR_URL, &target))) { 2894 FAILED(GetStringAttributeAsBstr(ui::AX_ATTR_URL, &target))) {
2895 target = SysAllocString(L""); 2895 target = SysAllocString(L"");
2896 } 2896 }
2897 DCHECK(target); 2897 DCHECK(target);
2898 anchor_target->vt = VT_BSTR; 2898 anchor_target->vt = VT_BSTR;
2899 anchor_target->bstrVal = target; 2899 anchor_target->bstrVal = target;
2900 2900
2901 // Returning S_FALSE is not mentioned in the IA2 Spec, but it might have been 2901 // Returning S_FALSE is not mentioned in the IA2 Spec, but it might have been
2902 // an oversight. 2902 // an oversight.
2903 if (!SysStringLen(target)) 2903 if (!SysStringLen(target))
2904 return S_FALSE; 2904 return S_FALSE;
2905 2905
2906 return S_OK; 2906 return S_OK;
2907 } 2907 }
2908 2908
2909 STDMETHODIMP BrowserAccessibilityWin::get_startIndex(long* index) { 2909 STDMETHODIMP BrowserAccessibilityWin::get_startIndex(long* index) {
2910 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_START_INDEX); 2910 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_START_INDEX);
2911 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 2911 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
2912 if (!instance_active() || !IsHyperlink()) 2912 if (!instance_active() || !IsHyperlink())
2913 return E_FAIL; 2913 return E_FAIL;
2914 2914
2915 if (!index) 2915 if (!index)
2916 return E_INVALIDARG; 2916 return E_INVALIDARG;
2917 2917
2918 int32_t hypertext_offset = 0; 2918 int32_t hypertext_offset = 0;
2919 auto* parent = GetParent(); 2919 auto* parent = GetParent();
2920 if (parent) { 2920 if (parent) {
2921 hypertext_offset = 2921 hypertext_offset =
2922 ToBrowserAccessibilityWin(parent)->GetHypertextOffsetFromChild(*this); 2922 ToBrowserAccessibilityWin(parent)->GetHypertextOffsetFromChild(*this);
2923 } 2923 }
2924 *index = static_cast<LONG>(hypertext_offset); 2924 *index = static_cast<LONG>(hypertext_offset);
2925 return S_OK; 2925 return S_OK;
2926 } 2926 }
2927 2927
2928 STDMETHODIMP BrowserAccessibilityWin::get_endIndex(long* index) { 2928 STDMETHODIMP BrowserAccessibilityWin::get_endIndex(long* index) {
2929 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_END_INDEX); 2929 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_END_INDEX);
2930 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 2930 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
2931 LONG start_index; 2931 LONG start_index;
2932 HRESULT hr = get_startIndex(&start_index); 2932 HRESULT hr = get_startIndex(&start_index);
2933 if (hr == S_OK) 2933 if (hr == S_OK)
2934 *index = start_index + 1; 2934 *index = start_index + 1;
2935 return hr; 2935 return hr;
2936 } 2936 }
2937 2937
2938 // This method is deprecated in the IA2 Spec. 2938 // This method is deprecated in the IA2 Spec.
2939 STDMETHODIMP BrowserAccessibilityWin::get_valid(boolean* valid) { 2939 STDMETHODIMP BrowserAccessibilityWin::get_valid(boolean* valid) {
2940 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_VALID); 2940 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_VALID);
2941 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 2941 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
2942 return E_NOTIMPL; 2942 return E_NOTIMPL;
2943 } 2943 }
2944 2944
2945 // 2945 //
2946 // IAccessibleAction partly implemented. 2946 // IAccessibleAction partly implemented.
2947 // 2947 //
2948 2948
2949 STDMETHODIMP BrowserAccessibilityWin::nActions(long* n_actions) { 2949 STDMETHODIMP BrowserAccessibilityWin::nActions(long* n_actions) {
2950 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_N_ACTIONS); 2950 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_N_ACTIONS);
2951 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 2951 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
2952 if (!instance_active()) 2952 if (!instance_active())
2953 return E_FAIL; 2953 return E_FAIL;
2954 2954
2955 if (!n_actions) 2955 if (!n_actions)
2956 return E_INVALIDARG; 2956 return E_INVALIDARG;
2957 2957
2958 // |IsHyperlink| is required for |IAccessibleHyperlink::anchor/anchorTarget| 2958 // |IsHyperlink| is required for |IAccessibleHyperlink::anchor/anchorTarget|
2959 // to work properly because the |IAccessibleHyperlink| interface inherits from 2959 // to work properly because the |IAccessibleHyperlink| interface inherits from
2960 // |IAccessibleAction|. 2960 // |IAccessibleAction|.
2961 if (IsHyperlink() || HasIntAttribute(ui::AX_ATTR_ACTION)) { 2961 if (IsHyperlink() || HasIntAttribute(ui::AX_ATTR_ACTION)) {
2962 *n_actions = 1; 2962 *n_actions = 1;
2963 } else { 2963 } else {
2964 *n_actions = 0; 2964 *n_actions = 0;
2965 } 2965 }
2966 2966
2967 return S_OK; 2967 return S_OK;
2968 } 2968 }
2969 2969
2970 STDMETHODIMP BrowserAccessibilityWin::doAction(long action_index) { 2970 STDMETHODIMP BrowserAccessibilityWin::doAction(long action_index) {
2971 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_DO_ACTION); 2971 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_DO_ACTION);
2972 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 2972 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
2973 if (!instance_active()) 2973 if (!instance_active())
2974 return E_FAIL; 2974 return E_FAIL;
2975 2975
2976 if (!HasIntAttribute(ui::AX_ATTR_ACTION) || action_index != 0) 2976 if (!HasIntAttribute(ui::AX_ATTR_ACTION) || action_index != 0)
2977 return E_INVALIDARG; 2977 return E_INVALIDARG;
2978 2978
2979 manager()->DoDefaultAction(*this); 2979 manager()->DoDefaultAction(*this);
2980 return S_OK; 2980 return S_OK;
2981 } 2981 }
2982 2982
2983 STDMETHODIMP 2983 STDMETHODIMP
2984 BrowserAccessibilityWin::get_description(long action_index, BSTR* description) { 2984 BrowserAccessibilityWin::get_description(long action_index, BSTR* description) {
2985 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_IAACTION_GET_DESCRIPTION); 2985 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_IAACTION_GET_DESCRIPTION);
2986 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 2986 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
2987 return E_NOTIMPL; 2987 return E_NOTIMPL;
2988 } 2988 }
2989 2989
2990 STDMETHODIMP BrowserAccessibilityWin::get_keyBinding(long action_index, 2990 STDMETHODIMP BrowserAccessibilityWin::get_keyBinding(long action_index,
2991 long n_max_bindings, 2991 long n_max_bindings,
2992 BSTR** key_bindings, 2992 BSTR** key_bindings,
2993 long* n_bindings) { 2993 long* n_bindings) {
2994 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_KEY_BINDING); 2994 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_KEY_BINDING);
2995 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 2995 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
2996 return E_NOTIMPL; 2996 return E_NOTIMPL;
2997 } 2997 }
2998 2998
2999 STDMETHODIMP BrowserAccessibilityWin::get_name(long action_index, BSTR* name) { 2999 STDMETHODIMP BrowserAccessibilityWin::get_name(long action_index, BSTR* name) {
3000 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_NAME); 3000 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_NAME);
3001 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 3001 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
3002 if (!instance_active()) 3002 if (!instance_active())
3003 return E_FAIL; 3003 return E_FAIL;
3004 3004
3005 if (!name) 3005 if (!name)
3006 return E_INVALIDARG; 3006 return E_INVALIDARG;
3007 3007
3008 int action; 3008 int action;
3009 if (!GetIntAttribute(ui::AX_ATTR_ACTION, &action) || action_index != 0) { 3009 if (!GetIntAttribute(ui::AX_ATTR_ACTION, &action) || action_index != 0) {
3010 *name = nullptr; 3010 *name = nullptr;
3011 return E_INVALIDARG; 3011 return E_INVALIDARG;
3012 } 3012 }
3013 3013
3014 base::string16 action_verb = 3014 base::string16 action_verb =
3015 ui::ActionToUnlocalizedString(static_cast<ui::AXSupportedAction>(action)); 3015 ui::ActionToUnlocalizedString(static_cast<ui::AXSupportedAction>(action));
3016 if (action_verb.empty() || action_verb == L"none") { 3016 if (action_verb.empty() || action_verb == L"none") {
3017 *name = nullptr; 3017 *name = nullptr;
3018 return S_FALSE; 3018 return S_FALSE;
3019 } 3019 }
3020 3020
3021 *name = SysAllocString(action_verb.c_str()); 3021 *name = SysAllocString(action_verb.c_str());
3022 DCHECK(name); 3022 DCHECK(name);
3023 return S_OK; 3023 return S_OK;
3024 } 3024 }
3025 3025
3026 STDMETHODIMP 3026 STDMETHODIMP
3027 BrowserAccessibilityWin::get_localizedName(long action_index, 3027 BrowserAccessibilityWin::get_localizedName(long action_index,
3028 BSTR* localized_name) { 3028 BSTR* localized_name) {
3029 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_LOCALIZED_NAME); 3029 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_LOCALIZED_NAME);
3030 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 3030 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
3031 if (!instance_active()) 3031 if (!instance_active())
3032 return E_FAIL; 3032 return E_FAIL;
3033 3033
3034 if (!localized_name) 3034 if (!localized_name)
3035 return E_INVALIDARG; 3035 return E_INVALIDARG;
3036 3036
3037 int action; 3037 int action;
3038 if (!GetIntAttribute(ui::AX_ATTR_ACTION, &action) || action_index != 0) { 3038 if (!GetIntAttribute(ui::AX_ATTR_ACTION, &action) || action_index != 0) {
3039 *localized_name = nullptr; 3039 *localized_name = nullptr;
3040 return E_INVALIDARG; 3040 return E_INVALIDARG;
(...skipping 10 matching lines...) Expand all
3051 DCHECK(localized_name); 3051 DCHECK(localized_name);
3052 return S_OK; 3052 return S_OK;
3053 } 3053 }
3054 3054
3055 // 3055 //
3056 // IAccessibleValue methods. 3056 // IAccessibleValue methods.
3057 // 3057 //
3058 3058
3059 STDMETHODIMP BrowserAccessibilityWin::get_currentValue(VARIANT* value) { 3059 STDMETHODIMP BrowserAccessibilityWin::get_currentValue(VARIANT* value) {
3060 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_CURRENT_VALUE); 3060 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_CURRENT_VALUE);
3061 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 3061 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
3062 if (!instance_active()) 3062 if (!instance_active())
3063 return E_FAIL; 3063 return E_FAIL;
3064 3064
3065 if (!value) 3065 if (!value)
3066 return E_INVALIDARG; 3066 return E_INVALIDARG;
3067 3067
3068 float float_val; 3068 float float_val;
3069 if (GetFloatAttribute( 3069 if (GetFloatAttribute(
3070 ui::AX_ATTR_VALUE_FOR_RANGE, &float_val)) { 3070 ui::AX_ATTR_VALUE_FOR_RANGE, &float_val)) {
3071 value->vt = VT_R8; 3071 value->vt = VT_R8;
3072 value->dblVal = float_val; 3072 value->dblVal = float_val;
3073 return S_OK; 3073 return S_OK;
3074 } 3074 }
3075 3075
3076 value->vt = VT_EMPTY; 3076 value->vt = VT_EMPTY;
3077 return S_FALSE; 3077 return S_FALSE;
3078 } 3078 }
3079 3079
3080 STDMETHODIMP BrowserAccessibilityWin::get_minimumValue(VARIANT* value) { 3080 STDMETHODIMP BrowserAccessibilityWin::get_minimumValue(VARIANT* value) {
3081 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_MINIMUM_VALUE); 3081 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_MINIMUM_VALUE);
3082 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 3082 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
3083 if (!instance_active()) 3083 if (!instance_active())
3084 return E_FAIL; 3084 return E_FAIL;
3085 3085
3086 if (!value) 3086 if (!value)
3087 return E_INVALIDARG; 3087 return E_INVALIDARG;
3088 3088
3089 float float_val; 3089 float float_val;
3090 if (GetFloatAttribute(ui::AX_ATTR_MIN_VALUE_FOR_RANGE, 3090 if (GetFloatAttribute(ui::AX_ATTR_MIN_VALUE_FOR_RANGE,
3091 &float_val)) { 3091 &float_val)) {
3092 value->vt = VT_R8; 3092 value->vt = VT_R8;
3093 value->dblVal = float_val; 3093 value->dblVal = float_val;
3094 return S_OK; 3094 return S_OK;
3095 } 3095 }
3096 3096
3097 value->vt = VT_EMPTY; 3097 value->vt = VT_EMPTY;
3098 return S_FALSE; 3098 return S_FALSE;
3099 } 3099 }
3100 3100
3101 STDMETHODIMP BrowserAccessibilityWin::get_maximumValue(VARIANT* value) { 3101 STDMETHODIMP BrowserAccessibilityWin::get_maximumValue(VARIANT* value) {
3102 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_MAXIMUM_VALUE); 3102 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_MAXIMUM_VALUE);
3103 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 3103 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
3104 if (!instance_active()) 3104 if (!instance_active())
3105 return E_FAIL; 3105 return E_FAIL;
3106 3106
3107 if (!value) 3107 if (!value)
3108 return E_INVALIDARG; 3108 return E_INVALIDARG;
3109 3109
3110 float float_val; 3110 float float_val;
3111 if (GetFloatAttribute(ui::AX_ATTR_MAX_VALUE_FOR_RANGE, 3111 if (GetFloatAttribute(ui::AX_ATTR_MAX_VALUE_FOR_RANGE,
3112 &float_val)) { 3112 &float_val)) {
3113 value->vt = VT_R8; 3113 value->vt = VT_R8;
3114 value->dblVal = float_val; 3114 value->dblVal = float_val;
3115 return S_OK; 3115 return S_OK;
3116 } 3116 }
3117 3117
3118 value->vt = VT_EMPTY; 3118 value->vt = VT_EMPTY;
3119 return S_FALSE; 3119 return S_FALSE;
3120 } 3120 }
3121 3121
3122 STDMETHODIMP BrowserAccessibilityWin::setCurrentValue(VARIANT new_value) { 3122 STDMETHODIMP BrowserAccessibilityWin::setCurrentValue(VARIANT new_value) {
3123 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_SET_CURRENT_VALUE); 3123 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_SET_CURRENT_VALUE);
3124 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 3124 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
3125 // TODO(dmazzoni): Implement this. 3125 // TODO(dmazzoni): Implement this.
3126 return E_NOTIMPL; 3126 return E_NOTIMPL;
3127 } 3127 }
3128 3128
3129 // 3129 //
3130 // ISimpleDOMDocument methods. 3130 // ISimpleDOMDocument methods.
3131 // 3131 //
3132 3132
3133 STDMETHODIMP BrowserAccessibilityWin::get_URL(BSTR* url) { 3133 STDMETHODIMP BrowserAccessibilityWin::get_URL(BSTR* url) {
3134 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_URL); 3134 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_URL);
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
3224 // 3224 //
3225 3225
3226 STDMETHODIMP BrowserAccessibilityWin::get_nodeInfo( 3226 STDMETHODIMP BrowserAccessibilityWin::get_nodeInfo(
3227 BSTR* node_name, 3227 BSTR* node_name,
3228 short* name_space_id, 3228 short* name_space_id,
3229 BSTR* node_value, 3229 BSTR* node_value,
3230 unsigned int* num_children, 3230 unsigned int* num_children,
3231 unsigned int* unique_id, 3231 unsigned int* unique_id,
3232 unsigned short* node_type) { 3232 unsigned short* node_type) {
3233 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_NODE_INFO); 3233 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_NODE_INFO);
3234 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_HTML); 3234 AddAccessibilityModeFlags(AccessibilityMode::HTML);
3235 if (!instance_active()) 3235 if (!instance_active())
3236 return E_FAIL; 3236 return E_FAIL;
3237 3237
3238 if (!node_name || !name_space_id || !node_value || !num_children || 3238 if (!node_name || !name_space_id || !node_value || !num_children ||
3239 !unique_id || !node_type) { 3239 !unique_id || !node_type) {
3240 return E_INVALIDARG; 3240 return E_INVALIDARG;
3241 } 3241 }
3242 3242
3243 base::string16 tag; 3243 base::string16 tag;
3244 if (GetString16Attribute(ui::AX_ATTR_HTML_TAG, &tag)) 3244 if (GetString16Attribute(ui::AX_ATTR_HTML_TAG, &tag))
(...skipping 18 matching lines...) Expand all
3263 return S_OK; 3263 return S_OK;
3264 } 3264 }
3265 3265
3266 STDMETHODIMP BrowserAccessibilityWin::get_attributes( 3266 STDMETHODIMP BrowserAccessibilityWin::get_attributes(
3267 unsigned short max_attribs, 3267 unsigned short max_attribs,
3268 BSTR* attrib_names, 3268 BSTR* attrib_names,
3269 short* name_space_id, 3269 short* name_space_id,
3270 BSTR* attrib_values, 3270 BSTR* attrib_values,
3271 unsigned short* num_attribs) { 3271 unsigned short* num_attribs) {
3272 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_ISIMPLEDOMNODE_GET_ATTRIBUTES); 3272 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_ISIMPLEDOMNODE_GET_ATTRIBUTES);
3273 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_HTML); 3273 AddAccessibilityModeFlags(AccessibilityMode::HTML);
3274 if (!instance_active()) 3274 if (!instance_active())
3275 return E_FAIL; 3275 return E_FAIL;
3276 3276
3277 if (!attrib_names || !name_space_id || !attrib_values || !num_attribs) 3277 if (!attrib_names || !name_space_id || !attrib_values || !num_attribs)
3278 return E_INVALIDARG; 3278 return E_INVALIDARG;
3279 3279
3280 *num_attribs = max_attribs; 3280 *num_attribs = max_attribs;
3281 if (*num_attribs > GetHtmlAttributes().size()) 3281 if (*num_attribs > GetHtmlAttributes().size())
3282 *num_attribs = GetHtmlAttributes().size(); 3282 *num_attribs = GetHtmlAttributes().size();
3283 3283
3284 for (unsigned short i = 0; i < *num_attribs; ++i) { 3284 for (unsigned short i = 0; i < *num_attribs; ++i) {
3285 attrib_names[i] = SysAllocString( 3285 attrib_names[i] = SysAllocString(
3286 base::UTF8ToUTF16(GetHtmlAttributes()[i].first).c_str()); 3286 base::UTF8ToUTF16(GetHtmlAttributes()[i].first).c_str());
3287 name_space_id[i] = 0; 3287 name_space_id[i] = 0;
3288 attrib_values[i] = SysAllocString( 3288 attrib_values[i] = SysAllocString(
3289 base::UTF8ToUTF16(GetHtmlAttributes()[i].second).c_str()); 3289 base::UTF8ToUTF16(GetHtmlAttributes()[i].second).c_str());
3290 } 3290 }
3291 return S_OK; 3291 return S_OK;
3292 } 3292 }
3293 3293
3294 STDMETHODIMP BrowserAccessibilityWin::get_attributesForNames( 3294 STDMETHODIMP BrowserAccessibilityWin::get_attributesForNames(
3295 unsigned short num_attribs, 3295 unsigned short num_attribs,
3296 BSTR* attrib_names, 3296 BSTR* attrib_names,
3297 short* name_space_id, 3297 short* name_space_id,
3298 BSTR* attrib_values) { 3298 BSTR* attrib_values) {
3299 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_ATTRIBUTES_FOR_NAMES); 3299 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_ATTRIBUTES_FOR_NAMES);
3300 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_HTML); 3300 AddAccessibilityModeFlags(AccessibilityMode::HTML);
3301 if (!instance_active()) 3301 if (!instance_active())
3302 return E_FAIL; 3302 return E_FAIL;
3303 3303
3304 if (!attrib_names || !name_space_id || !attrib_values) 3304 if (!attrib_names || !name_space_id || !attrib_values)
3305 return E_INVALIDARG; 3305 return E_INVALIDARG;
3306 3306
3307 for (unsigned short i = 0; i < num_attribs; ++i) { 3307 for (unsigned short i = 0; i < num_attribs; ++i) {
3308 name_space_id[i] = 0; 3308 name_space_id[i] = 0;
3309 bool found = false; 3309 bool found = false;
3310 std::string name = base::UTF16ToUTF8((LPCWSTR)attrib_names[i]); 3310 std::string name = base::UTF16ToUTF8((LPCWSTR)attrib_names[i]);
(...skipping 12 matching lines...) Expand all
3323 return S_OK; 3323 return S_OK;
3324 } 3324 }
3325 3325
3326 STDMETHODIMP BrowserAccessibilityWin::get_computedStyle( 3326 STDMETHODIMP BrowserAccessibilityWin::get_computedStyle(
3327 unsigned short max_style_properties, 3327 unsigned short max_style_properties,
3328 boolean use_alternate_view, 3328 boolean use_alternate_view,
3329 BSTR* style_properties, 3329 BSTR* style_properties,
3330 BSTR* style_values, 3330 BSTR* style_values,
3331 unsigned short *num_style_properties) { 3331 unsigned short *num_style_properties) {
3332 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_COMPUTED_STYLE); 3332 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_COMPUTED_STYLE);
3333 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_HTML); 3333 AddAccessibilityModeFlags(AccessibilityMode::HTML);
3334 if (!instance_active()) 3334 if (!instance_active())
3335 return E_FAIL; 3335 return E_FAIL;
3336 3336
3337 if (!style_properties || !style_values) 3337 if (!style_properties || !style_values)
3338 return E_INVALIDARG; 3338 return E_INVALIDARG;
3339 3339
3340 // We only cache a single style property for now: DISPLAY 3340 // We only cache a single style property for now: DISPLAY
3341 3341
3342 base::string16 display; 3342 base::string16 display;
3343 if (max_style_properties == 0 || 3343 if (max_style_properties == 0 ||
3344 !GetString16Attribute(ui::AX_ATTR_DISPLAY, &display)) { 3344 !GetString16Attribute(ui::AX_ATTR_DISPLAY, &display)) {
3345 *num_style_properties = 0; 3345 *num_style_properties = 0;
3346 return S_OK; 3346 return S_OK;
3347 } 3347 }
3348 3348
3349 *num_style_properties = 1; 3349 *num_style_properties = 1;
3350 style_properties[0] = SysAllocString(L"display"); 3350 style_properties[0] = SysAllocString(L"display");
3351 style_values[0] = SysAllocString(display.c_str()); 3351 style_values[0] = SysAllocString(display.c_str());
3352 3352
3353 return S_OK; 3353 return S_OK;
3354 } 3354 }
3355 3355
3356 STDMETHODIMP BrowserAccessibilityWin::get_computedStyleForProperties( 3356 STDMETHODIMP BrowserAccessibilityWin::get_computedStyleForProperties(
3357 unsigned short num_style_properties, 3357 unsigned short num_style_properties,
3358 boolean use_alternate_view, 3358 boolean use_alternate_view,
3359 BSTR* style_properties, 3359 BSTR* style_properties,
3360 BSTR* style_values) { 3360 BSTR* style_values) {
3361 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_COMPUTED_STYLE_FOR_PROPERTIES); 3361 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_COMPUTED_STYLE_FOR_PROPERTIES);
3362 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_HTML); 3362 AddAccessibilityModeFlags(AccessibilityMode::HTML);
3363 if (!instance_active()) 3363 if (!instance_active())
3364 return E_FAIL; 3364 return E_FAIL;
3365 3365
3366 if (!style_properties || !style_values) 3366 if (!style_properties || !style_values)
3367 return E_INVALIDARG; 3367 return E_INVALIDARG;
3368 3368
3369 // We only cache a single style property for now: DISPLAY 3369 // We only cache a single style property for now: DISPLAY
3370 3370
3371 for (unsigned short i = 0; i < num_style_properties; ++i) { 3371 for (unsigned short i = 0; i < num_style_properties; ++i) {
3372 base::string16 name = base::ToLowerASCII( 3372 base::string16 name = base::ToLowerASCII(
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
3494 *node = NULL; 3494 *node = NULL;
3495 return S_FALSE; 3495 return S_FALSE;
3496 } 3496 }
3497 3497
3498 *node = ToBrowserAccessibilityWin(child)->NewReference(); 3498 *node = ToBrowserAccessibilityWin(child)->NewReference();
3499 return S_OK; 3499 return S_OK;
3500 } 3500 }
3501 3501
3502 STDMETHODIMP BrowserAccessibilityWin::get_innerHTML(BSTR* innerHTML) { 3502 STDMETHODIMP BrowserAccessibilityWin::get_innerHTML(BSTR* innerHTML) {
3503 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_INNER_HTML); 3503 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_INNER_HTML);
3504 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_HTML); 3504 AddAccessibilityModeFlags(AccessibilityMode::HTML);
3505 return E_NOTIMPL; 3505 return E_NOTIMPL;
3506 } 3506 }
3507 3507
3508 STDMETHODIMP 3508 STDMETHODIMP
3509 BrowserAccessibilityWin::get_localInterface(void** local_interface) { 3509 BrowserAccessibilityWin::get_localInterface(void** local_interface) {
3510 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_LOCAL_INTERFACE); 3510 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_LOCAL_INTERFACE);
3511 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_HTML); 3511 AddAccessibilityModeFlags(AccessibilityMode::HTML);
3512 return E_NOTIMPL; 3512 return E_NOTIMPL;
3513 } 3513 }
3514 3514
3515 STDMETHODIMP BrowserAccessibilityWin::get_language(BSTR* language) { 3515 STDMETHODIMP BrowserAccessibilityWin::get_language(BSTR* language) {
3516 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_LANGUAGE); 3516 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_LANGUAGE);
3517 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 3517 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
3518 if (!language) 3518 if (!language)
3519 return E_INVALIDARG; 3519 return E_INVALIDARG;
3520 *language = nullptr; 3520 *language = nullptr;
3521 3521
3522 if (!instance_active()) 3522 if (!instance_active())
3523 return E_FAIL; 3523 return E_FAIL;
3524 3524
3525 base::string16 lang = GetInheritedString16Attribute(ui::AX_ATTR_LANGUAGE); 3525 base::string16 lang = GetInheritedString16Attribute(ui::AX_ATTR_LANGUAGE);
3526 if (lang.empty()) 3526 if (lang.empty())
3527 lang = L"en-US"; 3527 lang = L"en-US";
3528 3528
3529 *language = SysAllocString(lang.c_str()); 3529 *language = SysAllocString(lang.c_str());
3530 DCHECK(*language); 3530 DCHECK(*language);
3531 return S_OK; 3531 return S_OK;
3532 } 3532 }
3533 3533
3534 // 3534 //
3535 // ISimpleDOMText methods. 3535 // ISimpleDOMText methods.
3536 // 3536 //
3537 3537
3538 STDMETHODIMP BrowserAccessibilityWin::get_domText(BSTR* dom_text) { 3538 STDMETHODIMP BrowserAccessibilityWin::get_domText(BSTR* dom_text) {
3539 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_DOM_TEXT); 3539 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_DOM_TEXT);
3540 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 3540 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
3541 if (!instance_active()) 3541 if (!instance_active())
3542 return E_FAIL; 3542 return E_FAIL;
3543 3543
3544 if (!dom_text) 3544 if (!dom_text)
3545 return E_INVALIDARG; 3545 return E_INVALIDARG;
3546 3546
3547 return GetStringAttributeAsBstr( 3547 return GetStringAttributeAsBstr(
3548 ui::AX_ATTR_NAME, dom_text); 3548 ui::AX_ATTR_NAME, dom_text);
3549 } 3549 }
3550 3550
3551 STDMETHODIMP BrowserAccessibilityWin::get_clippedSubstringBounds( 3551 STDMETHODIMP BrowserAccessibilityWin::get_clippedSubstringBounds(
3552 unsigned int start_index, 3552 unsigned int start_index,
3553 unsigned int end_index, 3553 unsigned int end_index,
3554 int* out_x, 3554 int* out_x,
3555 int* out_y, 3555 int* out_y,
3556 int* out_width, 3556 int* out_width,
3557 int* out_height) { 3557 int* out_height) {
3558 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_CLIPPED_SUBSTRING_BOUNDS); 3558 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_CLIPPED_SUBSTRING_BOUNDS);
3559 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER | 3559 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER |
3560 ACCESSIBILITY_MODE_FLAG_INLINE_TEXT_BOXES); 3560 AccessibilityMode::INLINE_TEXT_BOXES);
3561 // TODO(dmazzoni): fully support this API by intersecting the 3561 // TODO(dmazzoni): fully support this API by intersecting the
3562 // rect with the container's rect. 3562 // rect with the container's rect.
3563 return get_unclippedSubstringBounds( 3563 return get_unclippedSubstringBounds(
3564 start_index, end_index, out_x, out_y, out_width, out_height); 3564 start_index, end_index, out_x, out_y, out_width, out_height);
3565 } 3565 }
3566 3566
3567 STDMETHODIMP BrowserAccessibilityWin::get_unclippedSubstringBounds( 3567 STDMETHODIMP BrowserAccessibilityWin::get_unclippedSubstringBounds(
3568 unsigned int start_index, 3568 unsigned int start_index,
3569 unsigned int end_index, 3569 unsigned int end_index,
3570 int* out_x, 3570 int* out_x,
3571 int* out_y, 3571 int* out_y,
3572 int* out_width, 3572 int* out_width,
3573 int* out_height) { 3573 int* out_height) {
3574 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_UNCLIPPED_SUBSTRING_BOUNDS); 3574 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_UNCLIPPED_SUBSTRING_BOUNDS);
3575 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER | 3575 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER |
3576 ACCESSIBILITY_MODE_FLAG_INLINE_TEXT_BOXES); 3576 AccessibilityMode::INLINE_TEXT_BOXES);
3577 if (!instance_active()) 3577 if (!instance_active())
3578 return E_FAIL; 3578 return E_FAIL;
3579 3579
3580 if (!out_x || !out_y || !out_width || !out_height) 3580 if (!out_x || !out_y || !out_width || !out_height)
3581 return E_INVALIDARG; 3581 return E_INVALIDARG;
3582 3582
3583 unsigned int text_length = static_cast<unsigned int>(GetText().size()); 3583 unsigned int text_length = static_cast<unsigned int>(GetText().size());
3584 if (start_index > text_length || end_index > text_length || 3584 if (start_index > text_length || end_index > text_length ||
3585 start_index > end_index) { 3585 start_index > end_index) {
3586 return E_INVALIDARG; 3586 return E_INVALIDARG;
3587 } 3587 }
3588 3588
3589 gfx::Rect bounds = GetScreenBoundsForRange( 3589 gfx::Rect bounds = GetScreenBoundsForRange(
3590 start_index, end_index - start_index); 3590 start_index, end_index - start_index);
3591 *out_x = bounds.x(); 3591 *out_x = bounds.x();
3592 *out_y = bounds.y(); 3592 *out_y = bounds.y();
3593 *out_width = bounds.width(); 3593 *out_width = bounds.width();
3594 *out_height = bounds.height(); 3594 *out_height = bounds.height();
3595 return S_OK; 3595 return S_OK;
3596 } 3596 }
3597 3597
3598 STDMETHODIMP BrowserAccessibilityWin::scrollToSubstring( 3598 STDMETHODIMP BrowserAccessibilityWin::scrollToSubstring(
3599 unsigned int start_index, 3599 unsigned int start_index,
3600 unsigned int end_index) { 3600 unsigned int end_index) {
3601 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_SCROLL_TO_SUBSTRING); 3601 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_SCROLL_TO_SUBSTRING);
3602 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER | 3602 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER |
3603 ACCESSIBILITY_MODE_FLAG_INLINE_TEXT_BOXES); 3603 AccessibilityMode::INLINE_TEXT_BOXES);
3604 if (!instance_active()) 3604 if (!instance_active())
3605 return E_FAIL; 3605 return E_FAIL;
3606 3606
3607 unsigned int text_length = static_cast<unsigned int>(GetText().size()); 3607 unsigned int text_length = static_cast<unsigned int>(GetText().size());
3608 if (start_index > text_length || end_index > text_length || 3608 if (start_index > text_length || end_index > text_length ||
3609 start_index > end_index) { 3609 start_index > end_index) {
3610 return E_INVALIDARG; 3610 return E_INVALIDARG;
3611 } 3611 }
3612 3612
3613 manager()->ScrollToMakeVisible(*this, GetPageBoundsForRange( 3613 manager()->ScrollToMakeVisible(*this, GetPageBoundsForRange(
3614 start_index, end_index - start_index)); 3614 start_index, end_index - start_index));
3615 3615
3616 return S_OK; 3616 return S_OK;
3617 } 3617 }
3618 3618
3619 STDMETHODIMP BrowserAccessibilityWin::get_fontFamily(BSTR* font_family) { 3619 STDMETHODIMP BrowserAccessibilityWin::get_fontFamily(BSTR* font_family) {
3620 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_FONT_FAMILY); 3620 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_FONT_FAMILY);
3621 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 3621 AddAccessibilityModeFlags(AccessibilityMode::SCREEN_READER);
3622 if (!font_family) 3622 if (!font_family)
3623 return E_INVALIDARG; 3623 return E_INVALIDARG;
3624 *font_family = nullptr; 3624 *font_family = nullptr;
3625 3625
3626 if (!instance_active()) 3626 if (!instance_active())
3627 return E_FAIL; 3627 return E_FAIL;
3628 3628
3629 base::string16 family = 3629 base::string16 family =
3630 GetInheritedString16Attribute(ui::AX_ATTR_FONT_FAMILY); 3630 GetInheritedString16Attribute(ui::AX_ATTR_FONT_FAMILY);
3631 if (family.empty()) 3631 if (family.empty())
(...skipping 2113 matching lines...) Expand 10 before | Expand all | Expand 10 after
5745 return static_cast<BrowserAccessibilityWin*>(obj); 5745 return static_cast<BrowserAccessibilityWin*>(obj);
5746 } 5746 }
5747 5747
5748 const BrowserAccessibilityWin* 5748 const BrowserAccessibilityWin*
5749 ToBrowserAccessibilityWin(const BrowserAccessibility* obj) { 5749 ToBrowserAccessibilityWin(const BrowserAccessibility* obj) {
5750 DCHECK(!obj || obj->IsNative()); 5750 DCHECK(!obj || obj->IsNative());
5751 return static_cast<const BrowserAccessibilityWin*>(obj); 5751 return static_cast<const BrowserAccessibilityWin*>(obj);
5752 } 5752 }
5753 5753
5754 } // namespace content 5754 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698