| 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 b09dc9c3eee29e689ac3732209a95847c6d8462a..af50165474c82cf1ffab35192f45ea823ca88288 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);
|
| }
|
|
|
| //
|
|
|