Line data Source code
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_XULFormControlAccessible_H_
7 : #define MOZILLA_A11Y_XULFormControlAccessible_H_
8 :
9 : // NOTE: alphabetically ordered
10 : #include "AccessibleWrap.h"
11 : #include "FormControlAccessible.h"
12 : #include "HyperTextAccessibleWrap.h"
13 : #include "XULSelectControlAccessible.h"
14 :
15 : namespace mozilla {
16 : namespace a11y {
17 :
18 : /**
19 : * Used for XUL progressmeter element.
20 : */
21 : typedef ProgressMeterAccessible<100> XULProgressMeterAccessible;
22 :
23 : /**
24 : * Used for XUL button.
25 : *
26 : * @note Don't inherit from LeafAccessible - it doesn't allow children
27 : * and a button can have a dropmarker child.
28 : */
29 : class XULButtonAccessible : public AccessibleWrap
30 : {
31 : public:
32 : enum { eAction_Click = 0 };
33 : XULButtonAccessible(nsIContent* aContent, DocAccessible* aDoc);
34 :
35 : // nsISupports
36 : NS_DECL_ISUPPORTS_INHERITED
37 :
38 : // Accessible
39 : virtual mozilla::a11y::role NativeRole() override;
40 : virtual uint64_t NativeState() override;
41 :
42 : // ActionAccessible
43 : virtual uint8_t ActionCount() override;
44 : virtual void ActionNameAt(uint8_t aIndex, nsAString& aName) override;
45 : virtual bool DoAction(uint8_t aIndex) override;
46 :
47 : // Widgets
48 : virtual bool IsWidget() const override;
49 : virtual bool IsActiveWidget() const override;
50 : virtual bool AreItemsOperable() const override;
51 : virtual Accessible* ContainerWidget() const override;
52 :
53 : virtual bool IsAcceptableChild(nsIContent* aEl) const override;
54 :
55 : protected:
56 : virtual ~XULButtonAccessible();
57 :
58 : // XULButtonAccessible
59 : bool ContainsMenu() const;
60 : };
61 :
62 :
63 : /**
64 : * Used for XUL checkbox element.
65 : */
66 0 : class XULCheckboxAccessible : public LeafAccessible
67 : {
68 : public:
69 : enum { eAction_Click = 0 };
70 : XULCheckboxAccessible(nsIContent* aContent, DocAccessible* aDoc);
71 :
72 : // Accessible
73 : virtual mozilla::a11y::role NativeRole() override;
74 : virtual uint64_t NativeState() override;
75 :
76 : // ActionAccessible
77 : virtual uint8_t ActionCount() override;
78 : virtual void ActionNameAt(uint8_t aIndex, nsAString& aName) override;
79 : virtual bool DoAction(uint8_t aIndex) override;
80 : };
81 :
82 : /**
83 : * Used for XUL dropmarker element.
84 : */
85 0 : class XULDropmarkerAccessible : public LeafAccessible
86 : {
87 : public:
88 : enum { eAction_Click = 0 };
89 : XULDropmarkerAccessible(nsIContent* aContent, DocAccessible* aDoc);
90 :
91 : // Accessible
92 : virtual mozilla::a11y::role NativeRole() override;
93 : virtual uint64_t NativeState() override;
94 :
95 : // ActionAccessible
96 : virtual uint8_t ActionCount() override;
97 : virtual void ActionNameAt(uint8_t aIndex, nsAString& aName) override;
98 : virtual bool DoAction(uint8_t aIndex) override;
99 :
100 : private:
101 : bool DropmarkerOpen(bool aToggleOpen) const;
102 : };
103 :
104 : /**
105 : * Used for XUL groupbox element.
106 : */
107 0 : class XULGroupboxAccessible final : public AccessibleWrap
108 : {
109 : public:
110 : XULGroupboxAccessible(nsIContent* aContent, DocAccessible* aDoc);
111 :
112 : // Accessible
113 : virtual mozilla::a11y::role NativeRole() override;
114 : virtual Relation RelationByType(RelationType aType) override;
115 :
116 : protected:
117 : // Accessible
118 : virtual ENameValueFlag NativeName(nsString& aName) override;
119 : };
120 :
121 : /**
122 : * Used for XUL radio element (radio button).
123 : */
124 0 : class XULRadioButtonAccessible : public RadioButtonAccessible
125 : {
126 :
127 : public:
128 : XULRadioButtonAccessible(nsIContent* aContent, DocAccessible* aDoc);
129 :
130 : // Accessible
131 : virtual uint64_t NativeState() override;
132 : virtual uint64_t NativeInteractiveState() const override;
133 :
134 : // Widgets
135 : virtual Accessible* ContainerWidget() const override;
136 : };
137 :
138 : /**
139 : * Used for XUL radiogroup element.
140 : */
141 0 : class XULRadioGroupAccessible : public XULSelectControlAccessible
142 : {
143 : public:
144 : XULRadioGroupAccessible(nsIContent* aContent, DocAccessible* aDoc);
145 :
146 : // Accessible
147 : virtual mozilla::a11y::role NativeRole() override;
148 : virtual uint64_t NativeInteractiveState() const override;
149 :
150 : // Widgets
151 : virtual bool IsWidget() const override;
152 : virtual bool IsActiveWidget() const override;
153 : virtual bool AreItemsOperable() const override;
154 : };
155 :
156 : /**
157 : * Used for XUL statusbar element.
158 : */
159 0 : class XULStatusBarAccessible : public AccessibleWrap
160 : {
161 : public:
162 : XULStatusBarAccessible(nsIContent* aContent, DocAccessible* aDoc);
163 :
164 : // Accessible
165 : virtual mozilla::a11y::role NativeRole() override;
166 : };
167 :
168 : /**
169 : * Used for XUL toolbarbutton element.
170 : */
171 0 : class XULToolbarButtonAccessible : public XULButtonAccessible
172 : {
173 : public:
174 : XULToolbarButtonAccessible(nsIContent* aContent, DocAccessible* aDoc);
175 :
176 : // Accessible
177 : virtual void GetPositionAndSizeInternal(int32_t* aPosInSet,
178 : int32_t* aSetSize) override;
179 :
180 : // nsXULToolbarButtonAccessible
181 : static bool IsSeparator(Accessible* aAccessible);
182 : };
183 :
184 : /**
185 : * Used for XUL toolbar element.
186 : */
187 0 : class XULToolbarAccessible : public AccessibleWrap
188 : {
189 : public:
190 : XULToolbarAccessible(nsIContent* aContent, DocAccessible* aDoc);
191 :
192 : // Accessible
193 : virtual mozilla::a11y::role NativeRole() override;
194 :
195 : protected:
196 : // Accessible
197 : virtual ENameValueFlag NativeName(nsString& aName) override;
198 : };
199 :
200 : /**
201 : * Used for XUL toolbarseparator element.
202 : */
203 0 : class XULToolbarSeparatorAccessible : public LeafAccessible
204 : {
205 : public:
206 : XULToolbarSeparatorAccessible(nsIContent* aContent,
207 : DocAccessible* aDoc);
208 :
209 : // Accessible
210 : virtual mozilla::a11y::role NativeRole() override;
211 : virtual uint64_t NativeState() override;
212 : };
213 :
214 : } // namespace a11y
215 : } // namespace mozilla
216 :
217 : #endif
218 :
|