Bug 1842345 - Remove gfx.webrender.enabled pref r=jrmuizel,webcompat-reviewers,twisni...
[gecko.git] / accessible / xpcom / xpcAccessibleTableCell.cpp
blob37da0d48523b4ec2a6850aef8988238b28dc391b
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 "mozilla/a11y/TableAccessible.h"
10 #include "mozilla/a11y/TableCellAccessible.h"
11 #include "nsIAccessibleTable.h"
13 #include "nsComponentManagerUtils.h"
14 #include "nsIMutableArray.h"
15 #include "xpcAccessibleDocument.h"
17 using namespace mozilla;
18 using namespace mozilla::a11y;
20 ////////////////////////////////////////////////////////////////////////////////
21 // nsISupports
23 NS_IMPL_ISUPPORTS_INHERITED(xpcAccessibleTableCell, xpcAccessibleHyperText,
24 nsIAccessibleTableCell)
26 ////////////////////////////////////////////////////////////////////////////////
27 // nsIAccessibleTableCell
29 NS_IMETHODIMP
30 xpcAccessibleTableCell::GetTable(nsIAccessibleTable** aTable) {
31 NS_ENSURE_ARG_POINTER(aTable);
32 *aTable = nullptr;
34 if (!Intl()) return NS_ERROR_FAILURE;
36 TableAccessible* table = Intl()->Table();
37 if (!table) return NS_ERROR_FAILURE;
39 nsCOMPtr<nsIAccessibleTable> xpcTable = do_QueryInterface(
40 static_cast<nsIAccessible*>(ToXPC(table->AsAccessible())));
41 xpcTable.forget(aTable);
42 return NS_OK;
45 NS_IMETHODIMP
46 xpcAccessibleTableCell::GetColumnIndex(int32_t* aColIdx) {
47 NS_ENSURE_ARG_POINTER(aColIdx);
48 *aColIdx = -1;
50 if (!Intl()) return NS_ERROR_FAILURE;
52 *aColIdx = Intl()->ColIdx();
53 return NS_OK;
56 NS_IMETHODIMP
57 xpcAccessibleTableCell::GetRowIndex(int32_t* aRowIdx) {
58 NS_ENSURE_ARG_POINTER(aRowIdx);
59 *aRowIdx = -1;
61 if (!Intl()) return NS_ERROR_FAILURE;
63 *aRowIdx = Intl()->RowIdx();
64 return NS_OK;
67 NS_IMETHODIMP
68 xpcAccessibleTableCell::GetColumnExtent(int32_t* aExtent) {
69 NS_ENSURE_ARG_POINTER(aExtent);
70 *aExtent = -1;
72 if (!Intl()) return NS_ERROR_FAILURE;
74 *aExtent = Intl()->ColExtent();
75 return NS_OK;
78 NS_IMETHODIMP
79 xpcAccessibleTableCell::GetRowExtent(int32_t* aExtent) {
80 NS_ENSURE_ARG_POINTER(aExtent);
81 *aExtent = -1;
83 if (!Intl()) return NS_ERROR_FAILURE;
85 *aExtent = Intl()->RowExtent();
86 return NS_OK;
89 NS_IMETHODIMP
90 xpcAccessibleTableCell::GetColumnHeaderCells(nsIArray** aHeaderCells) {
91 NS_ENSURE_ARG_POINTER(aHeaderCells);
92 *aHeaderCells = nullptr;
94 if (!Intl()) return NS_ERROR_FAILURE;
96 AutoTArray<Accessible*, 10> headerCells;
97 Intl()->ColHeaderCells(&headerCells);
99 nsCOMPtr<nsIMutableArray> cells = do_CreateInstance(NS_ARRAY_CONTRACTID);
100 NS_ENSURE_TRUE(cells, NS_ERROR_FAILURE);
102 for (uint32_t idx = 0; idx < headerCells.Length(); idx++) {
103 cells->AppendElement(static_cast<nsIAccessible*>(ToXPC(headerCells[idx])));
106 NS_ADDREF(*aHeaderCells = cells);
107 return NS_OK;
110 NS_IMETHODIMP
111 xpcAccessibleTableCell::GetRowHeaderCells(nsIArray** aHeaderCells) {
112 NS_ENSURE_ARG_POINTER(aHeaderCells);
113 *aHeaderCells = nullptr;
115 if (!Intl()) return NS_ERROR_FAILURE;
117 AutoTArray<Accessible*, 10> headerCells;
118 Intl()->RowHeaderCells(&headerCells);
120 nsCOMPtr<nsIMutableArray> cells = do_CreateInstance(NS_ARRAY_CONTRACTID);
121 NS_ENSURE_TRUE(cells, NS_ERROR_FAILURE);
123 for (uint32_t idx = 0; idx < headerCells.Length(); idx++) {
124 cells->AppendElement(static_cast<nsIAccessible*>(ToXPC(headerCells[idx])));
127 NS_ADDREF(*aHeaderCells = cells);
128 return NS_OK;
131 NS_IMETHODIMP
132 xpcAccessibleTableCell::IsSelected(bool* aSelected) {
133 NS_ENSURE_ARG_POINTER(aSelected);
134 *aSelected = false;
136 if (!Intl()) return NS_ERROR_FAILURE;
138 *aSelected = Intl()->Selected();
139 return NS_OK;