Index: content/browser/accessibility/browser_accessibility_com_win.cc |
diff --git a/content/browser/accessibility/browser_accessibility_com_win.cc b/content/browser/accessibility/browser_accessibility_com_win.cc |
index e6f9290cb3f0603cc55c4c7636f5bde73599e186..d9c51781ca8fcede4382f2affb4f0e908f4a3233 100644 |
--- a/content/browser/accessibility/browser_accessibility_com_win.cc |
+++ b/content/browser/accessibility/browser_accessibility_com_win.cc |
@@ -1077,21 +1077,7 @@ STDMETHODIMP BrowserAccessibilityComWin::get_accessibleAt( |
if (!owner()) |
return E_FAIL; |
- if (!accessible) |
- return E_INVALIDARG; |
- |
- AXPlatformNodeBase* cell = |
- GetTableCell(static_cast<int>(row), static_cast<int>(column)); |
- if (cell) { |
- auto* node_win = static_cast<AXPlatformNodeWin*>(cell); |
- node_win->AddRef(); |
- |
- *accessible = static_cast<IAccessible*>(node_win); |
- return S_OK; |
- } |
- |
- *accessible = nullptr; |
- return E_INVALIDARG; |
+ return AXPlatformNodeWin::get_accessibleAt(row, column, accessible); |
} |
STDMETHODIMP BrowserAccessibilityComWin::get_caption(IUnknown** accessible) { |
@@ -1100,12 +1086,7 @@ STDMETHODIMP BrowserAccessibilityComWin::get_caption(IUnknown** accessible) { |
if (!owner()) |
return E_FAIL; |
- if (!accessible) |
- return E_INVALIDARG; |
- |
- // TODO(dmazzoni): implement |
- *accessible = nullptr; |
- return S_FALSE; |
+ return AXPlatformNodeWin::get_caption(accessible); |
} |
STDMETHODIMP BrowserAccessibilityComWin::get_childIndex(long row, |
@@ -1116,17 +1097,7 @@ STDMETHODIMP BrowserAccessibilityComWin::get_childIndex(long row, |
if (!owner()) |
return E_FAIL; |
- if (!cell_index) |
- return E_INVALIDARG; |
- |
- auto* cell = GetTableCell(static_cast<int>(row), static_cast<int>(column)); |
- if (cell) { |
- *cell_index = static_cast<LONG>(cell->GetTableCellIndex()); |
- return S_OK; |
- } |
- |
- *cell_index = 0; |
- return E_INVALIDARG; |
+ return AXPlatformNodeWin::get_childIndex(row, column, cell_index); |
} |
STDMETHODIMP BrowserAccessibilityComWin::get_columnDescription( |
@@ -1137,38 +1108,7 @@ STDMETHODIMP BrowserAccessibilityComWin::get_columnDescription( |
if (!owner()) |
return E_FAIL; |
- if (!description) |
- return E_INVALIDARG; |
- |
- int columns = GetTableColumnCount(); |
- if (column < 0 || column >= columns) |
- return E_INVALIDARG; |
- |
- int rows = GetTableRowCount(); |
- if (rows <= 0) { |
- *description = nullptr; |
- return S_FALSE; |
- } |
- |
- for (int i = 0; i < rows; ++i) { |
- auto* cell = GetTableCell(i, column); |
- if (cell && cell->GetData().role == ui::AX_ROLE_COLUMN_HEADER) { |
- base::string16 cell_name = cell->GetString16Attribute(ui::AX_ATTR_NAME); |
- if (cell_name.size() > 0) { |
- *description = SysAllocString(cell_name.c_str()); |
- return S_OK; |
- } |
- |
- cell_name = cell->GetString16Attribute(ui::AX_ATTR_DESCRIPTION); |
- if (cell_name.size() > 0) { |
- *description = SysAllocString(cell_name.c_str()); |
- return S_OK; |
- } |
- } |
- } |
- |
- *description = nullptr; |
- return S_FALSE; |
+ return AXPlatformNodeWin::get_columnDescription(column, description); |
} |
STDMETHODIMP BrowserAccessibilityComWin::get_columnExtentAt( |
@@ -1180,15 +1120,7 @@ STDMETHODIMP BrowserAccessibilityComWin::get_columnExtentAt( |
if (!owner()) |
return E_FAIL; |
- if (!n_columns_spanned) |
- return E_INVALIDARG; |
- |
- auto* cell = GetTableCell(static_cast<int>(row), static_cast<int>(column)); |
- if (!cell) |
- return E_INVALIDARG; |
- |
- *n_columns_spanned = cell->GetTableColumnSpan(); |
- return S_OK; |
+ return AXPlatformNodeWin::get_columnExtentAt(row, column, n_columns_spanned); |
} |
STDMETHODIMP BrowserAccessibilityComWin::get_columnHeader( |
@@ -1196,8 +1128,12 @@ STDMETHODIMP BrowserAccessibilityComWin::get_columnHeader( |
long* starting_row_index) { |
WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_COLUMN_HEADER); |
AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); |
- // TODO(dmazzoni): implement |
- return E_NOTIMPL; |
+ |
+ if (!owner()) |
+ return E_FAIL; |
+ |
+ return AXPlatformNodeWin::get_columnHeader(accessible_table, |
+ starting_row_index); |
} |
STDMETHODIMP BrowserAccessibilityComWin::get_columnIndex(long cell_index, |
@@ -1207,14 +1143,7 @@ STDMETHODIMP BrowserAccessibilityComWin::get_columnIndex(long cell_index, |
if (!owner()) |
return E_FAIL; |
- if (!column_index) |
- return E_INVALIDARG; |
- |
- auto* cell = GetTableCell(cell_index); |
- if (!cell) |
- return E_INVALIDARG; |
- *column_index = cell->GetTableColumn(); |
- return S_OK; |
+ return AXPlatformNodeWin::get_columnIndex(cell_index, column_index); |
} |
STDMETHODIMP BrowserAccessibilityComWin::get_nColumns(long* column_count) { |
@@ -1223,11 +1152,7 @@ STDMETHODIMP BrowserAccessibilityComWin::get_nColumns(long* column_count) { |
if (!owner()) |
return E_FAIL; |
- if (!column_count) |
- return E_INVALIDARG; |
- |
- *column_count = GetTableColumnCount(); |
- return S_OK; |
+ return AXPlatformNodeWin::get_nColumns(column_count); |
} |
STDMETHODIMP BrowserAccessibilityComWin::get_nRows(long* row_count) { |
@@ -1236,11 +1161,7 @@ STDMETHODIMP BrowserAccessibilityComWin::get_nRows(long* row_count) { |
if (!owner()) |
return E_FAIL; |
- if (!row_count) |
- return E_INVALIDARG; |
- |
- *row_count = GetTableRowCount(); |
- return S_OK; |
+ return AXPlatformNodeWin::get_nRows(row_count); |
} |
STDMETHODIMP BrowserAccessibilityComWin::get_nSelectedChildren( |
@@ -1250,12 +1171,7 @@ STDMETHODIMP BrowserAccessibilityComWin::get_nSelectedChildren( |
if (!owner()) |
return E_FAIL; |
- if (!cell_count) |
- return E_INVALIDARG; |
- |
- // TODO(dmazzoni): add support for selected cells/rows/columns in tables. |
- *cell_count = 0; |
- return S_FALSE; |
+ return AXPlatformNodeWin::get_nSelectedChildren(cell_count); |
} |
STDMETHODIMP BrowserAccessibilityComWin::get_nSelectedColumns( |
@@ -1265,11 +1181,7 @@ STDMETHODIMP BrowserAccessibilityComWin::get_nSelectedColumns( |
if (!owner()) |
return E_FAIL; |
- if (!column_count) |
- return E_INVALIDARG; |
- |
- *column_count = 0; |
- return S_FALSE; |
+ return AXPlatformNodeWin::get_nSelectedColumns(column_count); |
} |
STDMETHODIMP BrowserAccessibilityComWin::get_nSelectedRows(long* row_count) { |
@@ -1278,11 +1190,7 @@ STDMETHODIMP BrowserAccessibilityComWin::get_nSelectedRows(long* row_count) { |
if (!owner()) |
return E_FAIL; |
- if (!row_count) |
- return E_INVALIDARG; |
- |
- *row_count = 0; |
- return S_FALSE; |
+ return AXPlatformNodeWin::get_nSelectedRows(row_count); |
} |
STDMETHODIMP BrowserAccessibilityComWin::get_rowDescription(long row, |
@@ -1292,36 +1200,7 @@ STDMETHODIMP BrowserAccessibilityComWin::get_rowDescription(long row, |
if (!owner()) |
return E_FAIL; |
- if (!description) |
- return E_INVALIDARG; |
- |
- if (row < 0 || row >= GetTableRowCount()) |
- return E_INVALIDARG; |
- |
- int columns = GetTableColumnCount(); |
- if (columns <= 0) { |
- *description = nullptr; |
- return S_FALSE; |
- } |
- |
- for (int i = 0; i < columns; ++i) { |
- auto* cell = GetTableCell(row, i); |
- if (cell && cell->GetData().role == ui::AX_ROLE_ROW_HEADER) { |
- base::string16 cell_name = cell->GetString16Attribute(ui::AX_ATTR_NAME); |
- if (cell_name.size() > 0) { |
- *description = SysAllocString(cell_name.c_str()); |
- return S_OK; |
- } |
- cell_name = cell->GetString16Attribute(ui::AX_ATTR_DESCRIPTION); |
- if (cell_name.size() > 0) { |
- *description = SysAllocString(cell_name.c_str()); |
- return S_OK; |
- } |
- } |
- } |
- |
- *description = nullptr; |
- return S_FALSE; |
+ return AXPlatformNodeWin::get_rowDescription(row, description); |
} |
STDMETHODIMP BrowserAccessibilityComWin::get_rowExtentAt(long row, |
@@ -1332,15 +1211,7 @@ STDMETHODIMP BrowserAccessibilityComWin::get_rowExtentAt(long row, |
if (!owner()) |
return E_FAIL; |
- if (!n_rows_spanned) |
- return E_INVALIDARG; |
- |
- auto* cell = GetTableCell(row, column); |
- if (!cell) |
- return E_INVALIDARG; |
- |
- *n_rows_spanned = GetTableRowSpan(); |
- return S_OK; |
+ return AXPlatformNodeWin::get_rowExtentAt(row, column, n_rows_spanned); |
} |
STDMETHODIMP BrowserAccessibilityComWin::get_rowHeader( |
@@ -1348,8 +1219,11 @@ STDMETHODIMP BrowserAccessibilityComWin::get_rowHeader( |
long* starting_column_index) { |
WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_ROW_HEADER); |
AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); |
- // TODO(dmazzoni): implement |
- return E_NOTIMPL; |
+ if (!owner()) |
+ return E_FAIL; |
+ |
+ return AXPlatformNodeWin::get_rowHeader(accessible_table, |
+ starting_column_index); |
} |
STDMETHODIMP BrowserAccessibilityComWin::get_rowIndex(long cell_index, |
@@ -1359,15 +1233,7 @@ STDMETHODIMP BrowserAccessibilityComWin::get_rowIndex(long cell_index, |
if (!owner()) |
return E_FAIL; |
- if (!row_index) |
- return E_INVALIDARG; |
- |
- auto* cell = GetTableCell(cell_index); |
- if (!cell) |
- return E_INVALIDARG; |
- |
- *row_index = cell->GetTableRow(); |
- return S_OK; |
+ return AXPlatformNodeWin::get_rowIndex(cell_index, row_index); |
} |
STDMETHODIMP BrowserAccessibilityComWin::get_selectedChildren( |
@@ -1379,12 +1245,8 @@ STDMETHODIMP BrowserAccessibilityComWin::get_selectedChildren( |
if (!owner()) |
return E_FAIL; |
- if (!children || !n_children) |
- return E_INVALIDARG; |
- |
- // TODO(dmazzoni): Implement this. |
- *n_children = 0; |
- return S_FALSE; |
+ return AXPlatformNodeWin::get_selectedChildren(max_children, children, |
+ n_children); |
} |
STDMETHODIMP BrowserAccessibilityComWin::get_selectedColumns(long max_columns, |
@@ -1395,12 +1257,8 @@ STDMETHODIMP BrowserAccessibilityComWin::get_selectedColumns(long max_columns, |
if (!owner()) |
return E_FAIL; |
- if (!columns || !n_columns) |
- return E_INVALIDARG; |
- |
- // TODO(dmazzoni): Implement this. |
- *n_columns = 0; |
- return S_FALSE; |
+ return AXPlatformNodeWin::get_selectedColumns(max_columns, columns, |
+ n_columns); |
} |
STDMETHODIMP BrowserAccessibilityComWin::get_selectedRows(long max_rows, |
@@ -1411,12 +1269,7 @@ STDMETHODIMP BrowserAccessibilityComWin::get_selectedRows(long max_rows, |
if (!owner()) |
return E_FAIL; |
- if (!rows || !n_rows) |
- return E_INVALIDARG; |
- |
- // TODO(dmazzoni): Implement this. |
- *n_rows = 0; |
- return S_FALSE; |
+ return AXPlatformNodeWin::get_selectedRows(max_rows, rows, n_rows); |
} |
STDMETHODIMP BrowserAccessibilityComWin::get_summary(IUnknown** accessible) { |
@@ -1425,12 +1278,7 @@ STDMETHODIMP BrowserAccessibilityComWin::get_summary(IUnknown** accessible) { |
if (!owner()) |
return E_FAIL; |
- if (!accessible) |
- return E_INVALIDARG; |
- |
- // TODO(dmazzoni): implement |
- *accessible = nullptr; |
- return S_FALSE; |
+ return AXPlatformNodeWin::get_summary(accessible); |
} |
STDMETHODIMP BrowserAccessibilityComWin::get_isColumnSelected( |
@@ -1441,12 +1289,7 @@ STDMETHODIMP BrowserAccessibilityComWin::get_isColumnSelected( |
if (!owner()) |
return E_FAIL; |
- if (!is_selected) |
- return E_INVALIDARG; |
- |
- // TODO(dmazzoni): Implement this. |
- *is_selected = false; |
- return S_OK; |
+ return AXPlatformNodeWin::get_isColumnSelected(column, is_selected); |
} |
STDMETHODIMP BrowserAccessibilityComWin::get_isRowSelected( |
@@ -1457,12 +1300,7 @@ STDMETHODIMP BrowserAccessibilityComWin::get_isRowSelected( |
if (!owner()) |
return E_FAIL; |
- if (!is_selected) |
- return E_INVALIDARG; |
- |
- // TODO(dmazzoni): Implement this. |
- *is_selected = false; |
- return S_OK; |
+ return AXPlatformNodeWin::get_isRowSelected(row, is_selected); |
} |
STDMETHODIMP BrowserAccessibilityComWin::get_isSelected(long row, |
@@ -1473,12 +1311,7 @@ STDMETHODIMP BrowserAccessibilityComWin::get_isSelected(long row, |
if (!owner()) |
return E_FAIL; |
- if (!is_selected) |
- return E_INVALIDARG; |
- |
- // TODO(dmazzoni): Implement this. |
- *is_selected = false; |
- return S_OK; |
+ return AXPlatformNodeWin::get_isSelected(row, column, is_selected); |
} |
STDMETHODIMP BrowserAccessibilityComWin::get_rowColumnExtentsAtIndex( |
@@ -1493,49 +1326,52 @@ STDMETHODIMP BrowserAccessibilityComWin::get_rowColumnExtentsAtIndex( |
if (!owner()) |
return E_FAIL; |
- if (!row || !column || !row_extents || !column_extents || !is_selected) |
- return E_INVALIDARG; |
- |
- auto* cell = GetTableCell(index); |
- if (!cell) |
- return E_INVALIDARG; |
- |
- *row = cell->GetTableRow(); |
- *column = cell->GetTableColumn(); |
- *row_extents = GetTableRowSpan(); |
- *column_extents = GetTableColumnSpan(); |
- *is_selected = false; // Not supported. |
- |
- return S_OK; |
+ return AXPlatformNodeWin::get_rowColumnExtentsAtIndex( |
+ index, row, column, row_extents, column_extents, is_selected); |
} |
STDMETHODIMP BrowserAccessibilityComWin::selectRow(long row) { |
WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_SELECT_ROW); |
AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); |
- return E_NOTIMPL; |
+ if (!owner()) |
+ return E_FAIL; |
+ |
+ return AXPlatformNodeWin::selectRow(row); |
} |
STDMETHODIMP BrowserAccessibilityComWin::selectColumn(long column) { |
WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_SELECT_COLUMN); |
AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); |
- return E_NOTIMPL; |
+ if (!owner()) |
+ return E_FAIL; |
+ |
+ return AXPlatformNodeWin::selectColumn(column); |
} |
STDMETHODIMP BrowserAccessibilityComWin::unselectRow(long row) { |
WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_UNSELECT_ROW); |
AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); |
- return E_NOTIMPL; |
+ if (!owner()) |
+ return E_FAIL; |
+ |
+ return AXPlatformNodeWin::unselectRow(row); |
} |
STDMETHODIMP BrowserAccessibilityComWin::unselectColumn(long column) { |
WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_UNSELECT_COLUMN); |
AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); |
- return E_NOTIMPL; |
+ if (!owner()) |
+ return E_FAIL; |
+ |
+ return AXPlatformNodeWin::unselectColumn(column); |
} |
STDMETHODIMP |
BrowserAccessibilityComWin::get_modelChange(IA2TableModelChange* model_change) { |
- return E_NOTIMPL; |
+ if (!owner()) |
+ return E_FAIL; |
+ |
+ return AXPlatformNodeWin::get_modelChange(model_change); |
} |
// |
@@ -1550,26 +1386,16 @@ STDMETHODIMP BrowserAccessibilityComWin::get_cellAt(long row, |
if (!owner()) |
return E_FAIL; |
- if (!cell) |
- return E_INVALIDARG; |
- |
- AXPlatformNodeBase* table_cell = |
- GetTableCell(static_cast<int>(row), static_cast<int>(column)); |
- if (table_cell) { |
- auto* node_win = static_cast<AXPlatformNodeWin*>(table_cell); |
- node_win->AddRef(); |
- *cell = static_cast<IAccessible*>(node_win); |
- return S_OK; |
- } |
- |
- *cell = nullptr; |
- return E_INVALIDARG; |
+ return AXPlatformNodeWin::get_cellAt(row, column, cell); |
} |
STDMETHODIMP BrowserAccessibilityComWin::get_nSelectedCells(long* cell_count) { |
WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_N_SELECTED_CELLS); |
AddAccessibilityModeFlags(kScreenReaderAndHTMLAccessibilityModes); |
- return get_nSelectedChildren(cell_count); |
+ if (!owner()) |
+ return E_FAIL; |
+ |
+ return AXPlatformNodeWin::get_nSelectedCells(cell_count); |
} |
STDMETHODIMP BrowserAccessibilityComWin::get_selectedCells( |
@@ -1580,12 +1406,7 @@ STDMETHODIMP BrowserAccessibilityComWin::get_selectedCells( |
if (!owner()) |
return E_FAIL; |
- if (!cells || !n_selected_cells) |
- return E_INVALIDARG; |
- |
- // TODO(dmazzoni): Implement this. |
- *n_selected_cells = 0; |
- return S_OK; |
+ return AXPlatformNodeWin::get_selectedCells(cells, n_selected_cells); |
} |
STDMETHODIMP BrowserAccessibilityComWin::get_selectedColumns(long** columns, |
@@ -1595,12 +1416,7 @@ STDMETHODIMP BrowserAccessibilityComWin::get_selectedColumns(long** columns, |
if (!owner()) |
return E_FAIL; |
- if (!columns || !n_columns) |
- return E_INVALIDARG; |
- |
- // TODO(dmazzoni): Implement this. |
- *n_columns = 0; |
- return S_OK; |
+ return AXPlatformNodeWin::get_selectedColumns(columns, n_columns); |
} |
STDMETHODIMP BrowserAccessibilityComWin::get_selectedRows(long** rows, |
@@ -1610,12 +1426,7 @@ STDMETHODIMP BrowserAccessibilityComWin::get_selectedRows(long** rows, |
if (!owner()) |
return E_FAIL; |
- if (!rows || !n_rows) |
- return E_INVALIDARG; |
- |
- // TODO(dmazzoni): Implement this. |
- *n_rows = 0; |
- return S_OK; |
+ return AXPlatformNodeWin::get_selectedRows(rows, n_rows); |
} |
// |
@@ -1629,11 +1440,7 @@ STDMETHODIMP BrowserAccessibilityComWin::get_columnExtent( |
if (!owner()) |
return E_FAIL; |
- if (!n_columns_spanned) |
- return E_INVALIDARG; |
- |
- *n_columns_spanned = GetTableColumnSpan(); |
- return S_OK; |
+ return AXPlatformNodeWin::get_columnExtent(n_columns_spanned); |
} |
STDMETHODIMP BrowserAccessibilityComWin::get_columnHeaderCells( |
@@ -1644,43 +1451,8 @@ STDMETHODIMP BrowserAccessibilityComWin::get_columnHeaderCells( |
if (!owner()) |
return E_FAIL; |
- if (!cell_accessibles || !n_column_header_cells) |
- return E_INVALIDARG; |
- |
- *n_column_header_cells = 0; |
- auto* table = GetTable(); |
- if (!table) { |
- NOTREACHED(); |
- return S_FALSE; |
- } |
- |
- int column = GetTableColumn(); |
- int columns = GetTableColumnCount(); |
- int rows = GetTableRowCount(); |
- if (columns <= 0 || rows <= 0 || column < 0 || column >= columns) |
- return S_FALSE; |
- |
- for (int i = 0; i < rows; ++i) { |
- auto* cell = GetTableCell(i, column); |
- if (cell && cell->GetData().role == ui::AX_ROLE_COLUMN_HEADER) |
- (*n_column_header_cells)++; |
- } |
- |
- *cell_accessibles = static_cast<IUnknown**>( |
- CoTaskMemAlloc((*n_column_header_cells) * sizeof(cell_accessibles[0]))); |
- int index = 0; |
- for (int i = 0; i < rows; ++i) { |
- AXPlatformNodeBase* cell = GetTableCell(i, column); |
- if (cell && cell->GetData().role == ui::AX_ROLE_COLUMN_HEADER) { |
- auto* node_win = static_cast<AXPlatformNodeWin*>(cell); |
- node_win->AddRef(); |
- |
- (*cell_accessibles)[index] = static_cast<IAccessible*>(node_win); |
- ++index; |
- } |
- } |
- |
- return S_OK; |
+ return AXPlatformNodeWin::get_columnHeaderCells(cell_accessibles, |
+ n_column_header_cells); |
} |
STDMETHODIMP BrowserAccessibilityComWin::get_columnIndex(long* column_index) { |
@@ -1689,11 +1461,7 @@ STDMETHODIMP BrowserAccessibilityComWin::get_columnIndex(long* column_index) { |
if (!owner()) |
return E_FAIL; |
- if (!column_index) |
- return E_INVALIDARG; |
- |
- *column_index = GetTableColumn(); |
- return S_OK; |
+ return AXPlatformNodeWin::get_columnIndex(column_index); |
} |
STDMETHODIMP BrowserAccessibilityComWin::get_rowExtent(long* n_rows_spanned) { |
@@ -1702,11 +1470,7 @@ STDMETHODIMP BrowserAccessibilityComWin::get_rowExtent(long* n_rows_spanned) { |
if (!owner()) |
return E_FAIL; |
- if (!n_rows_spanned) |
- return E_INVALIDARG; |
- |
- *n_rows_spanned = GetTableRowSpan(); |
- return S_OK; |
+ return AXPlatformNodeWin::get_rowExtent(n_rows_spanned); |
} |
STDMETHODIMP BrowserAccessibilityComWin::get_rowHeaderCells( |
@@ -1717,43 +1481,8 @@ STDMETHODIMP BrowserAccessibilityComWin::get_rowHeaderCells( |
if (!owner()) |
return E_FAIL; |
- if (!cell_accessibles || !n_row_header_cells) |
- return E_INVALIDARG; |
- |
- *n_row_header_cells = 0; |
- auto* table = GetTable(); |
- if (!table) { |
- NOTREACHED(); |
- return S_FALSE; |
- } |
- |
- int row = GetTableRow(); |
- int columns = GetTableColumnCount(); |
- int rows = GetTableRowCount(); |
- if (columns <= 0 || rows <= 0 || row < 0 || row >= rows) |
- return S_FALSE; |
- |
- for (int i = 0; i < columns; ++i) { |
- auto* cell = GetTableCell(row, i); |
- if (cell && cell->GetData().role == ui::AX_ROLE_ROW_HEADER) |
- (*n_row_header_cells)++; |
- } |
- |
- *cell_accessibles = static_cast<IUnknown**>( |
- CoTaskMemAlloc((*n_row_header_cells) * sizeof(cell_accessibles[0]))); |
- int index = 0; |
- for (int i = 0; i < columns; ++i) { |
- AXPlatformNodeBase* cell = GetTableCell(row, i); |
- if (cell && cell->GetData().role == ui::AX_ROLE_ROW_HEADER) { |
- auto* node_win = static_cast<AXPlatformNodeWin*>(cell); |
- node_win->AddRef(); |
- |
- (*cell_accessibles)[index] = static_cast<IAccessible*>(node_win); |
- ++index; |
- } |
- } |
- |
- return S_OK; |
+ return AXPlatformNodeWin::get_rowHeaderCells(cell_accessibles, |
+ n_row_header_cells); |
} |
STDMETHODIMP BrowserAccessibilityComWin::get_rowIndex(long* row_index) { |
@@ -1762,11 +1491,7 @@ STDMETHODIMP BrowserAccessibilityComWin::get_rowIndex(long* row_index) { |
if (!owner()) |
return E_FAIL; |
- if (!row_index) |
- return E_INVALIDARG; |
- |
- *row_index = GetTableRow(); |
- return S_OK; |
+ return AXPlatformNodeWin::get_rowIndex(row_index); |
} |
STDMETHODIMP BrowserAccessibilityComWin::get_isSelected(boolean* is_selected) { |
@@ -1775,11 +1500,7 @@ STDMETHODIMP BrowserAccessibilityComWin::get_isSelected(boolean* is_selected) { |
if (!owner()) |
return E_FAIL; |
- if (!is_selected) |
- return E_INVALIDARG; |
- |
- *is_selected = false; |
- return S_OK; |
+ return AXPlatformNodeWin::get_isSelected(is_selected); |
} |
STDMETHODIMP BrowserAccessibilityComWin::get_rowColumnExtents( |
@@ -1793,18 +1514,8 @@ STDMETHODIMP BrowserAccessibilityComWin::get_rowColumnExtents( |
if (!owner()) |
return E_FAIL; |
- if (!row_index || !column_index || !row_extents || !column_extents || |
- !is_selected) { |
- return E_INVALIDARG; |
- } |
- |
- *row_index = GetTableRow(); |
- *column_index = GetTableColumn(); |
- *row_extents = GetTableRowSpan(); |
- *column_extents = GetTableColumnSpan(); |
- *is_selected = false; // Not supported. |
- |
- return S_OK; |
+ return AXPlatformNodeWin::get_rowColumnExtents( |
+ row_index, column_index, row_extents, column_extents, is_selected); |
} |
STDMETHODIMP BrowserAccessibilityComWin::get_table(IUnknown** table) { |
@@ -1813,22 +1524,7 @@ STDMETHODIMP BrowserAccessibilityComWin::get_table(IUnknown** table) { |
if (!owner()) |
return E_FAIL; |
- if (!table) |
- return E_INVALIDARG; |
- |
- auto* find_table = GetTable(); |
- if (!find_table) { |
- *table = nullptr; |
- return S_FALSE; |
- } |
- |
- // The IAccessibleTable interface is still on the BrowserAccessibilityComWin |
- // class. |
- auto* node_win = static_cast<BrowserAccessibilityComWin*>(find_table); |
- node_win->AddRef(); |
- |
- *table = static_cast<IAccessibleTable*>(node_win); |
- return S_OK; |
+ return AXPlatformNodeWin::get_table(table); |
} |
// |