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

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

Issue 2694413006: Scope and clean up uses of AccessibilityMode. (Closed)
Patch Set: merge Created 3 years, 9 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::kScreenReader);
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::kScreenReader);
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::kScreenReader);
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::kScreenReader);
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::kScreenReader);
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::kScreenReader);
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::kScreenReader);
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::kScreenReader);
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::kScreenReader);
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::kScreenReader);
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::kScreenReader);
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::kScreenReader);
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::kScreenReader);
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::kScreenReader);
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::kScreenReader);
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::kScreenReader);
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::kScreenReader);
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::kScreenReader);
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::kScreenReader);
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::kScreenReader);
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::kScreenReader);
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::kScreenReader);
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::kScreenReader);
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::kScreenReader);
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::kScreenReader);
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::kScreenReader);
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::kScreenReader);
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::kScreenReader);
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::kScreenReader);
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::kScreenReader);
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::kScreenReader);
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::kScreenReader);
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::kScreenReader);
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::kScreenReader);
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::kScreenReader);
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::kScreenReader);
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::kScreenReader);
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::kScreenReader);
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::kScreenReader);
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::kScreenReader);
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::kScreenReader);
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::kScreenReader);
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::kScreenReader);
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::kScreenReader);
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::kScreenReader);
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::kScreenReader);
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::kScreenReader);
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::kScreenReader);
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::kScreenReader);
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::kScreenReader);
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::kScreenReader);
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::kScreenReader);
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::kScreenReader);
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::kScreenReader);
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::kScreenReader |
2298 ACCESSIBILITY_MODE_FLAG_INLINE_TEXT_BOXES); 2298 AccessibilityMode::kInlineTextBoxes);
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::kScreenReader);
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::kScreenReader |
2340 ACCESSIBILITY_MODE_FLAG_INLINE_TEXT_BOXES); 2340 AccessibilityMode::kInlineTextBoxes);
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(&offset); 2348 HandleSpecialTextOffset(&offset);
2349 if (offset < 0 || offset > static_cast<LONG>(text_str.size())) 2349 if (offset < 0 || offset > static_cast<LONG>(text_str.size()))
2350 return E_INVALIDARG; 2350 return E_INVALIDARG;
(...skipping 12 matching lines...) Expand all
2363 *out_x = character_bounds.x(); 2363 *out_x = character_bounds.x();
2364 *out_y = character_bounds.y(); 2364 *out_y = character_bounds.y();
2365 *out_width = character_bounds.width(); 2365 *out_width = character_bounds.width();
2366 *out_height = character_bounds.height(); 2366 *out_height = character_bounds.height();
2367 2367
2368 return S_OK; 2368 return S_OK;
2369 } 2369 }
2370 2370
2371 STDMETHODIMP BrowserAccessibilityWin::get_nSelections(LONG* n_selections) { 2371 STDMETHODIMP BrowserAccessibilityWin::get_nSelections(LONG* n_selections) {
2372 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_N_SELECTIONS); 2372 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_N_SELECTIONS);
2373 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 2373 AddAccessibilityModeFlags(AccessibilityMode::kScreenReader);
2374 if (!instance_active()) 2374 if (!instance_active())
2375 return E_FAIL; 2375 return E_FAIL;
2376 2376
2377 if (!n_selections) 2377 if (!n_selections)
2378 return E_INVALIDARG; 2378 return E_INVALIDARG;
2379 2379
2380 *n_selections = 0; 2380 *n_selections = 0;
2381 int selection_start, selection_end; 2381 int selection_start, selection_end;
2382 GetSelectionOffsets(&selection_start, &selection_end); 2382 GetSelectionOffsets(&selection_start, &selection_end);
2383 if (selection_start >= 0 && selection_end >= 0 && 2383 if (selection_start >= 0 && selection_end >= 0 &&
2384 selection_start != selection_end) { 2384 selection_start != selection_end) {
2385 *n_selections = 1; 2385 *n_selections = 1;
2386 } 2386 }
2387 2387
2388 return S_OK; 2388 return S_OK;
2389 } 2389 }
2390 2390
2391 STDMETHODIMP BrowserAccessibilityWin::get_selection(LONG selection_index, 2391 STDMETHODIMP BrowserAccessibilityWin::get_selection(LONG selection_index,
2392 LONG* start_offset, 2392 LONG* start_offset,
2393 LONG* end_offset) { 2393 LONG* end_offset) {
2394 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_SELECTION); 2394 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_SELECTION);
2395 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 2395 AddAccessibilityModeFlags(AccessibilityMode::kScreenReader);
2396 if (!instance_active()) 2396 if (!instance_active())
2397 return E_FAIL; 2397 return E_FAIL;
2398 2398
2399 if (!start_offset || !end_offset || selection_index != 0) 2399 if (!start_offset || !end_offset || selection_index != 0)
2400 return E_INVALIDARG; 2400 return E_INVALIDARG;
2401 2401
2402 *start_offset = 0; 2402 *start_offset = 0;
2403 *end_offset = 0; 2403 *end_offset = 0;
2404 int selection_start, selection_end; 2404 int selection_start, selection_end;
2405 GetSelectionOffsets(&selection_start, &selection_end); 2405 GetSelectionOffsets(&selection_start, &selection_end);
(...skipping 11 matching lines...) Expand all
2417 return S_OK; 2417 return S_OK;
2418 } 2418 }
2419 2419
2420 return E_INVALIDARG; 2420 return E_INVALIDARG;
2421 } 2421 }
2422 2422
2423 STDMETHODIMP BrowserAccessibilityWin::get_text(LONG start_offset, 2423 STDMETHODIMP BrowserAccessibilityWin::get_text(LONG start_offset,
2424 LONG end_offset, 2424 LONG end_offset,
2425 BSTR* text) { 2425 BSTR* text) {
2426 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_TEXT); 2426 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_TEXT);
2427 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 2427 AddAccessibilityModeFlags(AccessibilityMode::kScreenReader);
2428 if (!instance_active()) 2428 if (!instance_active())
2429 return E_FAIL; 2429 return E_FAIL;
2430 2430
2431 if (!text) 2431 if (!text)
2432 return E_INVALIDARG; 2432 return E_INVALIDARG;
2433 2433
2434 const base::string16& text_str = GetText(); 2434 const base::string16& text_str = GetText();
2435 HandleSpecialTextOffset(&start_offset); 2435 HandleSpecialTextOffset(&start_offset);
2436 HandleSpecialTextOffset(&end_offset); 2436 HandleSpecialTextOffset(&end_offset);
2437 2437
(...skipping 23 matching lines...) Expand all
2461 return S_OK; 2461 return S_OK;
2462 } 2462 }
2463 2463
2464 STDMETHODIMP BrowserAccessibilityWin::get_textAtOffset( 2464 STDMETHODIMP BrowserAccessibilityWin::get_textAtOffset(
2465 LONG offset, 2465 LONG offset,
2466 IA2TextBoundaryType boundary_type, 2466 IA2TextBoundaryType boundary_type,
2467 LONG* start_offset, 2467 LONG* start_offset,
2468 LONG* end_offset, 2468 LONG* end_offset,
2469 BSTR* text) { 2469 BSTR* text) {
2470 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_TEXT_AT_OFFSET); 2470 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_TEXT_AT_OFFSET);
2471 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER | 2471 AddAccessibilityModeFlags(AccessibilityMode::kScreenReader |
2472 ACCESSIBILITY_MODE_FLAG_INLINE_TEXT_BOXES); 2472 AccessibilityMode::kInlineTextBoxes);
2473 if (!instance_active()) 2473 if (!instance_active())
2474 return E_FAIL; 2474 return E_FAIL;
2475 2475
2476 if (!start_offset || !end_offset || !text) 2476 if (!start_offset || !end_offset || !text)
2477 return E_INVALIDARG; 2477 return E_INVALIDARG;
2478 2478
2479 const base::string16& text_str = GetText(); 2479 const base::string16& text_str = GetText();
2480 HandleSpecialTextOffset(&offset); 2480 HandleSpecialTextOffset(&offset);
2481 if (offset < 0) 2481 if (offset < 0)
2482 return E_INVALIDARG; 2482 return E_INVALIDARG;
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
2514 return get_text(*start_offset, *end_offset, text); 2514 return get_text(*start_offset, *end_offset, text);
2515 } 2515 }
2516 2516
2517 STDMETHODIMP BrowserAccessibilityWin::get_textBeforeOffset( 2517 STDMETHODIMP BrowserAccessibilityWin::get_textBeforeOffset(
2518 LONG offset, 2518 LONG offset,
2519 IA2TextBoundaryType boundary_type, 2519 IA2TextBoundaryType boundary_type,
2520 LONG* start_offset, 2520 LONG* start_offset,
2521 LONG* end_offset, 2521 LONG* end_offset,
2522 BSTR* text) { 2522 BSTR* text) {
2523 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_TEXT_BEFORE_OFFSET); 2523 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_TEXT_BEFORE_OFFSET);
2524 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER | 2524 AddAccessibilityModeFlags(AccessibilityMode::kScreenReader |
2525 ACCESSIBILITY_MODE_FLAG_INLINE_TEXT_BOXES); 2525 AccessibilityMode::kInlineTextBoxes);
2526 if (!instance_active()) 2526 if (!instance_active())
2527 return E_FAIL; 2527 return E_FAIL;
2528 2528
2529 if (!start_offset || !end_offset || !text) 2529 if (!start_offset || !end_offset || !text)
2530 return E_INVALIDARG; 2530 return E_INVALIDARG;
2531 2531
2532 // The IAccessible2 spec says we don't have to implement the "sentence" 2532 // The IAccessible2 spec says we don't have to implement the "sentence"
2533 // boundary type, we can just let the screenreader handle it. 2533 // boundary type, we can just let the screenreader handle it.
2534 if (boundary_type == IA2_TEXT_BOUNDARY_SENTENCE) { 2534 if (boundary_type == IA2_TEXT_BOUNDARY_SENTENCE) {
2535 *start_offset = 0; 2535 *start_offset = 0;
(...skipping 10 matching lines...) Expand all
2546 return get_text(*start_offset, *end_offset, text); 2546 return get_text(*start_offset, *end_offset, text);
2547 } 2547 }
2548 2548
2549 STDMETHODIMP BrowserAccessibilityWin::get_textAfterOffset( 2549 STDMETHODIMP BrowserAccessibilityWin::get_textAfterOffset(
2550 LONG offset, 2550 LONG offset,
2551 IA2TextBoundaryType boundary_type, 2551 IA2TextBoundaryType boundary_type,
2552 LONG* start_offset, 2552 LONG* start_offset,
2553 LONG* end_offset, 2553 LONG* end_offset,
2554 BSTR* text) { 2554 BSTR* text) {
2555 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_TEXT_AFTER_OFFSET); 2555 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_TEXT_AFTER_OFFSET);
2556 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER | 2556 AddAccessibilityModeFlags(AccessibilityMode::kScreenReader |
2557 ACCESSIBILITY_MODE_FLAG_INLINE_TEXT_BOXES); 2557 AccessibilityMode::kInlineTextBoxes);
2558 if (!instance_active()) 2558 if (!instance_active())
2559 return E_FAIL; 2559 return E_FAIL;
2560 2560
2561 if (!start_offset || !end_offset || !text) 2561 if (!start_offset || !end_offset || !text)
2562 return E_INVALIDARG; 2562 return E_INVALIDARG;
2563 2563
2564 // The IAccessible2 spec says we don't have to implement the "sentence" 2564 // The IAccessible2 spec says we don't have to implement the "sentence"
2565 // boundary type, we can just let the screenreader handle it. 2565 // boundary type, we can just let the screenreader handle it.
2566 if (boundary_type == IA2_TEXT_BOUNDARY_SENTENCE) { 2566 if (boundary_type == IA2_TEXT_BOUNDARY_SENTENCE) {
2567 *start_offset = 0; 2567 *start_offset = 0;
2568 *end_offset = 0; 2568 *end_offset = 0;
2569 *text = NULL; 2569 *text = NULL;
2570 return S_FALSE; 2570 return S_FALSE;
2571 } 2571 }
2572 2572
2573 const base::string16& text_str = GetText(); 2573 const base::string16& text_str = GetText();
2574 2574
2575 *start_offset = offset; 2575 *start_offset = offset;
2576 *end_offset = FindBoundary( 2576 *end_offset = FindBoundary(
2577 text_str, boundary_type, offset, ui::FORWARDS_DIRECTION); 2577 text_str, boundary_type, offset, ui::FORWARDS_DIRECTION);
2578 return get_text(*start_offset, *end_offset, text); 2578 return get_text(*start_offset, *end_offset, text);
2579 } 2579 }
2580 2580
2581 STDMETHODIMP BrowserAccessibilityWin::get_newText(IA2TextSegment* new_text) { 2581 STDMETHODIMP BrowserAccessibilityWin::get_newText(IA2TextSegment* new_text) {
2582 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_NEW_TEXT); 2582 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_NEW_TEXT);
2583 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 2583 AddAccessibilityModeFlags(AccessibilityMode::kScreenReader);
2584 if (!instance_active()) 2584 if (!instance_active())
2585 return E_FAIL; 2585 return E_FAIL;
2586 2586
2587 if (!new_text) 2587 if (!new_text)
2588 return E_INVALIDARG; 2588 return E_INVALIDARG;
2589 2589
2590 if (!old_win_attributes_) 2590 if (!old_win_attributes_)
2591 return E_FAIL; 2591 return E_FAIL;
2592 2592
2593 int start, old_len, new_len; 2593 int start, old_len, new_len;
2594 ComputeHypertextRemovedAndInserted(&start, &old_len, &new_len); 2594 ComputeHypertextRemovedAndInserted(&start, &old_len, &new_len);
2595 if (new_len == 0) 2595 if (new_len == 0)
2596 return E_FAIL; 2596 return E_FAIL;
2597 2597
2598 base::string16 substr = GetText().substr(start, new_len); 2598 base::string16 substr = GetText().substr(start, new_len);
2599 new_text->text = SysAllocString(substr.c_str()); 2599 new_text->text = SysAllocString(substr.c_str());
2600 new_text->start = static_cast<long>(start); 2600 new_text->start = static_cast<long>(start);
2601 new_text->end = static_cast<long>(start + new_len); 2601 new_text->end = static_cast<long>(start + new_len);
2602 return S_OK; 2602 return S_OK;
2603 } 2603 }
2604 2604
2605 STDMETHODIMP BrowserAccessibilityWin::get_oldText(IA2TextSegment* old_text) { 2605 STDMETHODIMP BrowserAccessibilityWin::get_oldText(IA2TextSegment* old_text) {
2606 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_OLD_TEXT); 2606 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_OLD_TEXT);
2607 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 2607 AddAccessibilityModeFlags(AccessibilityMode::kScreenReader);
2608 if (!instance_active()) 2608 if (!instance_active())
2609 return E_FAIL; 2609 return E_FAIL;
2610 2610
2611 if (!old_text) 2611 if (!old_text)
2612 return E_INVALIDARG; 2612 return E_INVALIDARG;
2613 2613
2614 if (!old_win_attributes_) 2614 if (!old_win_attributes_)
2615 return E_FAIL; 2615 return E_FAIL;
2616 2616
2617 int start, old_len, new_len; 2617 int start, old_len, new_len;
2618 ComputeHypertextRemovedAndInserted(&start, &old_len, &new_len); 2618 ComputeHypertextRemovedAndInserted(&start, &old_len, &new_len);
2619 if (old_len == 0) 2619 if (old_len == 0)
2620 return E_FAIL; 2620 return E_FAIL;
2621 2621
2622 base::string16 old_hypertext = old_win_attributes_->hypertext; 2622 base::string16 old_hypertext = old_win_attributes_->hypertext;
2623 base::string16 substr = old_hypertext.substr(start, old_len); 2623 base::string16 substr = old_hypertext.substr(start, old_len);
2624 old_text->text = SysAllocString(substr.c_str()); 2624 old_text->text = SysAllocString(substr.c_str());
2625 old_text->start = static_cast<long>(start); 2625 old_text->start = static_cast<long>(start);
2626 old_text->end = static_cast<long>(start + old_len); 2626 old_text->end = static_cast<long>(start + old_len);
2627 return S_OK; 2627 return S_OK;
2628 } 2628 }
2629 2629
2630 STDMETHODIMP BrowserAccessibilityWin::get_offsetAtPoint( 2630 STDMETHODIMP BrowserAccessibilityWin::get_offsetAtPoint(
2631 LONG x, 2631 LONG x,
2632 LONG y, 2632 LONG y,
2633 IA2CoordinateType coord_type, 2633 IA2CoordinateType coord_type,
2634 LONG* offset) { 2634 LONG* offset) {
2635 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_OFFSET_AT_POINT); 2635 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_OFFSET_AT_POINT);
2636 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER | 2636 AddAccessibilityModeFlags(AccessibilityMode::kScreenReader |
2637 ACCESSIBILITY_MODE_FLAG_INLINE_TEXT_BOXES); 2637 AccessibilityMode::kInlineTextBoxes);
2638 if (!instance_active()) 2638 if (!instance_active())
2639 return E_FAIL; 2639 return E_FAIL;
2640 2640
2641 if (!offset) 2641 if (!offset)
2642 return E_INVALIDARG; 2642 return E_INVALIDARG;
2643 2643
2644 // TODO(dmazzoni): implement this. We're returning S_OK for now so that 2644 // TODO(dmazzoni): implement this. We're returning S_OK for now so that
2645 // screen readers still return partially accurate results rather than 2645 // screen readers still return partially accurate results rather than
2646 // completely failing. 2646 // completely failing.
2647 *offset = 0; 2647 *offset = 0;
2648 return S_OK; 2648 return S_OK;
2649 } 2649 }
2650 2650
2651 STDMETHODIMP BrowserAccessibilityWin::scrollSubstringTo( 2651 STDMETHODIMP BrowserAccessibilityWin::scrollSubstringTo(
2652 LONG start_index, 2652 LONG start_index,
2653 LONG end_index, 2653 LONG end_index,
2654 IA2ScrollType scroll_type) { 2654 IA2ScrollType scroll_type) {
2655 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_SCROLL_SUBSTRING_TO); 2655 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_SCROLL_SUBSTRING_TO);
2656 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER | 2656 AddAccessibilityModeFlags(AccessibilityMode::kScreenReader |
2657 ACCESSIBILITY_MODE_FLAG_INLINE_TEXT_BOXES); 2657 AccessibilityMode::kInlineTextBoxes);
2658 // TODO(dmazzoni): adjust this for the start and end index, too. 2658 // TODO(dmazzoni): adjust this for the start and end index, too.
2659 return scrollTo(scroll_type); 2659 return scrollTo(scroll_type);
2660 } 2660 }
2661 2661
2662 STDMETHODIMP BrowserAccessibilityWin::scrollSubstringToPoint( 2662 STDMETHODIMP BrowserAccessibilityWin::scrollSubstringToPoint(
2663 LONG start_index, 2663 LONG start_index,
2664 LONG end_index, 2664 LONG end_index,
2665 IA2CoordinateType coordinate_type, 2665 IA2CoordinateType coordinate_type,
2666 LONG x, 2666 LONG x,
2667 LONG y) { 2667 LONG y) {
2668 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_SCROLL_SUBSTRING_TO_POINT); 2668 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_SCROLL_SUBSTRING_TO_POINT);
2669 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER | 2669 AddAccessibilityModeFlags(AccessibilityMode::kScreenReader |
2670 ACCESSIBILITY_MODE_FLAG_INLINE_TEXT_BOXES); 2670 AccessibilityMode::kInlineTextBoxes);
2671 if (start_index > end_index) 2671 if (start_index > end_index)
2672 std::swap(start_index, end_index); 2672 std::swap(start_index, end_index);
2673 LONG length = end_index - start_index + 1; 2673 LONG length = end_index - start_index + 1;
2674 DCHECK_GE(length, 0); 2674 DCHECK_GE(length, 0);
2675 2675
2676 gfx::Rect string_bounds = GetPageBoundsForRange(start_index, length); 2676 gfx::Rect string_bounds = GetPageBoundsForRange(start_index, length);
2677 string_bounds -= GetPageBoundsRect().OffsetFromOrigin(); 2677 string_bounds -= GetPageBoundsRect().OffsetFromOrigin();
2678 x -= string_bounds.x(); 2678 x -= string_bounds.x();
2679 y -= string_bounds.y(); 2679 y -= string_bounds.y();
2680 2680
2681 return scrollToPoint(coordinate_type, x, y); 2681 return scrollToPoint(coordinate_type, x, y);
2682 } 2682 }
2683 2683
2684 STDMETHODIMP BrowserAccessibilityWin::addSelection(LONG start_offset, 2684 STDMETHODIMP BrowserAccessibilityWin::addSelection(LONG start_offset,
2685 LONG end_offset) { 2685 LONG end_offset) {
2686 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_ADD_SELECTION); 2686 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_ADD_SELECTION);
2687 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 2687 AddAccessibilityModeFlags(AccessibilityMode::kScreenReader);
2688 if (!instance_active()) 2688 if (!instance_active())
2689 return E_FAIL; 2689 return E_FAIL;
2690 2690
2691 // We only support one selection. 2691 // We only support one selection.
2692 SetIA2HypertextSelection(start_offset, end_offset); 2692 SetIA2HypertextSelection(start_offset, end_offset);
2693 return S_OK; 2693 return S_OK;
2694 } 2694 }
2695 2695
2696 STDMETHODIMP BrowserAccessibilityWin::removeSelection(LONG selection_index) { 2696 STDMETHODIMP BrowserAccessibilityWin::removeSelection(LONG selection_index) {
2697 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_REMOVE_SELECTION); 2697 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_REMOVE_SELECTION);
2698 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 2698 AddAccessibilityModeFlags(AccessibilityMode::kScreenReader);
2699 if (!instance_active()) 2699 if (!instance_active())
2700 return E_FAIL; 2700 return E_FAIL;
2701 2701
2702 if (selection_index != 0) 2702 if (selection_index != 0)
2703 return E_INVALIDARG; 2703 return E_INVALIDARG;
2704 2704
2705 // Simply collapse the selection to the position of the caret if a caret is 2705 // Simply collapse the selection to the position of the caret if a caret is
2706 // visible, otherwise set the selection to 0. 2706 // visible, otherwise set the selection to 0.
2707 LONG caret_offset = 0; 2707 LONG caret_offset = 0;
2708 int selection_start, selection_end; 2708 int selection_start, selection_end;
2709 GetSelectionOffsets(&selection_start, &selection_end); 2709 GetSelectionOffsets(&selection_start, &selection_end);
2710 if (HasCaret() && selection_end >= 0) 2710 if (HasCaret() && selection_end >= 0)
2711 caret_offset = selection_end; 2711 caret_offset = selection_end;
2712 SetIA2HypertextSelection(caret_offset, caret_offset); 2712 SetIA2HypertextSelection(caret_offset, caret_offset);
2713 return S_OK; 2713 return S_OK;
2714 } 2714 }
2715 2715
2716 STDMETHODIMP BrowserAccessibilityWin::setCaretOffset(LONG offset) { 2716 STDMETHODIMP BrowserAccessibilityWin::setCaretOffset(LONG offset) {
2717 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_SET_CARET_OFFSET); 2717 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_SET_CARET_OFFSET);
2718 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 2718 AddAccessibilityModeFlags(AccessibilityMode::kScreenReader);
2719 if (!instance_active()) 2719 if (!instance_active())
2720 return E_FAIL; 2720 return E_FAIL;
2721 SetIA2HypertextSelection(offset, offset); 2721 SetIA2HypertextSelection(offset, offset);
2722 return S_OK; 2722 return S_OK;
2723 } 2723 }
2724 2724
2725 STDMETHODIMP BrowserAccessibilityWin::setSelection(LONG selection_index, 2725 STDMETHODIMP BrowserAccessibilityWin::setSelection(LONG selection_index,
2726 LONG start_offset, 2726 LONG start_offset,
2727 LONG end_offset) { 2727 LONG end_offset) {
2728 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_SET_SELECTION); 2728 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_SET_SELECTION);
2729 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 2729 AddAccessibilityModeFlags(AccessibilityMode::kScreenReader);
2730 if (!instance_active()) 2730 if (!instance_active())
2731 return E_FAIL; 2731 return E_FAIL;
2732 if (selection_index != 0) 2732 if (selection_index != 0)
2733 return E_INVALIDARG; 2733 return E_INVALIDARG;
2734 SetIA2HypertextSelection(start_offset, end_offset); 2734 SetIA2HypertextSelection(start_offset, end_offset);
2735 return S_OK; 2735 return S_OK;
2736 } 2736 }
2737 2737
2738 STDMETHODIMP BrowserAccessibilityWin::get_attributes(LONG offset, 2738 STDMETHODIMP BrowserAccessibilityWin::get_attributes(LONG offset,
2739 LONG* start_offset, 2739 LONG* start_offset,
2740 LONG* end_offset, 2740 LONG* end_offset,
2741 BSTR* text_attributes) { 2741 BSTR* text_attributes) {
2742 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_IATEXT_GET_ATTRIBUTES); 2742 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_IATEXT_GET_ATTRIBUTES);
2743 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 2743 AddAccessibilityModeFlags(AccessibilityMode::kScreenReader);
2744 if (!start_offset || !end_offset || !text_attributes) 2744 if (!start_offset || !end_offset || !text_attributes)
2745 return E_INVALIDARG; 2745 return E_INVALIDARG;
2746 2746
2747 *start_offset = *end_offset = 0; 2747 *start_offset = *end_offset = 0;
2748 *text_attributes = nullptr; 2748 *text_attributes = nullptr;
2749 if (!instance_active()) 2749 if (!instance_active())
2750 return E_FAIL; 2750 return E_FAIL;
2751 2751
2752 const base::string16 text = GetText(); 2752 const base::string16 text = GetText();
2753 HandleSpecialTextOffset(&offset); 2753 HandleSpecialTextOffset(&offset);
(...skipping 18 matching lines...) Expand all
2772 DCHECK(*text_attributes); 2772 DCHECK(*text_attributes);
2773 return S_OK; 2773 return S_OK;
2774 } 2774 }
2775 2775
2776 // 2776 //
2777 // IAccessibleHypertext methods. 2777 // IAccessibleHypertext methods.
2778 // 2778 //
2779 2779
2780 STDMETHODIMP BrowserAccessibilityWin::get_nHyperlinks(long* hyperlink_count) { 2780 STDMETHODIMP BrowserAccessibilityWin::get_nHyperlinks(long* hyperlink_count) {
2781 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_N_HYPERLINKS); 2781 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_N_HYPERLINKS);
2782 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 2782 AddAccessibilityModeFlags(AccessibilityMode::kScreenReader);
2783 if (!instance_active()) 2783 if (!instance_active())
2784 return E_FAIL; 2784 return E_FAIL;
2785 2785
2786 if (!hyperlink_count) 2786 if (!hyperlink_count)
2787 return E_INVALIDARG; 2787 return E_INVALIDARG;
2788 2788
2789 *hyperlink_count = hyperlink_offset_to_index().size(); 2789 *hyperlink_count = hyperlink_offset_to_index().size();
2790 return S_OK; 2790 return S_OK;
2791 } 2791 }
2792 2792
2793 STDMETHODIMP BrowserAccessibilityWin::get_hyperlink( 2793 STDMETHODIMP BrowserAccessibilityWin::get_hyperlink(
2794 long index, 2794 long index,
2795 IAccessibleHyperlink** hyperlink) { 2795 IAccessibleHyperlink** hyperlink) {
2796 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_HYPERLINK); 2796 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_HYPERLINK);
2797 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 2797 AddAccessibilityModeFlags(AccessibilityMode::kScreenReader);
2798 if (!instance_active()) 2798 if (!instance_active())
2799 return E_FAIL; 2799 return E_FAIL;
2800 2800
2801 if (!hyperlink || 2801 if (!hyperlink ||
2802 index < 0 || 2802 index < 0 ||
2803 index >= static_cast<long>(hyperlinks().size())) { 2803 index >= static_cast<long>(hyperlinks().size())) {
2804 return E_INVALIDARG; 2804 return E_INVALIDARG;
2805 } 2805 }
2806 2806
2807 int32_t id = hyperlinks()[index]; 2807 int32_t id = hyperlinks()[index];
2808 BrowserAccessibilityWin* link = 2808 BrowserAccessibilityWin* link =
2809 ToBrowserAccessibilityWin(GetFromUniqueID(id)); 2809 ToBrowserAccessibilityWin(GetFromUniqueID(id));
2810 if (!link) 2810 if (!link)
2811 return E_FAIL; 2811 return E_FAIL;
2812 2812
2813 *hyperlink = static_cast<IAccessibleHyperlink*>(link->NewReference()); 2813 *hyperlink = static_cast<IAccessibleHyperlink*>(link->NewReference());
2814 return S_OK; 2814 return S_OK;
2815 } 2815 }
2816 2816
2817 STDMETHODIMP BrowserAccessibilityWin::get_hyperlinkIndex( 2817 STDMETHODIMP BrowserAccessibilityWin::get_hyperlinkIndex(
2818 long char_index, 2818 long char_index,
2819 long* hyperlink_index) { 2819 long* hyperlink_index) {
2820 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_HYPERLINK_INDEX); 2820 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_HYPERLINK_INDEX);
2821 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 2821 AddAccessibilityModeFlags(AccessibilityMode::kScreenReader);
2822 if (!instance_active()) 2822 if (!instance_active())
2823 return E_FAIL; 2823 return E_FAIL;
2824 2824
2825 if (!hyperlink_index) 2825 if (!hyperlink_index)
2826 return E_INVALIDARG; 2826 return E_INVALIDARG;
2827 2827
2828 if (char_index < 0 || char_index >= static_cast<long>(GetText().size())) { 2828 if (char_index < 0 || char_index >= static_cast<long>(GetText().size())) {
2829 return E_INVALIDARG; 2829 return E_INVALIDARG;
2830 } 2830 }
2831 2831
2832 std::map<int32_t, int32_t>::iterator it = 2832 std::map<int32_t, int32_t>::iterator it =
2833 hyperlink_offset_to_index().find(char_index); 2833 hyperlink_offset_to_index().find(char_index);
2834 if (it == hyperlink_offset_to_index().end()) { 2834 if (it == hyperlink_offset_to_index().end()) {
2835 *hyperlink_index = -1; 2835 *hyperlink_index = -1;
2836 return S_FALSE; 2836 return S_FALSE;
2837 } 2837 }
2838 2838
2839 *hyperlink_index = it->second; 2839 *hyperlink_index = it->second;
2840 return S_OK; 2840 return S_OK;
2841 } 2841 }
2842 2842
2843 // 2843 //
2844 // IAccessibleHyperlink methods. 2844 // IAccessibleHyperlink methods.
2845 // 2845 //
2846 2846
2847 // Currently, only text links are supported. 2847 // Currently, only text links are supported.
2848 STDMETHODIMP BrowserAccessibilityWin::get_anchor(long index, VARIANT* anchor) { 2848 STDMETHODIMP BrowserAccessibilityWin::get_anchor(long index, VARIANT* anchor) {
2849 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_ANCHOR); 2849 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_ANCHOR);
2850 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 2850 AddAccessibilityModeFlags(AccessibilityMode::kScreenReader);
2851 if (!instance_active() || !IsHyperlink()) 2851 if (!instance_active() || !IsHyperlink())
2852 return E_FAIL; 2852 return E_FAIL;
2853 2853
2854 // IA2 text links can have only one anchor, that is the text inside them. 2854 // IA2 text links can have only one anchor, that is the text inside them.
2855 if (index != 0 || !anchor) 2855 if (index != 0 || !anchor)
2856 return E_INVALIDARG; 2856 return E_INVALIDARG;
2857 2857
2858 BSTR ia2_hypertext = SysAllocString(GetText().c_str()); 2858 BSTR ia2_hypertext = SysAllocString(GetText().c_str());
2859 DCHECK(ia2_hypertext); 2859 DCHECK(ia2_hypertext);
2860 anchor->vt = VT_BSTR; 2860 anchor->vt = VT_BSTR;
2861 anchor->bstrVal = ia2_hypertext; 2861 anchor->bstrVal = ia2_hypertext;
2862 2862
2863 // Returning S_FALSE is not mentioned in the IA2 Spec, but it might have been 2863 // Returning S_FALSE is not mentioned in the IA2 Spec, but it might have been
2864 // an oversight. 2864 // an oversight.
2865 if (!SysStringLen(ia2_hypertext)) 2865 if (!SysStringLen(ia2_hypertext))
2866 return S_FALSE; 2866 return S_FALSE;
2867 2867
2868 return S_OK; 2868 return S_OK;
2869 } 2869 }
2870 2870
2871 // Currently, only text links are supported. 2871 // Currently, only text links are supported.
2872 STDMETHODIMP BrowserAccessibilityWin::get_anchorTarget(long index, 2872 STDMETHODIMP BrowserAccessibilityWin::get_anchorTarget(long index,
2873 VARIANT* anchor_target) { 2873 VARIANT* anchor_target) {
2874 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_ANCHOR_TARGET); 2874 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_ANCHOR_TARGET);
2875 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 2875 AddAccessibilityModeFlags(AccessibilityMode::kScreenReader);
2876 if (!instance_active() || !IsHyperlink()) 2876 if (!instance_active() || !IsHyperlink())
2877 return E_FAIL; 2877 return E_FAIL;
2878 2878
2879 // IA2 text links can have at most one target, that is when they represent an 2879 // IA2 text links can have at most one target, that is when they represent an
2880 // HTML hyperlink, i.e. an <a> element with a "href" attribute. 2880 // HTML hyperlink, i.e. an <a> element with a "href" attribute.
2881 if (index != 0 || !anchor_target) 2881 if (index != 0 || !anchor_target)
2882 return E_INVALIDARG; 2882 return E_INVALIDARG;
2883 2883
2884 BSTR target; 2884 BSTR target;
2885 if (!(ia_state() & STATE_SYSTEM_LINKED) || 2885 if (!(ia_state() & STATE_SYSTEM_LINKED) ||
2886 FAILED(GetStringAttributeAsBstr(ui::AX_ATTR_URL, &target))) { 2886 FAILED(GetStringAttributeAsBstr(ui::AX_ATTR_URL, &target))) {
2887 target = SysAllocString(L""); 2887 target = SysAllocString(L"");
2888 } 2888 }
2889 DCHECK(target); 2889 DCHECK(target);
2890 anchor_target->vt = VT_BSTR; 2890 anchor_target->vt = VT_BSTR;
2891 anchor_target->bstrVal = target; 2891 anchor_target->bstrVal = target;
2892 2892
2893 // Returning S_FALSE is not mentioned in the IA2 Spec, but it might have been 2893 // Returning S_FALSE is not mentioned in the IA2 Spec, but it might have been
2894 // an oversight. 2894 // an oversight.
2895 if (!SysStringLen(target)) 2895 if (!SysStringLen(target))
2896 return S_FALSE; 2896 return S_FALSE;
2897 2897
2898 return S_OK; 2898 return S_OK;
2899 } 2899 }
2900 2900
2901 STDMETHODIMP BrowserAccessibilityWin::get_startIndex(long* index) { 2901 STDMETHODIMP BrowserAccessibilityWin::get_startIndex(long* index) {
2902 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_START_INDEX); 2902 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_START_INDEX);
2903 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 2903 AddAccessibilityModeFlags(AccessibilityMode::kScreenReader);
2904 if (!instance_active() || !IsHyperlink()) 2904 if (!instance_active() || !IsHyperlink())
2905 return E_FAIL; 2905 return E_FAIL;
2906 2906
2907 if (!index) 2907 if (!index)
2908 return E_INVALIDARG; 2908 return E_INVALIDARG;
2909 2909
2910 int32_t hypertext_offset = 0; 2910 int32_t hypertext_offset = 0;
2911 auto* parent = GetParent(); 2911 auto* parent = GetParent();
2912 if (parent) { 2912 if (parent) {
2913 hypertext_offset = 2913 hypertext_offset =
2914 ToBrowserAccessibilityWin(parent)->GetHypertextOffsetFromChild(*this); 2914 ToBrowserAccessibilityWin(parent)->GetHypertextOffsetFromChild(*this);
2915 } 2915 }
2916 *index = static_cast<LONG>(hypertext_offset); 2916 *index = static_cast<LONG>(hypertext_offset);
2917 return S_OK; 2917 return S_OK;
2918 } 2918 }
2919 2919
2920 STDMETHODIMP BrowserAccessibilityWin::get_endIndex(long* index) { 2920 STDMETHODIMP BrowserAccessibilityWin::get_endIndex(long* index) {
2921 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_END_INDEX); 2921 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_END_INDEX);
2922 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 2922 AddAccessibilityModeFlags(AccessibilityMode::kScreenReader);
2923 LONG start_index; 2923 LONG start_index;
2924 HRESULT hr = get_startIndex(&start_index); 2924 HRESULT hr = get_startIndex(&start_index);
2925 if (hr == S_OK) 2925 if (hr == S_OK)
2926 *index = start_index + 1; 2926 *index = start_index + 1;
2927 return hr; 2927 return hr;
2928 } 2928 }
2929 2929
2930 // This method is deprecated in the IA2 Spec. 2930 // This method is deprecated in the IA2 Spec.
2931 STDMETHODIMP BrowserAccessibilityWin::get_valid(boolean* valid) { 2931 STDMETHODIMP BrowserAccessibilityWin::get_valid(boolean* valid) {
2932 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_VALID); 2932 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_VALID);
2933 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 2933 AddAccessibilityModeFlags(AccessibilityMode::kScreenReader);
2934 return E_NOTIMPL; 2934 return E_NOTIMPL;
2935 } 2935 }
2936 2936
2937 // 2937 //
2938 // IAccessibleAction partly implemented. 2938 // IAccessibleAction partly implemented.
2939 // 2939 //
2940 2940
2941 STDMETHODIMP BrowserAccessibilityWin::nActions(long* n_actions) { 2941 STDMETHODIMP BrowserAccessibilityWin::nActions(long* n_actions) {
2942 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_N_ACTIONS); 2942 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_N_ACTIONS);
2943 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 2943 AddAccessibilityModeFlags(AccessibilityMode::kScreenReader);
2944 if (!instance_active()) 2944 if (!instance_active())
2945 return E_FAIL; 2945 return E_FAIL;
2946 2946
2947 if (!n_actions) 2947 if (!n_actions)
2948 return E_INVALIDARG; 2948 return E_INVALIDARG;
2949 2949
2950 // |IsHyperlink| is required for |IAccessibleHyperlink::anchor/anchorTarget| 2950 // |IsHyperlink| is required for |IAccessibleHyperlink::anchor/anchorTarget|
2951 // to work properly because the |IAccessibleHyperlink| interface inherits from 2951 // to work properly because the |IAccessibleHyperlink| interface inherits from
2952 // |IAccessibleAction|. 2952 // |IAccessibleAction|.
2953 if (IsHyperlink() || HasIntAttribute(ui::AX_ATTR_ACTION)) { 2953 if (IsHyperlink() || HasIntAttribute(ui::AX_ATTR_ACTION)) {
2954 *n_actions = 1; 2954 *n_actions = 1;
2955 } else { 2955 } else {
2956 *n_actions = 0; 2956 *n_actions = 0;
2957 } 2957 }
2958 2958
2959 return S_OK; 2959 return S_OK;
2960 } 2960 }
2961 2961
2962 STDMETHODIMP BrowserAccessibilityWin::doAction(long action_index) { 2962 STDMETHODIMP BrowserAccessibilityWin::doAction(long action_index) {
2963 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_DO_ACTION); 2963 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_DO_ACTION);
2964 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 2964 AddAccessibilityModeFlags(AccessibilityMode::kScreenReader);
2965 if (!instance_active()) 2965 if (!instance_active())
2966 return E_FAIL; 2966 return E_FAIL;
2967 2967
2968 if (!HasIntAttribute(ui::AX_ATTR_ACTION) || action_index != 0) 2968 if (!HasIntAttribute(ui::AX_ATTR_ACTION) || action_index != 0)
2969 return E_INVALIDARG; 2969 return E_INVALIDARG;
2970 2970
2971 manager_->DoDefaultAction(*this); 2971 manager_->DoDefaultAction(*this);
2972 return S_OK; 2972 return S_OK;
2973 } 2973 }
2974 2974
2975 STDMETHODIMP 2975 STDMETHODIMP
2976 BrowserAccessibilityWin::get_description(long action_index, BSTR* description) { 2976 BrowserAccessibilityWin::get_description(long action_index, BSTR* description) {
2977 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_IAACTION_GET_DESCRIPTION); 2977 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_IAACTION_GET_DESCRIPTION);
2978 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 2978 AddAccessibilityModeFlags(AccessibilityMode::kScreenReader);
2979 return E_NOTIMPL; 2979 return E_NOTIMPL;
2980 } 2980 }
2981 2981
2982 STDMETHODIMP BrowserAccessibilityWin::get_keyBinding(long action_index, 2982 STDMETHODIMP BrowserAccessibilityWin::get_keyBinding(long action_index,
2983 long n_max_bindings, 2983 long n_max_bindings,
2984 BSTR** key_bindings, 2984 BSTR** key_bindings,
2985 long* n_bindings) { 2985 long* n_bindings) {
2986 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_KEY_BINDING); 2986 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_KEY_BINDING);
2987 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 2987 AddAccessibilityModeFlags(AccessibilityMode::kScreenReader);
2988 return E_NOTIMPL; 2988 return E_NOTIMPL;
2989 } 2989 }
2990 2990
2991 STDMETHODIMP BrowserAccessibilityWin::get_name(long action_index, BSTR* name) { 2991 STDMETHODIMP BrowserAccessibilityWin::get_name(long action_index, BSTR* name) {
2992 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_NAME); 2992 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_NAME);
2993 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 2993 AddAccessibilityModeFlags(AccessibilityMode::kScreenReader);
2994 if (!instance_active()) 2994 if (!instance_active())
2995 return E_FAIL; 2995 return E_FAIL;
2996 2996
2997 if (!name) 2997 if (!name)
2998 return E_INVALIDARG; 2998 return E_INVALIDARG;
2999 2999
3000 int action; 3000 int action;
3001 if (!GetIntAttribute(ui::AX_ATTR_ACTION, &action) || action_index != 0) { 3001 if (!GetIntAttribute(ui::AX_ATTR_ACTION, &action) || action_index != 0) {
3002 *name = nullptr; 3002 *name = nullptr;
3003 return E_INVALIDARG; 3003 return E_INVALIDARG;
3004 } 3004 }
3005 3005
3006 base::string16 action_verb = 3006 base::string16 action_verb =
3007 ui::ActionToUnlocalizedString(static_cast<ui::AXSupportedAction>(action)); 3007 ui::ActionToUnlocalizedString(static_cast<ui::AXSupportedAction>(action));
3008 if (action_verb.empty() || action_verb == L"none") { 3008 if (action_verb.empty() || action_verb == L"none") {
3009 *name = nullptr; 3009 *name = nullptr;
3010 return S_FALSE; 3010 return S_FALSE;
3011 } 3011 }
3012 3012
3013 *name = SysAllocString(action_verb.c_str()); 3013 *name = SysAllocString(action_verb.c_str());
3014 DCHECK(name); 3014 DCHECK(name);
3015 return S_OK; 3015 return S_OK;
3016 } 3016 }
3017 3017
3018 STDMETHODIMP 3018 STDMETHODIMP
3019 BrowserAccessibilityWin::get_localizedName(long action_index, 3019 BrowserAccessibilityWin::get_localizedName(long action_index,
3020 BSTR* localized_name) { 3020 BSTR* localized_name) {
3021 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_LOCALIZED_NAME); 3021 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_LOCALIZED_NAME);
3022 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 3022 AddAccessibilityModeFlags(AccessibilityMode::kScreenReader);
3023 if (!instance_active()) 3023 if (!instance_active())
3024 return E_FAIL; 3024 return E_FAIL;
3025 3025
3026 if (!localized_name) 3026 if (!localized_name)
3027 return E_INVALIDARG; 3027 return E_INVALIDARG;
3028 3028
3029 int action; 3029 int action;
3030 if (!GetIntAttribute(ui::AX_ATTR_ACTION, &action) || action_index != 0) { 3030 if (!GetIntAttribute(ui::AX_ATTR_ACTION, &action) || action_index != 0) {
3031 *localized_name = nullptr; 3031 *localized_name = nullptr;
3032 return E_INVALIDARG; 3032 return E_INVALIDARG;
(...skipping 10 matching lines...) Expand all
3043 DCHECK(localized_name); 3043 DCHECK(localized_name);
3044 return S_OK; 3044 return S_OK;
3045 } 3045 }
3046 3046
3047 // 3047 //
3048 // IAccessibleValue methods. 3048 // IAccessibleValue methods.
3049 // 3049 //
3050 3050
3051 STDMETHODIMP BrowserAccessibilityWin::get_currentValue(VARIANT* value) { 3051 STDMETHODIMP BrowserAccessibilityWin::get_currentValue(VARIANT* value) {
3052 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_CURRENT_VALUE); 3052 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_CURRENT_VALUE);
3053 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 3053 AddAccessibilityModeFlags(AccessibilityMode::kScreenReader);
3054 if (!instance_active()) 3054 if (!instance_active())
3055 return E_FAIL; 3055 return E_FAIL;
3056 3056
3057 if (!value) 3057 if (!value)
3058 return E_INVALIDARG; 3058 return E_INVALIDARG;
3059 3059
3060 float float_val; 3060 float float_val;
3061 if (GetFloatAttribute( 3061 if (GetFloatAttribute(
3062 ui::AX_ATTR_VALUE_FOR_RANGE, &float_val)) { 3062 ui::AX_ATTR_VALUE_FOR_RANGE, &float_val)) {
3063 value->vt = VT_R8; 3063 value->vt = VT_R8;
3064 value->dblVal = float_val; 3064 value->dblVal = float_val;
3065 return S_OK; 3065 return S_OK;
3066 } 3066 }
3067 3067
3068 value->vt = VT_EMPTY; 3068 value->vt = VT_EMPTY;
3069 return S_FALSE; 3069 return S_FALSE;
3070 } 3070 }
3071 3071
3072 STDMETHODIMP BrowserAccessibilityWin::get_minimumValue(VARIANT* value) { 3072 STDMETHODIMP BrowserAccessibilityWin::get_minimumValue(VARIANT* value) {
3073 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_MINIMUM_VALUE); 3073 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_MINIMUM_VALUE);
3074 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 3074 AddAccessibilityModeFlags(AccessibilityMode::kScreenReader);
3075 if (!instance_active()) 3075 if (!instance_active())
3076 return E_FAIL; 3076 return E_FAIL;
3077 3077
3078 if (!value) 3078 if (!value)
3079 return E_INVALIDARG; 3079 return E_INVALIDARG;
3080 3080
3081 float float_val; 3081 float float_val;
3082 if (GetFloatAttribute(ui::AX_ATTR_MIN_VALUE_FOR_RANGE, 3082 if (GetFloatAttribute(ui::AX_ATTR_MIN_VALUE_FOR_RANGE,
3083 &float_val)) { 3083 &float_val)) {
3084 value->vt = VT_R8; 3084 value->vt = VT_R8;
3085 value->dblVal = float_val; 3085 value->dblVal = float_val;
3086 return S_OK; 3086 return S_OK;
3087 } 3087 }
3088 3088
3089 value->vt = VT_EMPTY; 3089 value->vt = VT_EMPTY;
3090 return S_FALSE; 3090 return S_FALSE;
3091 } 3091 }
3092 3092
3093 STDMETHODIMP BrowserAccessibilityWin::get_maximumValue(VARIANT* value) { 3093 STDMETHODIMP BrowserAccessibilityWin::get_maximumValue(VARIANT* value) {
3094 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_MAXIMUM_VALUE); 3094 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_MAXIMUM_VALUE);
3095 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 3095 AddAccessibilityModeFlags(AccessibilityMode::kScreenReader);
3096 if (!instance_active()) 3096 if (!instance_active())
3097 return E_FAIL; 3097 return E_FAIL;
3098 3098
3099 if (!value) 3099 if (!value)
3100 return E_INVALIDARG; 3100 return E_INVALIDARG;
3101 3101
3102 float float_val; 3102 float float_val;
3103 if (GetFloatAttribute(ui::AX_ATTR_MAX_VALUE_FOR_RANGE, 3103 if (GetFloatAttribute(ui::AX_ATTR_MAX_VALUE_FOR_RANGE,
3104 &float_val)) { 3104 &float_val)) {
3105 value->vt = VT_R8; 3105 value->vt = VT_R8;
3106 value->dblVal = float_val; 3106 value->dblVal = float_val;
3107 return S_OK; 3107 return S_OK;
3108 } 3108 }
3109 3109
3110 value->vt = VT_EMPTY; 3110 value->vt = VT_EMPTY;
3111 return S_FALSE; 3111 return S_FALSE;
3112 } 3112 }
3113 3113
3114 STDMETHODIMP BrowserAccessibilityWin::setCurrentValue(VARIANT new_value) { 3114 STDMETHODIMP BrowserAccessibilityWin::setCurrentValue(VARIANT new_value) {
3115 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_SET_CURRENT_VALUE); 3115 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_SET_CURRENT_VALUE);
3116 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 3116 AddAccessibilityModeFlags(AccessibilityMode::kScreenReader);
3117 // TODO(dmazzoni): Implement this. 3117 // TODO(dmazzoni): Implement this.
3118 return E_NOTIMPL; 3118 return E_NOTIMPL;
3119 } 3119 }
3120 3120
3121 // 3121 //
3122 // ISimpleDOMDocument methods. 3122 // ISimpleDOMDocument methods.
3123 // 3123 //
3124 3124
3125 STDMETHODIMP BrowserAccessibilityWin::get_URL(BSTR* url) { 3125 STDMETHODIMP BrowserAccessibilityWin::get_URL(BSTR* url) {
3126 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_URL); 3126 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_URL);
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
3216 // 3216 //
3217 3217
3218 STDMETHODIMP BrowserAccessibilityWin::get_nodeInfo( 3218 STDMETHODIMP BrowserAccessibilityWin::get_nodeInfo(
3219 BSTR* node_name, 3219 BSTR* node_name,
3220 short* name_space_id, 3220 short* name_space_id,
3221 BSTR* node_value, 3221 BSTR* node_value,
3222 unsigned int* num_children, 3222 unsigned int* num_children,
3223 unsigned int* unique_id, 3223 unsigned int* unique_id,
3224 unsigned short* node_type) { 3224 unsigned short* node_type) {
3225 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_NODE_INFO); 3225 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_NODE_INFO);
3226 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_HTML); 3226 AddAccessibilityModeFlags(AccessibilityMode::kHTML);
3227 if (!instance_active()) 3227 if (!instance_active())
3228 return E_FAIL; 3228 return E_FAIL;
3229 3229
3230 if (!node_name || !name_space_id || !node_value || !num_children || 3230 if (!node_name || !name_space_id || !node_value || !num_children ||
3231 !unique_id || !node_type) { 3231 !unique_id || !node_type) {
3232 return E_INVALIDARG; 3232 return E_INVALIDARG;
3233 } 3233 }
3234 3234
3235 base::string16 tag; 3235 base::string16 tag;
3236 if (GetString16Attribute(ui::AX_ATTR_HTML_TAG, &tag)) 3236 if (GetString16Attribute(ui::AX_ATTR_HTML_TAG, &tag))
(...skipping 18 matching lines...) Expand all
3255 return S_OK; 3255 return S_OK;
3256 } 3256 }
3257 3257
3258 STDMETHODIMP BrowserAccessibilityWin::get_attributes( 3258 STDMETHODIMP BrowserAccessibilityWin::get_attributes(
3259 unsigned short max_attribs, 3259 unsigned short max_attribs,
3260 BSTR* attrib_names, 3260 BSTR* attrib_names,
3261 short* name_space_id, 3261 short* name_space_id,
3262 BSTR* attrib_values, 3262 BSTR* attrib_values,
3263 unsigned short* num_attribs) { 3263 unsigned short* num_attribs) {
3264 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_ISIMPLEDOMNODE_GET_ATTRIBUTES); 3264 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_ISIMPLEDOMNODE_GET_ATTRIBUTES);
3265 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_HTML); 3265 AddAccessibilityModeFlags(AccessibilityMode::kHTML);
3266 if (!instance_active()) 3266 if (!instance_active())
3267 return E_FAIL; 3267 return E_FAIL;
3268 3268
3269 if (!attrib_names || !name_space_id || !attrib_values || !num_attribs) 3269 if (!attrib_names || !name_space_id || !attrib_values || !num_attribs)
3270 return E_INVALIDARG; 3270 return E_INVALIDARG;
3271 3271
3272 *num_attribs = max_attribs; 3272 *num_attribs = max_attribs;
3273 if (*num_attribs > GetHtmlAttributes().size()) 3273 if (*num_attribs > GetHtmlAttributes().size())
3274 *num_attribs = GetHtmlAttributes().size(); 3274 *num_attribs = GetHtmlAttributes().size();
3275 3275
3276 for (unsigned short i = 0; i < *num_attribs; ++i) { 3276 for (unsigned short i = 0; i < *num_attribs; ++i) {
3277 attrib_names[i] = SysAllocString( 3277 attrib_names[i] = SysAllocString(
3278 base::UTF8ToUTF16(GetHtmlAttributes()[i].first).c_str()); 3278 base::UTF8ToUTF16(GetHtmlAttributes()[i].first).c_str());
3279 name_space_id[i] = 0; 3279 name_space_id[i] = 0;
3280 attrib_values[i] = SysAllocString( 3280 attrib_values[i] = SysAllocString(
3281 base::UTF8ToUTF16(GetHtmlAttributes()[i].second).c_str()); 3281 base::UTF8ToUTF16(GetHtmlAttributes()[i].second).c_str());
3282 } 3282 }
3283 return S_OK; 3283 return S_OK;
3284 } 3284 }
3285 3285
3286 STDMETHODIMP BrowserAccessibilityWin::get_attributesForNames( 3286 STDMETHODIMP BrowserAccessibilityWin::get_attributesForNames(
3287 unsigned short num_attribs, 3287 unsigned short num_attribs,
3288 BSTR* attrib_names, 3288 BSTR* attrib_names,
3289 short* name_space_id, 3289 short* name_space_id,
3290 BSTR* attrib_values) { 3290 BSTR* attrib_values) {
3291 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_ATTRIBUTES_FOR_NAMES); 3291 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_ATTRIBUTES_FOR_NAMES);
3292 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_HTML); 3292 AddAccessibilityModeFlags(AccessibilityMode::kHTML);
3293 if (!instance_active()) 3293 if (!instance_active())
3294 return E_FAIL; 3294 return E_FAIL;
3295 3295
3296 if (!attrib_names || !name_space_id || !attrib_values) 3296 if (!attrib_names || !name_space_id || !attrib_values)
3297 return E_INVALIDARG; 3297 return E_INVALIDARG;
3298 3298
3299 for (unsigned short i = 0; i < num_attribs; ++i) { 3299 for (unsigned short i = 0; i < num_attribs; ++i) {
3300 name_space_id[i] = 0; 3300 name_space_id[i] = 0;
3301 bool found = false; 3301 bool found = false;
3302 std::string name = base::UTF16ToUTF8((LPCWSTR)attrib_names[i]); 3302 std::string name = base::UTF16ToUTF8((LPCWSTR)attrib_names[i]);
(...skipping 12 matching lines...) Expand all
3315 return S_OK; 3315 return S_OK;
3316 } 3316 }
3317 3317
3318 STDMETHODIMP BrowserAccessibilityWin::get_computedStyle( 3318 STDMETHODIMP BrowserAccessibilityWin::get_computedStyle(
3319 unsigned short max_style_properties, 3319 unsigned short max_style_properties,
3320 boolean use_alternate_view, 3320 boolean use_alternate_view,
3321 BSTR* style_properties, 3321 BSTR* style_properties,
3322 BSTR* style_values, 3322 BSTR* style_values,
3323 unsigned short *num_style_properties) { 3323 unsigned short *num_style_properties) {
3324 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_COMPUTED_STYLE); 3324 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_COMPUTED_STYLE);
3325 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_HTML); 3325 AddAccessibilityModeFlags(AccessibilityMode::kHTML);
3326 if (!instance_active()) 3326 if (!instance_active())
3327 return E_FAIL; 3327 return E_FAIL;
3328 3328
3329 if (!style_properties || !style_values) 3329 if (!style_properties || !style_values)
3330 return E_INVALIDARG; 3330 return E_INVALIDARG;
3331 3331
3332 // We only cache a single style property for now: DISPLAY 3332 // We only cache a single style property for now: DISPLAY
3333 3333
3334 base::string16 display; 3334 base::string16 display;
3335 if (max_style_properties == 0 || 3335 if (max_style_properties == 0 ||
3336 !GetString16Attribute(ui::AX_ATTR_DISPLAY, &display)) { 3336 !GetString16Attribute(ui::AX_ATTR_DISPLAY, &display)) {
3337 *num_style_properties = 0; 3337 *num_style_properties = 0;
3338 return S_OK; 3338 return S_OK;
3339 } 3339 }
3340 3340
3341 *num_style_properties = 1; 3341 *num_style_properties = 1;
3342 style_properties[0] = SysAllocString(L"display"); 3342 style_properties[0] = SysAllocString(L"display");
3343 style_values[0] = SysAllocString(display.c_str()); 3343 style_values[0] = SysAllocString(display.c_str());
3344 3344
3345 return S_OK; 3345 return S_OK;
3346 } 3346 }
3347 3347
3348 STDMETHODIMP BrowserAccessibilityWin::get_computedStyleForProperties( 3348 STDMETHODIMP BrowserAccessibilityWin::get_computedStyleForProperties(
3349 unsigned short num_style_properties, 3349 unsigned short num_style_properties,
3350 boolean use_alternate_view, 3350 boolean use_alternate_view,
3351 BSTR* style_properties, 3351 BSTR* style_properties,
3352 BSTR* style_values) { 3352 BSTR* style_values) {
3353 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_COMPUTED_STYLE_FOR_PROPERTIES); 3353 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_COMPUTED_STYLE_FOR_PROPERTIES);
3354 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_HTML); 3354 AddAccessibilityModeFlags(AccessibilityMode::kHTML);
3355 if (!instance_active()) 3355 if (!instance_active())
3356 return E_FAIL; 3356 return E_FAIL;
3357 3357
3358 if (!style_properties || !style_values) 3358 if (!style_properties || !style_values)
3359 return E_INVALIDARG; 3359 return E_INVALIDARG;
3360 3360
3361 // We only cache a single style property for now: DISPLAY 3361 // We only cache a single style property for now: DISPLAY
3362 3362
3363 for (unsigned short i = 0; i < num_style_properties; ++i) { 3363 for (unsigned short i = 0; i < num_style_properties; ++i) {
3364 base::string16 name = base::ToLowerASCII( 3364 base::string16 name = base::ToLowerASCII(
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
3486 *node = NULL; 3486 *node = NULL;
3487 return S_FALSE; 3487 return S_FALSE;
3488 } 3488 }
3489 3489
3490 *node = ToBrowserAccessibilityWin(child)->NewReference(); 3490 *node = ToBrowserAccessibilityWin(child)->NewReference();
3491 return S_OK; 3491 return S_OK;
3492 } 3492 }
3493 3493
3494 STDMETHODIMP BrowserAccessibilityWin::get_innerHTML(BSTR* innerHTML) { 3494 STDMETHODIMP BrowserAccessibilityWin::get_innerHTML(BSTR* innerHTML) {
3495 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_INNER_HTML); 3495 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_INNER_HTML);
3496 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_HTML); 3496 AddAccessibilityModeFlags(AccessibilityMode::kHTML);
3497 return E_NOTIMPL; 3497 return E_NOTIMPL;
3498 } 3498 }
3499 3499
3500 STDMETHODIMP 3500 STDMETHODIMP
3501 BrowserAccessibilityWin::get_localInterface(void** local_interface) { 3501 BrowserAccessibilityWin::get_localInterface(void** local_interface) {
3502 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_LOCAL_INTERFACE); 3502 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_LOCAL_INTERFACE);
3503 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_HTML); 3503 AddAccessibilityModeFlags(AccessibilityMode::kHTML);
3504 return E_NOTIMPL; 3504 return E_NOTIMPL;
3505 } 3505 }
3506 3506
3507 STDMETHODIMP BrowserAccessibilityWin::get_language(BSTR* language) { 3507 STDMETHODIMP BrowserAccessibilityWin::get_language(BSTR* language) {
3508 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_LANGUAGE); 3508 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_LANGUAGE);
3509 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 3509 AddAccessibilityModeFlags(AccessibilityMode::kScreenReader);
3510 if (!language) 3510 if (!language)
3511 return E_INVALIDARG; 3511 return E_INVALIDARG;
3512 *language = nullptr; 3512 *language = nullptr;
3513 3513
3514 if (!instance_active()) 3514 if (!instance_active())
3515 return E_FAIL; 3515 return E_FAIL;
3516 3516
3517 base::string16 lang = GetInheritedString16Attribute(ui::AX_ATTR_LANGUAGE); 3517 base::string16 lang = GetInheritedString16Attribute(ui::AX_ATTR_LANGUAGE);
3518 if (lang.empty()) 3518 if (lang.empty())
3519 lang = L"en-US"; 3519 lang = L"en-US";
3520 3520
3521 *language = SysAllocString(lang.c_str()); 3521 *language = SysAllocString(lang.c_str());
3522 DCHECK(*language); 3522 DCHECK(*language);
3523 return S_OK; 3523 return S_OK;
3524 } 3524 }
3525 3525
3526 // 3526 //
3527 // ISimpleDOMText methods. 3527 // ISimpleDOMText methods.
3528 // 3528 //
3529 3529
3530 STDMETHODIMP BrowserAccessibilityWin::get_domText(BSTR* dom_text) { 3530 STDMETHODIMP BrowserAccessibilityWin::get_domText(BSTR* dom_text) {
3531 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_DOM_TEXT); 3531 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_DOM_TEXT);
3532 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 3532 AddAccessibilityModeFlags(AccessibilityMode::kScreenReader);
3533 if (!instance_active()) 3533 if (!instance_active())
3534 return E_FAIL; 3534 return E_FAIL;
3535 3535
3536 if (!dom_text) 3536 if (!dom_text)
3537 return E_INVALIDARG; 3537 return E_INVALIDARG;
3538 3538
3539 return GetStringAttributeAsBstr( 3539 return GetStringAttributeAsBstr(
3540 ui::AX_ATTR_NAME, dom_text); 3540 ui::AX_ATTR_NAME, dom_text);
3541 } 3541 }
3542 3542
3543 STDMETHODIMP BrowserAccessibilityWin::get_clippedSubstringBounds( 3543 STDMETHODIMP BrowserAccessibilityWin::get_clippedSubstringBounds(
3544 unsigned int start_index, 3544 unsigned int start_index,
3545 unsigned int end_index, 3545 unsigned int end_index,
3546 int* out_x, 3546 int* out_x,
3547 int* out_y, 3547 int* out_y,
3548 int* out_width, 3548 int* out_width,
3549 int* out_height) { 3549 int* out_height) {
3550 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_CLIPPED_SUBSTRING_BOUNDS); 3550 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_CLIPPED_SUBSTRING_BOUNDS);
3551 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER | 3551 AddAccessibilityModeFlags(AccessibilityMode::kScreenReader |
3552 ACCESSIBILITY_MODE_FLAG_INLINE_TEXT_BOXES); 3552 AccessibilityMode::kInlineTextBoxes);
3553 // TODO(dmazzoni): fully support this API by intersecting the 3553 // TODO(dmazzoni): fully support this API by intersecting the
3554 // rect with the container's rect. 3554 // rect with the container's rect.
3555 return get_unclippedSubstringBounds( 3555 return get_unclippedSubstringBounds(
3556 start_index, end_index, out_x, out_y, out_width, out_height); 3556 start_index, end_index, out_x, out_y, out_width, out_height);
3557 } 3557 }
3558 3558
3559 STDMETHODIMP BrowserAccessibilityWin::get_unclippedSubstringBounds( 3559 STDMETHODIMP BrowserAccessibilityWin::get_unclippedSubstringBounds(
3560 unsigned int start_index, 3560 unsigned int start_index,
3561 unsigned int end_index, 3561 unsigned int end_index,
3562 int* out_x, 3562 int* out_x,
3563 int* out_y, 3563 int* out_y,
3564 int* out_width, 3564 int* out_width,
3565 int* out_height) { 3565 int* out_height) {
3566 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_UNCLIPPED_SUBSTRING_BOUNDS); 3566 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_UNCLIPPED_SUBSTRING_BOUNDS);
3567 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER | 3567 AddAccessibilityModeFlags(AccessibilityMode::kScreenReader |
3568 ACCESSIBILITY_MODE_FLAG_INLINE_TEXT_BOXES); 3568 AccessibilityMode::kInlineTextBoxes);
3569 if (!instance_active()) 3569 if (!instance_active())
3570 return E_FAIL; 3570 return E_FAIL;
3571 3571
3572 if (!out_x || !out_y || !out_width || !out_height) 3572 if (!out_x || !out_y || !out_width || !out_height)
3573 return E_INVALIDARG; 3573 return E_INVALIDARG;
3574 3574
3575 unsigned int text_length = static_cast<unsigned int>(GetText().size()); 3575 unsigned int text_length = static_cast<unsigned int>(GetText().size());
3576 if (start_index > text_length || end_index > text_length || 3576 if (start_index > text_length || end_index > text_length ||
3577 start_index > end_index) { 3577 start_index > end_index) {
3578 return E_INVALIDARG; 3578 return E_INVALIDARG;
3579 } 3579 }
3580 3580
3581 gfx::Rect bounds = GetScreenBoundsForRange( 3581 gfx::Rect bounds = GetScreenBoundsForRange(
3582 start_index, end_index - start_index); 3582 start_index, end_index - start_index);
3583 *out_x = bounds.x(); 3583 *out_x = bounds.x();
3584 *out_y = bounds.y(); 3584 *out_y = bounds.y();
3585 *out_width = bounds.width(); 3585 *out_width = bounds.width();
3586 *out_height = bounds.height(); 3586 *out_height = bounds.height();
3587 return S_OK; 3587 return S_OK;
3588 } 3588 }
3589 3589
3590 STDMETHODIMP BrowserAccessibilityWin::scrollToSubstring( 3590 STDMETHODIMP BrowserAccessibilityWin::scrollToSubstring(
3591 unsigned int start_index, 3591 unsigned int start_index,
3592 unsigned int end_index) { 3592 unsigned int end_index) {
3593 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_SCROLL_TO_SUBSTRING); 3593 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_SCROLL_TO_SUBSTRING);
3594 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER | 3594 AddAccessibilityModeFlags(AccessibilityMode::kScreenReader |
3595 ACCESSIBILITY_MODE_FLAG_INLINE_TEXT_BOXES); 3595 AccessibilityMode::kInlineTextBoxes);
3596 if (!instance_active()) 3596 if (!instance_active())
3597 return E_FAIL; 3597 return E_FAIL;
3598 3598
3599 unsigned int text_length = static_cast<unsigned int>(GetText().size()); 3599 unsigned int text_length = static_cast<unsigned int>(GetText().size());
3600 if (start_index > text_length || end_index > text_length || 3600 if (start_index > text_length || end_index > text_length ||
3601 start_index > end_index) { 3601 start_index > end_index) {
3602 return E_INVALIDARG; 3602 return E_INVALIDARG;
3603 } 3603 }
3604 3604
3605 manager_->ScrollToMakeVisible( 3605 manager_->ScrollToMakeVisible(
3606 *this, GetPageBoundsForRange(start_index, end_index - start_index)); 3606 *this, GetPageBoundsForRange(start_index, end_index - start_index));
3607 3607
3608 return S_OK; 3608 return S_OK;
3609 } 3609 }
3610 3610
3611 STDMETHODIMP BrowserAccessibilityWin::get_fontFamily(BSTR* font_family) { 3611 STDMETHODIMP BrowserAccessibilityWin::get_fontFamily(BSTR* font_family) {
3612 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_FONT_FAMILY); 3612 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_FONT_FAMILY);
3613 AddAccessibilityModeFlags(ACCESSIBILITY_MODE_FLAG_SCREEN_READER); 3613 AddAccessibilityModeFlags(AccessibilityMode::kScreenReader);
3614 if (!font_family) 3614 if (!font_family)
3615 return E_INVALIDARG; 3615 return E_INVALIDARG;
3616 *font_family = nullptr; 3616 *font_family = nullptr;
3617 3617
3618 if (!instance_active()) 3618 if (!instance_active())
3619 return E_FAIL; 3619 return E_FAIL;
3620 3620
3621 base::string16 family = 3621 base::string16 family =
3622 GetInheritedString16Attribute(ui::AX_ATTR_FONT_FAMILY); 3622 GetInheritedString16Attribute(ui::AX_ATTR_FONT_FAMILY);
3623 if (family.empty()) 3623 if (family.empty())
(...skipping 2167 matching lines...) Expand 10 before | Expand all | Expand 10 after
5791 return static_cast<BrowserAccessibilityWin*>(obj); 5791 return static_cast<BrowserAccessibilityWin*>(obj);
5792 } 5792 }
5793 5793
5794 const BrowserAccessibilityWin* 5794 const BrowserAccessibilityWin*
5795 ToBrowserAccessibilityWin(const BrowserAccessibility* obj) { 5795 ToBrowserAccessibilityWin(const BrowserAccessibility* obj) {
5796 DCHECK(!obj || obj->IsNative()); 5796 DCHECK(!obj || obj->IsNative());
5797 return static_cast<const BrowserAccessibilityWin*>(obj); 5797 return static_cast<const BrowserAccessibilityWin*>(obj);
5798 } 5798 }
5799 5799
5800 } // namespace content 5800 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698