Bug 1690340 - Part 5: Remove the menu separators from the developer tools menu. r...
[gecko.git] / accessible / xpcom / xpcAccessibleTableCell.cpp
blob9deb2a42130e66f5510d099c0029d55445904d1a
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* vim: set ts=2 et sw=2 tw=80: */
3 /* This Source Code Form is subject to the terms of the Mozilla Public
4 * License, v. 2.0. If a copy of the MPL was not distributed with this file,
5 * You can obtain one at http://mozilla.org/MPL/2.0/. */
7 #include "xpcAccessibleTableCell.h"
9 #include "Accessible.h"
10 #include "nsIAccessibleTable.h"
11 #include "TableAccessible.h"
12 #include "TableCellAccessible.h"
14 #include "nsComponentManagerUtils.h"
15 #include "nsIMutableArray.h"
16 #include "xpcAccessibleDocument.h"
18 using namespace mozilla;
19 using namespace mozilla::a11y;
21 ////////////////////////////////////////////////////////////////////////////////
22 // nsISupports
24 NS_IMPL_ISUPPORTS_INHERITED(xpcAccessibleTableCell, xpcAccessibleHyperText,
25 nsIAccessibleTableCell)
27 ////////////////////////////////////////////////////////////////////////////////
28 // nsIAccessibleTableCell
30 NS_IMETHODIMP
31 xpcAccessibleTableCell::GetTable(nsIAccessibleTable** aTable) {
32 NS_ENSURE_ARG_POINTER(aTable);
33 *aTable = nullptr;
35 if (!Intl()) return NS_ERROR_FAILURE;
37 TableAccessible* table = Intl()->Table();
38 if (!table) return NS_ERROR_FAILURE;
40 nsCOMPtr<nsIAccessibleTable> xpcTable = do_QueryInterface(
41 static_cast<nsIAccessible*>(ToXPC(table->AsAccessible())));
42 xpcTable.forget(aTable);
43 return NS_OK;
46 NS_IMETHODIMP
47 xpcAccessibleTableCell::GetColumnIndex(int32_t* aColIdx) {
48 NS_ENSURE_ARG_POINTER(aColIdx);
49 *aColIdx = -1;
51 if (!Intl()) return NS_ERROR_FAILURE;
53 *aColIdx = Intl()->ColIdx();
54 return NS_OK;
57 NS_IMETHODIMP
58 xpcAccessibleTableCell::GetRowIndex(int32_t* aRowIdx) {
59 NS_ENSURE_ARG_POINTER(aRowIdx);
60 *aRowIdx = -1;
62 if (!Intl()) return NS_ERROR_FAILURE;
64 *aRowIdx = Intl()->RowIdx();
65 return NS_OK;
68 NS_IMETHODIMP
69 xpcAccessibleTableCell::GetColumnExtent(int32_t* aExtent) {
70 NS_ENSURE_ARG_POINTER(aExtent);
71 *aExtent = -1;
73 if (!Intl()) return NS_ERROR_FAILURE;
75 *aExtent = Intl()->ColExtent();
76 return NS_OK;
79 NS_IMETHODIMP
80 xpcAccessibleTableCell::GetRowExtent(int32_t* aExtent) {
81 NS_ENSURE_ARG_POINTER(aExtent);
82 *aExtent = -1;
84 if (!Intl()) return NS_ERROR_FAILURE;
86 *aExtent = Intl()->RowExtent();
87 return NS_OK;
90 NS_IMETHODIMP
91 xpcAccessibleTableCell::GetColumnHeaderCells(nsIArray** aHeaderCells) {
92 NS_ENSURE_ARG_POINTER(aHeaderCells);
93 *aHeaderCells = nullptr;
95 if (!Intl()) return NS_ERROR_FAILURE;
97 AutoTArray<Accessible*, 10> headerCells;
98 Intl()->ColHeaderCells(&headerCells);
100 nsCOMPtr<nsIMutableArray> cells = do_CreateInstance(NS_ARRAY_CONTRACTID);
101 NS_ENSURE_TRUE(cells, NS_ERROR_FAILURE);
103 for (uint32_t idx = 0; idx < headerCells.Length(); idx++) {
104 cells->AppendElement(static_cast<nsIAccessible*>(ToXPC(headerCells[idx])));
107 NS_ADDREF(*aHeaderCells = cells);
108 return NS_OK;
111 NS_IMETHODIMP
112 xpcAccessibleTableCell::GetRowHeaderCells(nsIArray** aHeaderCells) {
113 NS_ENSURE_ARG_POINTER(aHeaderCells);
114 *aHeaderCells = nullptr;
116 if (!Intl()) return NS_ERROR_FAILURE;
118 AutoTArray<Accessible*, 10> headerCells;
119 Intl()->RowHeaderCells(&headerCells);
121 nsCOMPtr<nsIMutableArray> cells = do_CreateInstance(NS_ARRAY_CONTRACTID);
122 NS_ENSURE_TRUE(cells, NS_ERROR_FAILURE);
124 for (uint32_t idx = 0; idx < headerCells.Length(); idx++) {
125 cells->AppendElement(static_cast<nsIAccessible*>(ToXPC(headerCells[idx])));
128 NS_ADDREF(*aHeaderCells = cells);
129 return NS_OK;
132 NS_IMETHODIMP
133 xpcAccessibleTableCell::IsSelected(bool* aSelected) {
134 NS_ENSURE_ARG_POINTER(aSelected);
135 *aSelected = false;
137 if (!Intl()) return NS_ERROR_FAILURE;
139 *aSelected = Intl()->Selected();
140 return NS_OK;