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

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

Issue 1549113002: Switch to standard integer types in content/browser/. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 4 years, 12 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 305 matching lines...) Expand 10 before | Expand all | Expand 10 after
316 BrowserAccessibilityWin* target = GetTargetFromChildID(start); 316 BrowserAccessibilityWin* target = GetTargetFromChildID(start);
317 if (!target) 317 if (!target)
318 return E_INVALIDARG; 318 return E_INVALIDARG;
319 319
320 if ((nav_dir == NAVDIR_LASTCHILD || nav_dir == NAVDIR_FIRSTCHILD) && 320 if ((nav_dir == NAVDIR_LASTCHILD || nav_dir == NAVDIR_FIRSTCHILD) &&
321 start.lVal != CHILDID_SELF) { 321 start.lVal != CHILDID_SELF) {
322 // MSAA states that navigating to first/last child can only be from self. 322 // MSAA states that navigating to first/last child can only be from self.
323 return E_INVALIDARG; 323 return E_INVALIDARG;
324 } 324 }
325 325
326 uint32 child_count = target->PlatformChildCount(); 326 uint32_t child_count = target->PlatformChildCount();
327 327
328 BrowserAccessibility* result = NULL; 328 BrowserAccessibility* result = NULL;
329 switch (nav_dir) { 329 switch (nav_dir) {
330 case NAVDIR_DOWN: 330 case NAVDIR_DOWN:
331 case NAVDIR_UP: 331 case NAVDIR_UP:
332 case NAVDIR_LEFT: 332 case NAVDIR_LEFT:
333 case NAVDIR_RIGHT: 333 case NAVDIR_RIGHT:
334 // These directions are not implemented, matching Mozilla and IE. 334 // These directions are not implemented, matching Mozilla and IE.
335 return E_NOTIMPL; 335 return E_NOTIMPL;
336 case NAVDIR_FIRSTCHILD: 336 case NAVDIR_FIRSTCHILD:
(...skipping 762 matching lines...) Expand 10 before | Expand all | Expand 10 after
1099 !GetIntAttribute( 1099 !GetIntAttribute(
1100 ui::AX_ATTR_TABLE_ROW_COUNT, &rows) || 1100 ui::AX_ATTR_TABLE_ROW_COUNT, &rows) ||
1101 columns <= 0 || 1101 columns <= 0 ||
1102 rows <= 0) { 1102 rows <= 0) {
1103 return S_FALSE; 1103 return S_FALSE;
1104 } 1104 }
1105 1105
1106 if (row < 0 || row >= rows || column < 0 || column >= columns) 1106 if (row < 0 || row >= rows || column < 0 || column >= columns)
1107 return E_INVALIDARG; 1107 return E_INVALIDARG;
1108 1108
1109 const std::vector<int32>& cell_ids = GetIntListAttribute( 1109 const std::vector<int32_t>& cell_ids =
1110 ui::AX_ATTR_CELL_IDS); 1110 GetIntListAttribute(ui::AX_ATTR_CELL_IDS);
1111 DCHECK_EQ(columns * rows, static_cast<int>(cell_ids.size())); 1111 DCHECK_EQ(columns * rows, static_cast<int>(cell_ids.size()));
1112 1112
1113 int cell_id = cell_ids[row * columns + column]; 1113 int cell_id = cell_ids[row * columns + column];
1114 BrowserAccessibilityWin* cell = GetFromID(cell_id); 1114 BrowserAccessibilityWin* cell = GetFromID(cell_id);
1115 if (cell) { 1115 if (cell) {
1116 *accessible = static_cast<IAccessible*>(cell->NewReference()); 1116 *accessible = static_cast<IAccessible*>(cell->NewReference());
1117 return S_OK; 1117 return S_OK;
1118 } 1118 }
1119 1119
1120 *accessible = NULL; 1120 *accessible = NULL;
(...skipping 27 matching lines...) Expand all
1148 !GetIntAttribute( 1148 !GetIntAttribute(
1149 ui::AX_ATTR_TABLE_ROW_COUNT, &rows) || 1149 ui::AX_ATTR_TABLE_ROW_COUNT, &rows) ||
1150 columns <= 0 || 1150 columns <= 0 ||
1151 rows <= 0) { 1151 rows <= 0) {
1152 return S_FALSE; 1152 return S_FALSE;
1153 } 1153 }
1154 1154
1155 if (row < 0 || row >= rows || column < 0 || column >= columns) 1155 if (row < 0 || row >= rows || column < 0 || column >= columns)
1156 return E_INVALIDARG; 1156 return E_INVALIDARG;
1157 1157
1158 const std::vector<int32>& cell_ids = GetIntListAttribute( 1158 const std::vector<int32_t>& cell_ids =
1159 ui::AX_ATTR_CELL_IDS); 1159 GetIntListAttribute(ui::AX_ATTR_CELL_IDS);
1160 const std::vector<int32>& unique_cell_ids = GetIntListAttribute( 1160 const std::vector<int32_t>& unique_cell_ids =
1161 ui::AX_ATTR_UNIQUE_CELL_IDS); 1161 GetIntListAttribute(ui::AX_ATTR_UNIQUE_CELL_IDS);
1162 DCHECK_EQ(columns * rows, static_cast<int>(cell_ids.size())); 1162 DCHECK_EQ(columns * rows, static_cast<int>(cell_ids.size()));
1163 int cell_id = cell_ids[row * columns + column]; 1163 int cell_id = cell_ids[row * columns + column];
1164 for (size_t i = 0; i < unique_cell_ids.size(); ++i) { 1164 for (size_t i = 0; i < unique_cell_ids.size(); ++i) {
1165 if (unique_cell_ids[i] == cell_id) { 1165 if (unique_cell_ids[i] == cell_id) {
1166 *cell_index = (long)i; 1166 *cell_index = (long)i;
1167 return S_OK; 1167 return S_OK;
1168 } 1168 }
1169 } 1169 }
1170 1170
1171 return S_FALSE; 1171 return S_FALSE;
(...skipping 13 matching lines...) Expand all
1185 ui::AX_ATTR_TABLE_COLUMN_COUNT, &columns) || 1185 ui::AX_ATTR_TABLE_COLUMN_COUNT, &columns) ||
1186 !GetIntAttribute(ui::AX_ATTR_TABLE_ROW_COUNT, &rows) || 1186 !GetIntAttribute(ui::AX_ATTR_TABLE_ROW_COUNT, &rows) ||
1187 columns <= 0 || 1187 columns <= 0 ||
1188 rows <= 0) { 1188 rows <= 0) {
1189 return S_FALSE; 1189 return S_FALSE;
1190 } 1190 }
1191 1191
1192 if (column < 0 || column >= columns) 1192 if (column < 0 || column >= columns)
1193 return E_INVALIDARG; 1193 return E_INVALIDARG;
1194 1194
1195 const std::vector<int32>& cell_ids = GetIntListAttribute( 1195 const std::vector<int32_t>& cell_ids =
1196 ui::AX_ATTR_CELL_IDS); 1196 GetIntListAttribute(ui::AX_ATTR_CELL_IDS);
1197 for (int i = 0; i < rows; ++i) { 1197 for (int i = 0; i < rows; ++i) {
1198 int cell_id = cell_ids[i * columns + column]; 1198 int cell_id = cell_ids[i * columns + column];
1199 BrowserAccessibilityWin* cell = static_cast<BrowserAccessibilityWin*>( 1199 BrowserAccessibilityWin* cell = static_cast<BrowserAccessibilityWin*>(
1200 manager()->GetFromID(cell_id)); 1200 manager()->GetFromID(cell_id));
1201 if (cell && cell->GetRole() == ui::AX_ROLE_COLUMN_HEADER) { 1201 if (cell && cell->GetRole() == ui::AX_ROLE_COLUMN_HEADER) {
1202 base::string16 cell_name = cell->GetString16Attribute( 1202 base::string16 cell_name = cell->GetString16Attribute(
1203 ui::AX_ATTR_NAME); 1203 ui::AX_ATTR_NAME);
1204 if (cell_name.size() > 0) { 1204 if (cell_name.size() > 0) {
1205 *description = SysAllocString(cell_name.c_str()); 1205 *description = SysAllocString(cell_name.c_str());
1206 return S_OK; 1206 return S_OK;
(...skipping 25 matching lines...) Expand all
1232 ui::AX_ATTR_TABLE_COLUMN_COUNT, &columns) || 1232 ui::AX_ATTR_TABLE_COLUMN_COUNT, &columns) ||
1233 !GetIntAttribute(ui::AX_ATTR_TABLE_ROW_COUNT, &rows) || 1233 !GetIntAttribute(ui::AX_ATTR_TABLE_ROW_COUNT, &rows) ||
1234 columns <= 0 || 1234 columns <= 0 ||
1235 rows <= 0) { 1235 rows <= 0) {
1236 return S_FALSE; 1236 return S_FALSE;
1237 } 1237 }
1238 1238
1239 if (row < 0 || row >= rows || column < 0 || column >= columns) 1239 if (row < 0 || row >= rows || column < 0 || column >= columns)
1240 return E_INVALIDARG; 1240 return E_INVALIDARG;
1241 1241
1242 const std::vector<int32>& cell_ids = GetIntListAttribute( 1242 const std::vector<int32_t>& cell_ids =
1243 ui::AX_ATTR_CELL_IDS); 1243 GetIntListAttribute(ui::AX_ATTR_CELL_IDS);
1244 int cell_id = cell_ids[row * columns + column]; 1244 int cell_id = cell_ids[row * columns + column];
1245 BrowserAccessibilityWin* cell = static_cast<BrowserAccessibilityWin*>( 1245 BrowserAccessibilityWin* cell = static_cast<BrowserAccessibilityWin*>(
1246 manager()->GetFromID(cell_id)); 1246 manager()->GetFromID(cell_id));
1247 int colspan; 1247 int colspan;
1248 if (cell && 1248 if (cell &&
1249 cell->GetIntAttribute( 1249 cell->GetIntAttribute(
1250 ui::AX_ATTR_TABLE_CELL_COLUMN_SPAN, &colspan) && 1250 ui::AX_ATTR_TABLE_CELL_COLUMN_SPAN, &colspan) &&
1251 colspan >= 1) { 1251 colspan >= 1) {
1252 *n_columns_spanned = colspan; 1252 *n_columns_spanned = colspan;
1253 return S_OK; 1253 return S_OK;
(...skipping 10 matching lines...) Expand all
1264 } 1264 }
1265 1265
1266 STDMETHODIMP BrowserAccessibilityWin::get_columnIndex(long cell_index, 1266 STDMETHODIMP BrowserAccessibilityWin::get_columnIndex(long cell_index,
1267 long* column_index) { 1267 long* column_index) {
1268 if (!instance_active()) 1268 if (!instance_active())
1269 return E_FAIL; 1269 return E_FAIL;
1270 1270
1271 if (!column_index) 1271 if (!column_index)
1272 return E_INVALIDARG; 1272 return E_INVALIDARG;
1273 1273
1274 const std::vector<int32>& unique_cell_ids = GetIntListAttribute( 1274 const std::vector<int32_t>& unique_cell_ids =
1275 ui::AX_ATTR_UNIQUE_CELL_IDS); 1275 GetIntListAttribute(ui::AX_ATTR_UNIQUE_CELL_IDS);
1276 int cell_id_count = static_cast<int>(unique_cell_ids.size()); 1276 int cell_id_count = static_cast<int>(unique_cell_ids.size());
1277 if (cell_index < 0) 1277 if (cell_index < 0)
1278 return E_INVALIDARG; 1278 return E_INVALIDARG;
1279 if (cell_index >= cell_id_count) 1279 if (cell_index >= cell_id_count)
1280 return S_FALSE; 1280 return S_FALSE;
1281 1281
1282 int cell_id = unique_cell_ids[cell_index]; 1282 int cell_id = unique_cell_ids[cell_index];
1283 BrowserAccessibilityWin* cell = 1283 BrowserAccessibilityWin* cell =
1284 manager()->GetFromID(cell_id)->ToBrowserAccessibilityWin(); 1284 manager()->GetFromID(cell_id)->ToBrowserAccessibilityWin();
1285 int col_index; 1285 int col_index;
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
1374 ui::AX_ATTR_TABLE_COLUMN_COUNT, &columns) || 1374 ui::AX_ATTR_TABLE_COLUMN_COUNT, &columns) ||
1375 !GetIntAttribute(ui::AX_ATTR_TABLE_ROW_COUNT, &rows) || 1375 !GetIntAttribute(ui::AX_ATTR_TABLE_ROW_COUNT, &rows) ||
1376 columns <= 0 || 1376 columns <= 0 ||
1377 rows <= 0) { 1377 rows <= 0) {
1378 return S_FALSE; 1378 return S_FALSE;
1379 } 1379 }
1380 1380
1381 if (row < 0 || row >= rows) 1381 if (row < 0 || row >= rows)
1382 return E_INVALIDARG; 1382 return E_INVALIDARG;
1383 1383
1384 const std::vector<int32>& cell_ids = GetIntListAttribute( 1384 const std::vector<int32_t>& cell_ids =
1385 ui::AX_ATTR_CELL_IDS); 1385 GetIntListAttribute(ui::AX_ATTR_CELL_IDS);
1386 for (int i = 0; i < columns; ++i) { 1386 for (int i = 0; i < columns; ++i) {
1387 int cell_id = cell_ids[row * columns + i]; 1387 int cell_id = cell_ids[row * columns + i];
1388 BrowserAccessibilityWin* cell = 1388 BrowserAccessibilityWin* cell =
1389 manager()->GetFromID(cell_id)->ToBrowserAccessibilityWin(); 1389 manager()->GetFromID(cell_id)->ToBrowserAccessibilityWin();
1390 if (cell && cell->GetRole() == ui::AX_ROLE_ROW_HEADER) { 1390 if (cell && cell->GetRole() == ui::AX_ROLE_ROW_HEADER) {
1391 base::string16 cell_name = cell->GetString16Attribute( 1391 base::string16 cell_name = cell->GetString16Attribute(
1392 ui::AX_ATTR_NAME); 1392 ui::AX_ATTR_NAME);
1393 if (cell_name.size() > 0) { 1393 if (cell_name.size() > 0) {
1394 *description = SysAllocString(cell_name.c_str()); 1394 *description = SysAllocString(cell_name.c_str());
1395 return S_OK; 1395 return S_OK;
(...skipping 24 matching lines...) Expand all
1420 ui::AX_ATTR_TABLE_COLUMN_COUNT, &columns) || 1420 ui::AX_ATTR_TABLE_COLUMN_COUNT, &columns) ||
1421 !GetIntAttribute(ui::AX_ATTR_TABLE_ROW_COUNT, &rows) || 1421 !GetIntAttribute(ui::AX_ATTR_TABLE_ROW_COUNT, &rows) ||
1422 columns <= 0 || 1422 columns <= 0 ||
1423 rows <= 0) { 1423 rows <= 0) {
1424 return S_FALSE; 1424 return S_FALSE;
1425 } 1425 }
1426 1426
1427 if (row < 0 || row >= rows || column < 0 || column >= columns) 1427 if (row < 0 || row >= rows || column < 0 || column >= columns)
1428 return E_INVALIDARG; 1428 return E_INVALIDARG;
1429 1429
1430 const std::vector<int32>& cell_ids = GetIntListAttribute( 1430 const std::vector<int32_t>& cell_ids =
1431 ui::AX_ATTR_CELL_IDS); 1431 GetIntListAttribute(ui::AX_ATTR_CELL_IDS);
1432 int cell_id = cell_ids[row * columns + column]; 1432 int cell_id = cell_ids[row * columns + column];
1433 BrowserAccessibilityWin* cell = 1433 BrowserAccessibilityWin* cell =
1434 manager()->GetFromID(cell_id)->ToBrowserAccessibilityWin(); 1434 manager()->GetFromID(cell_id)->ToBrowserAccessibilityWin();
1435 int rowspan; 1435 int rowspan;
1436 if (cell && 1436 if (cell &&
1437 cell->GetIntAttribute( 1437 cell->GetIntAttribute(
1438 ui::AX_ATTR_TABLE_CELL_ROW_SPAN, &rowspan) && 1438 ui::AX_ATTR_TABLE_CELL_ROW_SPAN, &rowspan) &&
1439 rowspan >= 1) { 1439 rowspan >= 1) {
1440 *n_rows_spanned = rowspan; 1440 *n_rows_spanned = rowspan;
1441 return S_OK; 1441 return S_OK;
(...skipping 10 matching lines...) Expand all
1452 } 1452 }
1453 1453
1454 STDMETHODIMP BrowserAccessibilityWin::get_rowIndex(long cell_index, 1454 STDMETHODIMP BrowserAccessibilityWin::get_rowIndex(long cell_index,
1455 long* row_index) { 1455 long* row_index) {
1456 if (!instance_active()) 1456 if (!instance_active())
1457 return E_FAIL; 1457 return E_FAIL;
1458 1458
1459 if (!row_index) 1459 if (!row_index)
1460 return E_INVALIDARG; 1460 return E_INVALIDARG;
1461 1461
1462 const std::vector<int32>& unique_cell_ids = GetIntListAttribute( 1462 const std::vector<int32_t>& unique_cell_ids =
1463 ui::AX_ATTR_UNIQUE_CELL_IDS); 1463 GetIntListAttribute(ui::AX_ATTR_UNIQUE_CELL_IDS);
1464 int cell_id_count = static_cast<int>(unique_cell_ids.size()); 1464 int cell_id_count = static_cast<int>(unique_cell_ids.size());
1465 if (cell_index < 0) 1465 if (cell_index < 0)
1466 return E_INVALIDARG; 1466 return E_INVALIDARG;
1467 if (cell_index >= cell_id_count) 1467 if (cell_index >= cell_id_count)
1468 return S_FALSE; 1468 return S_FALSE;
1469 1469
1470 int cell_id = unique_cell_ids[cell_index]; 1470 int cell_id = unique_cell_ids[cell_index];
1471 BrowserAccessibilityWin* cell = 1471 BrowserAccessibilityWin* cell =
1472 manager()->GetFromID(cell_id)->ToBrowserAccessibilityWin(); 1472 manager()->GetFromID(cell_id)->ToBrowserAccessibilityWin();
1473 int cell_row_index; 1473 int cell_row_index;
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
1581 long* column, 1581 long* column,
1582 long* row_extents, 1582 long* row_extents,
1583 long* column_extents, 1583 long* column_extents,
1584 boolean* is_selected) { 1584 boolean* is_selected) {
1585 if (!instance_active()) 1585 if (!instance_active())
1586 return E_FAIL; 1586 return E_FAIL;
1587 1587
1588 if (!row || !column || !row_extents || !column_extents || !is_selected) 1588 if (!row || !column || !row_extents || !column_extents || !is_selected)
1589 return E_INVALIDARG; 1589 return E_INVALIDARG;
1590 1590
1591 const std::vector<int32>& unique_cell_ids = GetIntListAttribute( 1591 const std::vector<int32_t>& unique_cell_ids =
1592 ui::AX_ATTR_UNIQUE_CELL_IDS); 1592 GetIntListAttribute(ui::AX_ATTR_UNIQUE_CELL_IDS);
1593 int cell_id_count = static_cast<int>(unique_cell_ids.size()); 1593 int cell_id_count = static_cast<int>(unique_cell_ids.size());
1594 if (index < 0) 1594 if (index < 0)
1595 return E_INVALIDARG; 1595 return E_INVALIDARG;
1596 if (index >= cell_id_count) 1596 if (index >= cell_id_count)
1597 return S_FALSE; 1597 return S_FALSE;
1598 1598
1599 int cell_id = unique_cell_ids[index]; 1599 int cell_id = unique_cell_ids[index];
1600 BrowserAccessibilityWin* cell = 1600 BrowserAccessibilityWin* cell =
1601 manager()->GetFromID(cell_id)->ToBrowserAccessibilityWin(); 1601 manager()->GetFromID(cell_id)->ToBrowserAccessibilityWin();
1602 int rowspan; 1602 int rowspan;
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
1744 int rows; 1744 int rows;
1745 if (!table->GetIntAttribute( 1745 if (!table->GetIntAttribute(
1746 ui::AX_ATTR_TABLE_COLUMN_COUNT, &columns) || 1746 ui::AX_ATTR_TABLE_COLUMN_COUNT, &columns) ||
1747 !table->GetIntAttribute( 1747 !table->GetIntAttribute(
1748 ui::AX_ATTR_TABLE_ROW_COUNT, &rows)) { 1748 ui::AX_ATTR_TABLE_ROW_COUNT, &rows)) {
1749 return S_FALSE; 1749 return S_FALSE;
1750 } 1750 }
1751 if (columns <= 0 || rows <= 0 || column < 0 || column >= columns) 1751 if (columns <= 0 || rows <= 0 || column < 0 || column >= columns)
1752 return S_FALSE; 1752 return S_FALSE;
1753 1753
1754 const std::vector<int32>& cell_ids = table->GetIntListAttribute( 1754 const std::vector<int32_t>& cell_ids =
1755 ui::AX_ATTR_CELL_IDS); 1755 table->GetIntListAttribute(ui::AX_ATTR_CELL_IDS);
1756 1756
1757 for (int i = 0; i < rows; ++i) { 1757 for (int i = 0; i < rows; ++i) {
1758 int cell_id = cell_ids[i * columns + column]; 1758 int cell_id = cell_ids[i * columns + column];
1759 BrowserAccessibilityWin* cell = 1759 BrowserAccessibilityWin* cell =
1760 manager()->GetFromID(cell_id)->ToBrowserAccessibilityWin(); 1760 manager()->GetFromID(cell_id)->ToBrowserAccessibilityWin();
1761 if (cell && cell->GetRole() == ui::AX_ROLE_COLUMN_HEADER) 1761 if (cell && cell->GetRole() == ui::AX_ROLE_COLUMN_HEADER)
1762 (*n_column_header_cells)++; 1762 (*n_column_header_cells)++;
1763 } 1763 }
1764 1764
1765 *cell_accessibles = static_cast<IUnknown**>(CoTaskMemAlloc( 1765 *cell_accessibles = static_cast<IUnknown**>(CoTaskMemAlloc(
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
1842 int rows; 1842 int rows;
1843 if (!table->GetIntAttribute( 1843 if (!table->GetIntAttribute(
1844 ui::AX_ATTR_TABLE_COLUMN_COUNT, &columns) || 1844 ui::AX_ATTR_TABLE_COLUMN_COUNT, &columns) ||
1845 !table->GetIntAttribute( 1845 !table->GetIntAttribute(
1846 ui::AX_ATTR_TABLE_ROW_COUNT, &rows)) { 1846 ui::AX_ATTR_TABLE_ROW_COUNT, &rows)) {
1847 return S_FALSE; 1847 return S_FALSE;
1848 } 1848 }
1849 if (columns <= 0 || rows <= 0 || row < 0 || row >= rows) 1849 if (columns <= 0 || rows <= 0 || row < 0 || row >= rows)
1850 return S_FALSE; 1850 return S_FALSE;
1851 1851
1852 const std::vector<int32>& cell_ids = table->GetIntListAttribute( 1852 const std::vector<int32_t>& cell_ids =
1853 ui::AX_ATTR_CELL_IDS); 1853 table->GetIntListAttribute(ui::AX_ATTR_CELL_IDS);
1854 1854
1855 for (int i = 0; i < columns; ++i) { 1855 for (int i = 0; i < columns; ++i) {
1856 int cell_id = cell_ids[row * columns + i]; 1856 int cell_id = cell_ids[row * columns + i];
1857 BrowserAccessibility* cell = manager()->GetFromID(cell_id); 1857 BrowserAccessibility* cell = manager()->GetFromID(cell_id);
1858 if (cell && cell->GetRole() == ui::AX_ROLE_ROW_HEADER) 1858 if (cell && cell->GetRole() == ui::AX_ROLE_ROW_HEADER)
1859 (*n_row_header_cells)++; 1859 (*n_row_header_cells)++;
1860 } 1860 }
1861 1861
1862 *cell_accessibles = static_cast<IUnknown**>(CoTaskMemAlloc( 1862 *cell_accessibles = static_cast<IUnknown**>(CoTaskMemAlloc(
1863 (*n_row_header_cells) * sizeof(cell_accessibles[0]))); 1863 (*n_row_header_cells) * sizeof(cell_accessibles[0])));
(...skipping 532 matching lines...) Expand 10 before | Expand all | Expand 10 after
2396 IAccessibleHyperlink** hyperlink) { 2396 IAccessibleHyperlink** hyperlink) {
2397 if (!instance_active()) 2397 if (!instance_active())
2398 return E_FAIL; 2398 return E_FAIL;
2399 2399
2400 if (!hyperlink || 2400 if (!hyperlink ||
2401 index < 0 || 2401 index < 0 ||
2402 index >= static_cast<long>(hyperlinks().size())) { 2402 index >= static_cast<long>(hyperlinks().size())) {
2403 return E_INVALIDARG; 2403 return E_INVALIDARG;
2404 } 2404 }
2405 2405
2406 int32 id = hyperlinks()[index]; 2406 int32_t id = hyperlinks()[index];
2407 BrowserAccessibilityWin* child = 2407 BrowserAccessibilityWin* child =
2408 manager()->GetFromID(id)->ToBrowserAccessibilityWin(); 2408 manager()->GetFromID(id)->ToBrowserAccessibilityWin();
2409 if (child) { 2409 if (child) {
2410 *hyperlink = static_cast<IAccessibleHyperlink*>(child->NewReference()); 2410 *hyperlink = static_cast<IAccessibleHyperlink*>(child->NewReference());
2411 return S_OK; 2411 return S_OK;
2412 } 2412 }
2413 2413
2414 return E_FAIL; 2414 return E_FAIL;
2415 } 2415 }
2416 2416
2417 STDMETHODIMP BrowserAccessibilityWin::get_hyperlinkIndex( 2417 STDMETHODIMP BrowserAccessibilityWin::get_hyperlinkIndex(
2418 long char_index, 2418 long char_index,
2419 long* hyperlink_index) { 2419 long* hyperlink_index) {
2420 if (!instance_active()) 2420 if (!instance_active())
2421 return E_FAIL; 2421 return E_FAIL;
2422 2422
2423 if (!hyperlink_index) 2423 if (!hyperlink_index)
2424 return E_INVALIDARG; 2424 return E_INVALIDARG;
2425 2425
2426 if (char_index < 0 || 2426 if (char_index < 0 ||
2427 char_index >= static_cast<long>(hypertext().size())) { 2427 char_index >= static_cast<long>(hypertext().size())) {
2428 return E_INVALIDARG; 2428 return E_INVALIDARG;
2429 } 2429 }
2430 2430
2431 std::map<int32, int32>::iterator it = 2431 std::map<int32_t, int32_t>::iterator it =
2432 hyperlink_offset_to_index().find(char_index); 2432 hyperlink_offset_to_index().find(char_index);
2433 if (it == hyperlink_offset_to_index().end()) { 2433 if (it == hyperlink_offset_to_index().end()) {
2434 *hyperlink_index = -1; 2434 *hyperlink_index = -1;
2435 return S_FALSE; 2435 return S_FALSE;
2436 } 2436 }
2437 2437
2438 *hyperlink_index = it->second; 2438 *hyperlink_index = it->second;
2439 return S_OK; 2439 return S_OK;
2440 } 2440 }
2441 2441
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
2493 return S_OK; 2493 return S_OK;
2494 } 2494 }
2495 2495
2496 STDMETHODIMP BrowserAccessibilityWin::get_startIndex(long* index) { 2496 STDMETHODIMP BrowserAccessibilityWin::get_startIndex(long* index) {
2497 if (!instance_active() || !IsHyperlink()) 2497 if (!instance_active() || !IsHyperlink())
2498 return E_FAIL; 2498 return E_FAIL;
2499 2499
2500 if (!index) 2500 if (!index)
2501 return E_INVALIDARG; 2501 return E_INVALIDARG;
2502 2502
2503 int32 hypertext_offset = 0; 2503 int32_t hypertext_offset = 0;
2504 const auto parent = GetParent(); 2504 const auto parent = GetParent();
2505 if (parent) { 2505 if (parent) {
2506 hypertext_offset = 2506 hypertext_offset =
2507 parent->ToBrowserAccessibilityWin()->GetHypertextOffsetFromChild(*this); 2507 parent->ToBrowserAccessibilityWin()->GetHypertextOffsetFromChild(*this);
2508 } 2508 }
2509 *index = static_cast<LONG>(hypertext_offset); 2509 *index = static_cast<LONG>(hypertext_offset);
2510 return S_OK; 2510 return S_OK;
2511 } 2511 }
2512 2512
2513 STDMETHODIMP BrowserAccessibilityWin::get_endIndex(long* index) { 2513 STDMETHODIMP BrowserAccessibilityWin::get_endIndex(long* index) {
(...skipping 691 matching lines...) Expand 10 before | Expand all | Expand 10 after
3205 // 3205 //
3206 3206
3207 // static 3207 // static
3208 HRESULT WINAPI BrowserAccessibilityWin::InternalQueryInterface( 3208 HRESULT WINAPI BrowserAccessibilityWin::InternalQueryInterface(
3209 void* this_ptr, 3209 void* this_ptr,
3210 const _ATL_INTMAP_ENTRY* entries, 3210 const _ATL_INTMAP_ENTRY* entries,
3211 REFIID iid, 3211 REFIID iid,
3212 void** object) { 3212 void** object) {
3213 BrowserAccessibilityWin* accessibility = 3213 BrowserAccessibilityWin* accessibility =
3214 reinterpret_cast<BrowserAccessibilityWin*>(this_ptr); 3214 reinterpret_cast<BrowserAccessibilityWin*>(this_ptr);
3215 int32 ia_role = accessibility->ia_role(); 3215 int32_t ia_role = accessibility->ia_role();
3216 if (iid == IID_IAccessibleImage) { 3216 if (iid == IID_IAccessibleImage) {
3217 if (ia_role != ROLE_SYSTEM_GRAPHIC) { 3217 if (ia_role != ROLE_SYSTEM_GRAPHIC) {
3218 *object = NULL; 3218 *object = NULL;
3219 return E_NOINTERFACE; 3219 return E_NOINTERFACE;
3220 } 3220 }
3221 } else if (iid == IID_IAccessibleTable || iid == IID_IAccessibleTable2) { 3221 } else if (iid == IID_IAccessibleTable || iid == IID_IAccessibleTable2) {
3222 if (ia_role != ROLE_SYSTEM_TABLE) { 3222 if (ia_role != ROLE_SYSTEM_TABLE) {
3223 *object = NULL; 3223 *object = NULL;
3224 return E_NOINTERFACE; 3224 return E_NOINTERFACE;
3225 } 3225 }
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
3305 "container-atomic"); 3305 "container-atomic");
3306 BoolAttributeToIA2(ui::AX_ATTR_CONTAINER_LIVE_BUSY, 3306 BoolAttributeToIA2(ui::AX_ATTR_CONTAINER_LIVE_BUSY,
3307 "container-busy"); 3307 "container-busy");
3308 3308
3309 // Expose table cell index. 3309 // Expose table cell index.
3310 if (IsCellOrTableHeaderRole()) { 3310 if (IsCellOrTableHeaderRole()) {
3311 BrowserAccessibility* table = GetParent(); 3311 BrowserAccessibility* table = GetParent();
3312 while (table && table->GetRole() != ui::AX_ROLE_TABLE) 3312 while (table && table->GetRole() != ui::AX_ROLE_TABLE)
3313 table = table->GetParent(); 3313 table = table->GetParent();
3314 if (table) { 3314 if (table) {
3315 const std::vector<int32>& unique_cell_ids = table->GetIntListAttribute( 3315 const std::vector<int32_t>& unique_cell_ids =
3316 ui::AX_ATTR_UNIQUE_CELL_IDS); 3316 table->GetIntListAttribute(ui::AX_ATTR_UNIQUE_CELL_IDS);
3317 for (size_t i = 0; i < unique_cell_ids.size(); ++i) { 3317 for (size_t i = 0; i < unique_cell_ids.size(); ++i) {
3318 if (unique_cell_ids[i] == GetId()) { 3318 if (unique_cell_ids[i] == GetId()) {
3319 win_attributes_->ia2_attributes.push_back( 3319 win_attributes_->ia2_attributes.push_back(
3320 base::string16(L"table-cell-index:") + base::IntToString16(i)); 3320 base::string16(L"table-cell-index:") + base::IntToString16(i));
3321 } 3321 }
3322 } 3322 }
3323 } 3323 }
3324 } 3324 }
3325 3325
3326 // Expose invalid state for form controls and elements with aria-invalid. 3326 // Expose invalid state for form controls and elements with aria-invalid.
(...skipping 28 matching lines...) Expand all
3355 win_attributes_->ia2_attributes.push_back(L"invalid:true"); 3355 win_attributes_->ia2_attributes.push_back(L"invalid:true");
3356 } 3356 }
3357 } 3357 }
3358 break; 3358 break;
3359 default: 3359 default:
3360 NOTREACHED(); 3360 NOTREACHED();
3361 } 3361 }
3362 } 3362 }
3363 3363
3364 // Expose row or column header sort direction. 3364 // Expose row or column header sort direction.
3365 int32 sort_direction; 3365 int32_t sort_direction;
3366 if ((ia_role() == ROLE_SYSTEM_COLUMNHEADER || 3366 if ((ia_role() == ROLE_SYSTEM_COLUMNHEADER ||
3367 ia_role() == ROLE_SYSTEM_ROWHEADER) && 3367 ia_role() == ROLE_SYSTEM_ROWHEADER) &&
3368 GetIntAttribute(ui::AX_ATTR_SORT_DIRECTION, &sort_direction)) { 3368 GetIntAttribute(ui::AX_ATTR_SORT_DIRECTION, &sort_direction)) {
3369 switch (sort_direction) { 3369 switch (sort_direction) {
3370 case ui::AX_SORT_DIRECTION_UNSORTED: 3370 case ui::AX_SORT_DIRECTION_UNSORTED:
3371 win_attributes_->ia2_attributes.push_back(L"sort:none"); 3371 win_attributes_->ia2_attributes.push_back(L"sort:none");
3372 break; 3372 break;
3373 case ui::AX_SORT_DIRECTION_ASCENDING: 3373 case ui::AX_SORT_DIRECTION_ASCENDING:
3374 win_attributes_->ia2_attributes.push_back(L"sort:ascending"); 3374 win_attributes_->ia2_attributes.push_back(L"sort:ascending");
3375 break; 3375 break;
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
3439 // the character index of each embedded object character to the id of the 3439 // the character index of each embedded object character to the id of the
3440 // child object it points to. 3440 // child object it points to.
3441 for (unsigned int i = 0; i < PlatformChildCount(); ++i) { 3441 for (unsigned int i = 0; i < PlatformChildCount(); ++i) {
3442 BrowserAccessibilityWin* child = 3442 BrowserAccessibilityWin* child =
3443 PlatformGetChild(i)->ToBrowserAccessibilityWin(); 3443 PlatformGetChild(i)->ToBrowserAccessibilityWin();
3444 DCHECK(child); 3444 DCHECK(child);
3445 // Similar to Firefox, we don't expose text-only objects in IA2 hypertext. 3445 // Similar to Firefox, we don't expose text-only objects in IA2 hypertext.
3446 if (child->IsTextOnlyObject()) { 3446 if (child->IsTextOnlyObject()) {
3447 win_attributes_->hypertext += child->name(); 3447 win_attributes_->hypertext += child->name();
3448 } else { 3448 } else {
3449 int32 char_offset = hypertext().size(); 3449 int32_t char_offset = hypertext().size();
3450 int32 child_id = child->GetId(); 3450 int32_t child_id = child->GetId();
3451 int32 index = hyperlinks().size(); 3451 int32_t index = hyperlinks().size();
3452 win_attributes_->hyperlink_offset_to_index[char_offset] = index; 3452 win_attributes_->hyperlink_offset_to_index[char_offset] = index;
3453 win_attributes_->hyperlinks.push_back(child_id); 3453 win_attributes_->hyperlinks.push_back(child_id);
3454 win_attributes_->hypertext += kEmbeddedCharacter; 3454 win_attributes_->hypertext += kEmbeddedCharacter;
3455 } 3455 }
3456 } 3456 }
3457 } 3457 }
3458 3458
3459 void BrowserAccessibilityWin::UpdateStep3FireEvents(bool is_subtree_creation) { 3459 void BrowserAccessibilityWin::UpdateStep3FireEvents(bool is_subtree_creation) {
3460 BrowserAccessibilityManagerWin* manager = 3460 BrowserAccessibilityManagerWin* manager =
3461 this->manager()->ToBrowserAccessibilityManagerWin(); 3461 this->manager()->ToBrowserAccessibilityManagerWin();
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after
3658 const char* ia2_attr) { 3658 const char* ia2_attr) {
3659 int value; 3659 int value;
3660 if (GetIntAttribute(attribute, &value)) { 3660 if (GetIntAttribute(attribute, &value)) {
3661 win_attributes_->ia2_attributes.push_back( 3661 win_attributes_->ia2_attributes.push_back(
3662 base::ASCIIToUTF16(ia2_attr) + L":" + 3662 base::ASCIIToUTF16(ia2_attr) + L":" +
3663 base::IntToString16(value)); 3663 base::IntToString16(value));
3664 } 3664 }
3665 } 3665 }
3666 3666
3667 bool BrowserAccessibilityWin::IsHyperlink() const { 3667 bool BrowserAccessibilityWin::IsHyperlink() const {
3668 int32 hyperlink_index = -1; 3668 int32_t hyperlink_index = -1;
3669 const auto parent = GetParent(); 3669 const auto parent = GetParent();
3670 if (parent) { 3670 if (parent) {
3671 hyperlink_index = 3671 hyperlink_index =
3672 parent->ToBrowserAccessibilityWin()->GetHyperlinkIndexFromChild(*this); 3672 parent->ToBrowserAccessibilityWin()->GetHyperlinkIndexFromChild(*this);
3673 } 3673 }
3674 3674
3675 if (hyperlink_index >= 0) 3675 if (hyperlink_index >= 0)
3676 return true; 3676 return true;
3677 return false; 3677 return false;
3678 } 3678 }
3679 3679
3680 int32 BrowserAccessibilityWin::GetHyperlinkIndexFromChild( 3680 int32_t BrowserAccessibilityWin::GetHyperlinkIndexFromChild(
3681 const BrowserAccessibilityWin& child) const { 3681 const BrowserAccessibilityWin& child) const {
3682 if (hyperlinks().empty()) 3682 if (hyperlinks().empty())
3683 return -1; 3683 return -1;
3684 3684
3685 auto iterator = std::find( 3685 auto iterator = std::find(
3686 hyperlinks().begin(), hyperlinks().end(), child.GetId()); 3686 hyperlinks().begin(), hyperlinks().end(), child.GetId());
3687 if (iterator == hyperlinks().end()) 3687 if (iterator == hyperlinks().end())
3688 return -1; 3688 return -1;
3689 3689
3690 return static_cast<int32>(iterator - hyperlinks().begin()); 3690 return static_cast<int32_t>(iterator - hyperlinks().begin());
3691 } 3691 }
3692 3692
3693 int32 BrowserAccessibilityWin::GetHypertextOffsetFromHyperlinkIndex( 3693 int32_t BrowserAccessibilityWin::GetHypertextOffsetFromHyperlinkIndex(
3694 int32 hyperlink_index) const { 3694 int32_t hyperlink_index) const {
3695 for (auto& offset_index : hyperlink_offset_to_index()) { 3695 for (auto& offset_index : hyperlink_offset_to_index()) {
3696 if (offset_index.second == hyperlink_index) 3696 if (offset_index.second == hyperlink_index)
3697 return offset_index.first; 3697 return offset_index.first;
3698 } 3698 }
3699 3699
3700 return -1; 3700 return -1;
3701 } 3701 }
3702 3702
3703 int32 BrowserAccessibilityWin::GetHypertextOffsetFromChild( 3703 int32_t BrowserAccessibilityWin::GetHypertextOffsetFromChild(
3704 const BrowserAccessibilityWin& child) const { 3704 const BrowserAccessibilityWin& child) const {
3705 DCHECK(child.GetParent() == this); 3705 DCHECK(child.GetParent() == this);
3706 3706
3707 // Handle the case when we are dealing with a direct text-only child. 3707 // Handle the case when we are dealing with a direct text-only child.
3708 // (Note that this object might be a platform leaf, e.g. an ARIA searchbox, 3708 // (Note that this object might be a platform leaf, e.g. an ARIA searchbox,
3709 // and so InternalChild... functions need to be used. Also, direct text-only 3709 // and so InternalChild... functions need to be used. Also, direct text-only
3710 // children should not be present at tree roots and so no cross-tree traversal 3710 // children should not be present at tree roots and so no cross-tree traversal
3711 // is necessary.) 3711 // is necessary.)
3712 if (child.IsTextOnlyObject()) { 3712 if (child.IsTextOnlyObject()) {
3713 int32 hypertextOffset = 0; 3713 int32_t hypertextOffset = 0;
3714 int32 index_in_parent = child.GetIndexInParent(); 3714 int32_t index_in_parent = child.GetIndexInParent();
3715 DCHECK_GE(index_in_parent, 0); 3715 DCHECK_GE(index_in_parent, 0);
3716 DCHECK_LT(index_in_parent, static_cast<int32>(InternalChildCount())); 3716 DCHECK_LT(index_in_parent, static_cast<int32_t>(InternalChildCount()));
3717 for (uint32 i = 0; i < static_cast<uint32>(index_in_parent); ++i) { 3717 for (uint32_t i = 0; i < static_cast<uint32_t>(index_in_parent); ++i) {
3718 const BrowserAccessibilityWin* sibling = 3718 const BrowserAccessibilityWin* sibling =
3719 InternalGetChild(i)->ToBrowserAccessibilityWin(); 3719 InternalGetChild(i)->ToBrowserAccessibilityWin();
3720 DCHECK(sibling); 3720 DCHECK(sibling);
3721 if (sibling->IsTextOnlyObject()) 3721 if (sibling->IsTextOnlyObject())
3722 hypertextOffset += sibling->hypertext().length(); 3722 hypertextOffset += sibling->hypertext().length();
3723 else 3723 else
3724 ++hypertextOffset; 3724 ++hypertextOffset;
3725 } 3725 }
3726 return hypertextOffset; 3726 return hypertextOffset;
3727 } 3727 }
3728 3728
3729 int32 hyperlink_index = GetHyperlinkIndexFromChild(child); 3729 int32_t hyperlink_index = GetHyperlinkIndexFromChild(child);
3730 if (hyperlink_index < 0) 3730 if (hyperlink_index < 0)
3731 return -1; 3731 return -1;
3732 3732
3733 return GetHypertextOffsetFromHyperlinkIndex(hyperlink_index); 3733 return GetHypertextOffsetFromHyperlinkIndex(hyperlink_index);
3734 } 3734 }
3735 3735
3736 int32 BrowserAccessibilityWin::GetHypertextOffsetFromDescendant( 3736 int32_t BrowserAccessibilityWin::GetHypertextOffsetFromDescendant(
3737 const BrowserAccessibilityWin& descendant) const { 3737 const BrowserAccessibilityWin& descendant) const {
3738 auto parent_object = descendant.GetParent()->ToBrowserAccessibilityWin(); 3738 auto parent_object = descendant.GetParent()->ToBrowserAccessibilityWin();
3739 auto current_object = const_cast<BrowserAccessibilityWin*>(&descendant); 3739 auto current_object = const_cast<BrowserAccessibilityWin*>(&descendant);
3740 while (parent_object && parent_object != this) { 3740 while (parent_object && parent_object != this) {
3741 current_object = parent_object; 3741 current_object = parent_object;
3742 parent_object = current_object->GetParent()->ToBrowserAccessibilityWin(); 3742 parent_object = current_object->GetParent()->ToBrowserAccessibilityWin();
3743 } 3743 }
3744 if (!parent_object) 3744 if (!parent_object)
3745 return -1; 3745 return -1;
3746 3746
(...skipping 13 matching lines...) Expand all
3760 // Either 0 or text_length should be returned depending on the direction that 3760 // Either 0 or text_length should be returned depending on the direction that
3761 // one needs to travel to find the endpoint. 3761 // one needs to travel to find the endpoint.
3762 3762
3763 // Case 1. 3763 // Case 1.
3764 // 3764 //
3765 // IsDescendantOf includes the case when endpoint_object == this. 3765 // IsDescendantOf includes the case when endpoint_object == this.
3766 if (IsDescendantOf(&endpoint_object)) 3766 if (IsDescendantOf(&endpoint_object))
3767 return endpoint_offset; 3767 return endpoint_offset;
3768 3768
3769 const BrowserAccessibility* common_parent = this; 3769 const BrowserAccessibility* common_parent = this;
3770 int32 index_in_common_parent = GetIndexInParent(); 3770 int32_t index_in_common_parent = GetIndexInParent();
3771 while (common_parent && !endpoint_object.IsDescendantOf(common_parent)) { 3771 while (common_parent && !endpoint_object.IsDescendantOf(common_parent)) {
3772 index_in_common_parent = common_parent->GetIndexInParent(); 3772 index_in_common_parent = common_parent->GetIndexInParent();
3773 common_parent = common_parent->GetParent(); 3773 common_parent = common_parent->GetParent();
3774 } 3774 }
3775 if (!common_parent) 3775 if (!common_parent)
3776 return -1; 3776 return -1;
3777 3777
3778 DCHECK_GE(index_in_common_parent, 0); 3778 DCHECK_GE(index_in_common_parent, 0);
3779 DCHECK(!(common_parent->IsTextOnlyObject())); 3779 DCHECK(!(common_parent->IsTextOnlyObject()));
3780 3780
3781 // Case 2. 3781 // Case 2.
3782 // 3782 //
3783 // We already checked in case 1 if our endpoint is inside this object. 3783 // We already checked in case 1 if our endpoint is inside this object.
3784 // We can safely assume that it is a descendant or in a completely different 3784 // We can safely assume that it is a descendant or in a completely different
3785 // part of the tree. 3785 // part of the tree.
3786 if (common_parent == this) { 3786 if (common_parent == this) {
3787 int32 hypertext_offset = GetHypertextOffsetFromDescendant(endpoint_object); 3787 int32_t hypertext_offset =
3788 GetHypertextOffsetFromDescendant(endpoint_object);
3788 if (endpoint_object.GetParent() == this && 3789 if (endpoint_object.GetParent() == this &&
3789 endpoint_object.IsTextOnlyObject()) { 3790 endpoint_object.IsTextOnlyObject()) {
3790 hypertext_offset += endpoint_offset; 3791 hypertext_offset += endpoint_offset;
3791 } 3792 }
3792 3793
3793 return hypertext_offset; 3794 return hypertext_offset;
3794 } 3795 }
3795 3796
3796 // Case 3. 3797 // Case 3.
3797 // 3798 //
3798 // We can safely assume that the endpoint is in another part of the tree or 3799 // We can safely assume that the endpoint is in another part of the tree or
3799 // at common parent, and that this object is a descendant of common parent. 3800 // at common parent, and that this object is a descendant of common parent.
3800 int32 endpoint_index_in_common_parent = -1; 3801 int32_t endpoint_index_in_common_parent = -1;
3801 for (uint32 i = 0; i < common_parent->InternalChildCount(); ++i) { 3802 for (uint32_t i = 0; i < common_parent->InternalChildCount(); ++i) {
3802 const BrowserAccessibility* child = common_parent->InternalGetChild(i); 3803 const BrowserAccessibility* child = common_parent->InternalGetChild(i);
3803 DCHECK(child); 3804 DCHECK(child);
3804 if (endpoint_object.IsDescendantOf(child)) { 3805 if (endpoint_object.IsDescendantOf(child)) {
3805 endpoint_index_in_common_parent = child->GetIndexInParent(); 3806 endpoint_index_in_common_parent = child->GetIndexInParent();
3806 break; 3807 break;
3807 } 3808 }
3808 } 3809 }
3809 DCHECK_GE(endpoint_index_in_common_parent, 0); 3810 DCHECK_GE(endpoint_index_in_common_parent, 0);
3810 3811
3811 if (endpoint_index_in_common_parent < index_in_common_parent) 3812 if (endpoint_index_in_common_parent < index_in_common_parent)
3812 return 0; 3813 return 0;
3813 if (endpoint_index_in_common_parent > index_in_common_parent) 3814 if (endpoint_index_in_common_parent > index_in_common_parent)
3814 return hypertext().length(); 3815 return hypertext().length();
3815 3816
3816 NOTREACHED(); 3817 NOTREACHED();
3817 return -1; 3818 return -1;
3818 } 3819 }
3819 3820
3820 int BrowserAccessibilityWin::GetSelectionAnchor() const { 3821 int BrowserAccessibilityWin::GetSelectionAnchor() const {
3821 int32 anchor_id = manager()->GetTreeData().sel_anchor_object_id; 3822 int32_t anchor_id = manager()->GetTreeData().sel_anchor_object_id;
3822 const auto anchor_object = 3823 const auto anchor_object =
3823 manager()->GetFromID(anchor_id)->ToBrowserAccessibilityWin(); 3824 manager()->GetFromID(anchor_id)->ToBrowserAccessibilityWin();
3824 if (!anchor_object) 3825 if (!anchor_object)
3825 return -1; 3826 return -1;
3826 3827
3827 int anchor_offset = manager()->GetTreeData().sel_anchor_offset; 3828 int anchor_offset = manager()->GetTreeData().sel_anchor_offset;
3828 return GetHypertextOffsetFromEndpoint(*anchor_object, anchor_offset); 3829 return GetHypertextOffsetFromEndpoint(*anchor_object, anchor_offset);
3829 } 3830 }
3830 3831
3831 int BrowserAccessibilityWin::GetSelectionFocus() const { 3832 int BrowserAccessibilityWin::GetSelectionFocus() const {
3832 int32 focus_id = manager()->GetTreeData().sel_focus_object_id; 3833 int32_t focus_id = manager()->GetTreeData().sel_focus_object_id;
3833 const auto focus_object = 3834 const auto focus_object =
3834 manager()->GetFromID(focus_id)->ToBrowserAccessibilityWin(); 3835 manager()->GetFromID(focus_id)->ToBrowserAccessibilityWin();
3835 if (!focus_object) 3836 if (!focus_object)
3836 return -1; 3837 return -1;
3837 3838
3838 int focus_offset = manager()->GetTreeData().sel_focus_offset; 3839 int focus_offset = manager()->GetTreeData().sel_focus_offset;
3839 return GetHypertextOffsetFromEndpoint(*focus_object, focus_offset); 3840 return GetHypertextOffsetFromEndpoint(*focus_object, focus_offset);
3840 } 3841 }
3841 3842
3842 void BrowserAccessibilityWin::GetSelectionOffsets( 3843 void BrowserAccessibilityWin::GetSelectionOffsets(
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
3920 // characters directly. 3921 // characters directly.
3921 base::char16 old_ch = old_win_attributes_->hypertext[old_char_index]; 3922 base::char16 old_ch = old_win_attributes_->hypertext[old_char_index];
3922 base::char16 new_ch = win_attributes_->hypertext[new_char_index]; 3923 base::char16 new_ch = win_attributes_->hypertext[new_char_index];
3923 if (old_ch != new_ch) 3924 if (old_ch != new_ch)
3924 return false; 3925 return false;
3925 if (old_ch == new_ch && new_ch != kEmbeddedCharacter) 3926 if (old_ch == new_ch && new_ch != kEmbeddedCharacter)
3926 return true; 3927 return true;
3927 3928
3928 // If it's an embedded character, they're only identical if the child id 3929 // If it's an embedded character, they're only identical if the child id
3929 // the hyperlink points to is the same. 3930 // the hyperlink points to is the same.
3930 std::map<int32, int32>& old_offset_to_index = 3931 std::map<int32_t, int32_t>& old_offset_to_index =
3931 old_win_attributes_->hyperlink_offset_to_index; 3932 old_win_attributes_->hyperlink_offset_to_index;
3932 std::vector<int32>& old_hyperlinks = old_win_attributes_->hyperlinks; 3933 std::vector<int32_t>& old_hyperlinks = old_win_attributes_->hyperlinks;
3933 int32 old_hyperlinks_count = static_cast<int32>(old_hyperlinks.size()); 3934 int32_t old_hyperlinks_count = static_cast<int32_t>(old_hyperlinks.size());
3934 std::map<int32, int32>::iterator iter; 3935 std::map<int32_t, int32_t>::iterator iter;
3935 iter = old_offset_to_index.find(old_char_index); 3936 iter = old_offset_to_index.find(old_char_index);
3936 int old_index = (iter != old_offset_to_index.end()) ? iter->second : -1; 3937 int old_index = (iter != old_offset_to_index.end()) ? iter->second : -1;
3937 int old_child_id = (old_index >= 0 && old_index < old_hyperlinks_count) ? 3938 int old_child_id = (old_index >= 0 && old_index < old_hyperlinks_count) ?
3938 old_hyperlinks[old_index] : -1; 3939 old_hyperlinks[old_index] : -1;
3939 3940
3940 std::map<int32, int32>& new_offset_to_index = 3941 std::map<int32_t, int32_t>& new_offset_to_index =
3941 win_attributes_->hyperlink_offset_to_index; 3942 win_attributes_->hyperlink_offset_to_index;
3942 std::vector<int32>& new_hyperlinks = win_attributes_->hyperlinks; 3943 std::vector<int32_t>& new_hyperlinks = win_attributes_->hyperlinks;
3943 int32 new_hyperlinks_count = static_cast<int32>(new_hyperlinks.size()); 3944 int32_t new_hyperlinks_count = static_cast<int32_t>(new_hyperlinks.size());
3944 iter = new_offset_to_index.find(new_char_index); 3945 iter = new_offset_to_index.find(new_char_index);
3945 int new_index = (iter != new_offset_to_index.end()) ? iter->second : -1; 3946 int new_index = (iter != new_offset_to_index.end()) ? iter->second : -1;
3946 int new_child_id = (new_index >= 0 && new_index < new_hyperlinks_count) ? 3947 int new_child_id = (new_index >= 0 && new_index < new_hyperlinks_count) ?
3947 new_hyperlinks[new_index] : -1; 3948 new_hyperlinks[new_index] : -1;
3948 3949
3949 return old_child_id == new_child_id; 3950 return old_child_id == new_child_id;
3950 } 3951 }
3951 3952
3952 void BrowserAccessibilityWin::ComputeHypertextRemovedAndInserted( 3953 void BrowserAccessibilityWin::ComputeHypertextRemovedAndInserted(
3953 int* start, int* old_len, int* new_len) { 3954 int* start, int* old_len, int* new_len) {
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
4014 LONG BrowserAccessibilityWin::FindBoundary( 4015 LONG BrowserAccessibilityWin::FindBoundary(
4015 const base::string16& text, 4016 const base::string16& text,
4016 IA2TextBoundaryType ia2_boundary, 4017 IA2TextBoundaryType ia2_boundary,
4017 LONG start_offset, 4018 LONG start_offset,
4018 ui::TextBoundaryDirection direction) { 4019 ui::TextBoundaryDirection direction) {
4019 HandleSpecialTextOffset(text, &start_offset); 4020 HandleSpecialTextOffset(text, &start_offset);
4020 if (ia2_boundary == IA2_TEXT_BOUNDARY_WORD && IsSimpleTextControl()) 4021 if (ia2_boundary == IA2_TEXT_BOUNDARY_WORD && IsSimpleTextControl())
4021 return GetWordStartBoundary(static_cast<int>(start_offset), direction); 4022 return GetWordStartBoundary(static_cast<int>(start_offset), direction);
4022 4023
4023 ui::TextBoundaryType boundary = IA2TextBoundaryToTextBoundary(ia2_boundary); 4024 ui::TextBoundaryType boundary = IA2TextBoundaryToTextBoundary(ia2_boundary);
4024 const std::vector<int32>& line_breaks = GetIntListAttribute( 4025 const std::vector<int32_t>& line_breaks =
4025 ui::AX_ATTR_LINE_BREAKS); 4026 GetIntListAttribute(ui::AX_ATTR_LINE_BREAKS);
4026 return ui::FindAccessibleTextBoundary( 4027 return ui::FindAccessibleTextBoundary(
4027 text, line_breaks, boundary, start_offset, direction); 4028 text, line_breaks, boundary, start_offset, direction);
4028 } 4029 }
4029 4030
4030 BrowserAccessibilityWin* BrowserAccessibilityWin::GetFromID(int32 id) { 4031 BrowserAccessibilityWin* BrowserAccessibilityWin::GetFromID(int32_t id) {
4031 return manager()->GetFromID(id)->ToBrowserAccessibilityWin(); 4032 return manager()->GetFromID(id)->ToBrowserAccessibilityWin();
4032 } 4033 }
4033 4034
4034 bool BrowserAccessibilityWin::IsListBoxOptionOrMenuListOption() { 4035 bool BrowserAccessibilityWin::IsListBoxOptionOrMenuListOption() {
4035 if (!GetParent()) 4036 if (!GetParent())
4036 return false; 4037 return false;
4037 4038
4038 int32 role = GetRole(); 4039 int32_t role = GetRole();
4039 int32 parent_role = GetParent()->GetRole(); 4040 int32_t parent_role = GetParent()->GetRole();
4040 4041
4041 if (role == ui::AX_ROLE_LIST_BOX_OPTION && 4042 if (role == ui::AX_ROLE_LIST_BOX_OPTION &&
4042 parent_role == ui::AX_ROLE_LIST_BOX) { 4043 parent_role == ui::AX_ROLE_LIST_BOX) {
4043 return true; 4044 return true;
4044 } 4045 }
4045 4046
4046 if (role == ui::AX_ROLE_MENU_LIST_OPTION && 4047 if (role == ui::AX_ROLE_MENU_LIST_OPTION &&
4047 parent_role == ui::AX_ROLE_MENU_LIST_POPUP) { 4048 parent_role == ui::AX_ROLE_MENU_LIST_POPUP) {
4048 return true; 4049 return true;
4049 } 4050 }
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
4113 win_attributes_->ia2_attributes.push_back(L"text-input-type:" + type); 4114 win_attributes_->ia2_attributes.push_back(L"text-input-type:" + type);
4114 } 4115 }
4115 } 4116 }
4116 4117
4117 void BrowserAccessibilityWin::AddRelations( 4118 void BrowserAccessibilityWin::AddRelations(
4118 ui::AXIntListAttribute src_attr, 4119 ui::AXIntListAttribute src_attr,
4119 const base::string16& iaccessiblerelation_type) { 4120 const base::string16& iaccessiblerelation_type) {
4120 if (!HasIntListAttribute(src_attr)) 4121 if (!HasIntListAttribute(src_attr))
4121 return; 4122 return;
4122 4123
4123 const std::vector<int32>& ids = GetIntListAttribute(src_attr); 4124 const std::vector<int32_t>& ids = GetIntListAttribute(src_attr);
4124 for (size_t i = 0; i < ids.size(); ++i) { 4125 for (size_t i = 0; i < ids.size(); ++i) {
4125 CComObject<BrowserAccessibilityRelation>* relation; 4126 CComObject<BrowserAccessibilityRelation>* relation;
4126 HRESULT hr = CComObject<BrowserAccessibilityRelation>::CreateInstance( 4127 HRESULT hr = CComObject<BrowserAccessibilityRelation>::CreateInstance(
4127 &relation); 4128 &relation);
4128 DCHECK(SUCCEEDED(hr)); 4129 DCHECK(SUCCEEDED(hr));
4129 relation->AddRef(); 4130 relation->AddRef();
4130 relation->Initialize(this, iaccessiblerelation_type); 4131 relation->Initialize(this, iaccessiblerelation_type);
4131 relation->AddTarget(ids[i]); 4132 relation->AddTarget(ids[i]);
4132 relations_.push_back(relation); 4133 relations_.push_back(relation);
4133 } 4134 }
4134 } 4135 }
4135 4136
4136 void BrowserAccessibilityWin::InitRoleAndState() { 4137 void BrowserAccessibilityWin::InitRoleAndState() {
4137 int32 ia_role = 0; 4138 int32_t ia_role = 0;
4138 int32 ia_state = 0; 4139 int32_t ia_state = 0;
4139 base::string16 role_name; 4140 base::string16 role_name;
4140 int32 ia2_role = 0; 4141 int32_t ia2_role = 0;
4141 int32 ia2_state = IA2_STATE_OPAQUE; 4142 int32_t ia2_state = IA2_STATE_OPAQUE;
4142 4143
4143 if (HasState(ui::AX_STATE_BUSY)) 4144 if (HasState(ui::AX_STATE_BUSY))
4144 ia_state |= STATE_SYSTEM_BUSY; 4145 ia_state |= STATE_SYSTEM_BUSY;
4145 if (HasState(ui::AX_STATE_CHECKED)) 4146 if (HasState(ui::AX_STATE_CHECKED))
4146 ia_state |= STATE_SYSTEM_CHECKED; 4147 ia_state |= STATE_SYSTEM_CHECKED;
4147 if (HasState(ui::AX_STATE_COLLAPSED)) 4148 if (HasState(ui::AX_STATE_COLLAPSED))
4148 ia_state |= STATE_SYSTEM_COLLAPSED; 4149 ia_state |= STATE_SYSTEM_COLLAPSED;
4149 if (HasState(ui::AX_STATE_EXPANDED)) 4150 if (HasState(ui::AX_STATE_EXPANDED))
4150 ia_state |= STATE_SYSTEM_EXPANDED; 4151 ia_state |= STATE_SYSTEM_EXPANDED;
4151 if (HasState(ui::AX_STATE_FOCUSABLE)) 4152 if (HasState(ui::AX_STATE_FOCUSABLE))
(...skipping 528 matching lines...) Expand 10 before | Expand all | Expand 10 after
4680 ia2_role = ia_role; 4681 ia2_role = ia_role;
4681 4682
4682 win_attributes_->ia_role = ia_role; 4683 win_attributes_->ia_role = ia_role;
4683 win_attributes_->ia_state = ia_state; 4684 win_attributes_->ia_state = ia_state;
4684 win_attributes_->role_name = role_name; 4685 win_attributes_->role_name = role_name;
4685 win_attributes_->ia2_role = ia2_role; 4686 win_attributes_->ia2_role = ia2_role;
4686 win_attributes_->ia2_state = ia2_state; 4687 win_attributes_->ia2_state = ia2_state;
4687 } 4688 }
4688 4689
4689 } // namespace content 4690 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698