/src/mozilla-central/accessible/generic/ARIAGridAccessible.h
Line | Count | Source (jump to first uncovered line) |
1 | | /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ |
2 | | /* This Source Code Form is subject to the terms of the Mozilla Public |
3 | | * License, v. 2.0. If a copy of the MPL was not distributed with this |
4 | | * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
5 | | |
6 | | #ifndef MOZILLA_A11Y_ARIAGridAccessible_h_ |
7 | | #define MOZILLA_A11Y_ARIAGridAccessible_h_ |
8 | | |
9 | | #include "HyperTextAccessibleWrap.h" |
10 | | #include "TableAccessible.h" |
11 | | #include "TableCellAccessible.h" |
12 | | |
13 | | namespace mozilla { |
14 | | namespace a11y { |
15 | | |
16 | | /** |
17 | | * Accessible for ARIA grid and treegrid. |
18 | | */ |
19 | | class ARIAGridAccessible : public AccessibleWrap, |
20 | | public TableAccessible |
21 | | { |
22 | | public: |
23 | | ARIAGridAccessible(nsIContent* aContent, DocAccessible* aDoc); |
24 | | |
25 | | NS_INLINE_DECL_REFCOUNTING_INHERITED(ARIAGridAccessible, AccessibleWrap) |
26 | | |
27 | | // Accessible |
28 | | virtual a11y::role NativeRole() const override; |
29 | | virtual already_AddRefed<nsIPersistentProperties> NativeAttributes() override; |
30 | 0 | virtual TableAccessible* AsTable() override { return this; } |
31 | | |
32 | | // TableAccessible |
33 | | virtual uint32_t ColCount() const override; |
34 | | virtual uint32_t RowCount() override; |
35 | | virtual Accessible* CellAt(uint32_t aRowIndex, uint32_t aColumnIndex) override; |
36 | | virtual bool IsColSelected(uint32_t aColIdx) override; |
37 | | virtual bool IsRowSelected(uint32_t aRowIdx) override; |
38 | | virtual bool IsCellSelected(uint32_t aRowIdx, uint32_t aColIdx) override; |
39 | | virtual uint32_t SelectedCellCount() override; |
40 | | virtual uint32_t SelectedColCount() override; |
41 | | virtual uint32_t SelectedRowCount() override; |
42 | | virtual void SelectedCells(nsTArray<Accessible*>* aCells) override; |
43 | | virtual void SelectedCellIndices(nsTArray<uint32_t>* aCells) override; |
44 | | virtual void SelectedColIndices(nsTArray<uint32_t>* aCols) override; |
45 | | virtual void SelectedRowIndices(nsTArray<uint32_t>* aRows) override; |
46 | | virtual void SelectCol(uint32_t aColIdx) override; |
47 | | virtual void SelectRow(uint32_t aRowIdx) override; |
48 | | virtual void UnselectCol(uint32_t aColIdx) override; |
49 | | virtual void UnselectRow(uint32_t aRowIdx) override; |
50 | 0 | virtual Accessible* AsAccessible() override { return this; } |
51 | | |
52 | | protected: |
53 | 0 | virtual ~ARIAGridAccessible() {} |
54 | | |
55 | | /** |
56 | | * Return row accessible at the given row index. |
57 | | */ |
58 | | Accessible* GetRowAt(int32_t aRow); |
59 | | |
60 | | /** |
61 | | * Return cell accessible at the given column index in the row. |
62 | | */ |
63 | | Accessible* GetCellInRowAt(Accessible* aRow, int32_t aColumn); |
64 | | |
65 | | /** |
66 | | * Set aria-selected attribute value on DOM node of the given accessible. |
67 | | * |
68 | | * @param aAccessible [in] accessible |
69 | | * @param aIsSelected [in] new value of aria-selected attribute |
70 | | * @param aNotify [in, optional] specifies if DOM should be notified |
71 | | * about attribute change (used internally). |
72 | | */ |
73 | | nsresult SetARIASelected(Accessible* aAccessible, bool aIsSelected, |
74 | | bool aNotify = true); |
75 | | }; |
76 | | |
77 | | |
78 | | /** |
79 | | * Accessible for ARIA row. |
80 | | */ |
81 | | class ARIARowAccessible : public AccessibleWrap |
82 | | { |
83 | | public: |
84 | | ARIARowAccessible(nsIContent* aContent, DocAccessible* aDoc); |
85 | | |
86 | | NS_INLINE_DECL_REFCOUNTING_INHERITED(ARIARowAccessible, AccessibleWrap) |
87 | | |
88 | | // Accessible |
89 | | virtual a11y::role NativeRole() const override; |
90 | | virtual mozilla::a11y::GroupPos GroupPosition() override; |
91 | | |
92 | | protected: |
93 | 0 | virtual ~ARIARowAccessible() {} |
94 | | }; |
95 | | |
96 | | |
97 | | /** |
98 | | * Accessible for ARIA gridcell and rowheader/columnheader. |
99 | | */ |
100 | | class ARIAGridCellAccessible : public HyperTextAccessibleWrap, |
101 | | public TableCellAccessible |
102 | | { |
103 | | public: |
104 | | ARIAGridCellAccessible(nsIContent* aContent, DocAccessible* aDoc); |
105 | | |
106 | | NS_INLINE_DECL_REFCOUNTING_INHERITED(ARIAGridCellAccessible, |
107 | | HyperTextAccessibleWrap) |
108 | | |
109 | | // Accessible |
110 | | virtual a11y::role NativeRole() const override; |
111 | 0 | virtual TableCellAccessible* AsTableCell() override { return this; } |
112 | | virtual void ApplyARIAState(uint64_t* aState) const override; |
113 | | virtual already_AddRefed<nsIPersistentProperties> NativeAttributes() override; |
114 | | virtual mozilla::a11y::GroupPos GroupPosition() override; |
115 | | |
116 | | protected: |
117 | 0 | virtual ~ARIAGridCellAccessible() {} |
118 | | |
119 | | /** |
120 | | * Return a containing row. |
121 | | */ |
122 | | Accessible* Row() const |
123 | 0 | { |
124 | 0 | Accessible* row = Parent(); |
125 | 0 | return row && row->IsTableRow() ? row : nullptr; |
126 | 0 | } |
127 | | |
128 | | /** |
129 | | * Return index of the given row. |
130 | | */ |
131 | | int32_t RowIndexFor(Accessible* aRow) const; |
132 | | |
133 | | // TableCellAccessible |
134 | | virtual TableAccessible* Table() const override; |
135 | | virtual uint32_t ColIdx() const override; |
136 | | virtual uint32_t RowIdx() const override; |
137 | | virtual bool Selected() override; |
138 | | }; |
139 | | |
140 | | } // namespace a11y |
141 | | } // namespace mozilla |
142 | | |
143 | | #endif |