Thu, 22 Jan 2015 13:21:57 +0100
Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6
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/. */
6 #ifndef MOZILLA_A11Y_XULFormControlAccessible_H_
7 #define MOZILLA_A11Y_XULFormControlAccessible_H_
9 // NOTE: alphabetically ordered
10 #include "AccessibleWrap.h"
11 #include "FormControlAccessible.h"
12 #include "HyperTextAccessibleWrap.h"
13 #include "XULSelectControlAccessible.h"
15 namespace mozilla {
16 namespace a11y {
18 /**
19 * Used for XUL progressmeter element.
20 */
21 typedef ProgressMeterAccessible<100> XULProgressMeterAccessible;
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);
35 // nsISupports
36 NS_DECL_ISUPPORTS_INHERITED
38 // nsIAccessible
39 NS_IMETHOD GetActionName(uint8_t aIndex, nsAString& aName);
40 NS_IMETHOD DoAction(uint8_t index);
42 // Accessible
43 virtual mozilla::a11y::role NativeRole();
44 virtual uint64_t NativeState();
46 // ActionAccessible
47 virtual uint8_t ActionCount();
49 // Widgets
50 virtual bool IsWidget() const;
51 virtual bool IsActiveWidget() const;
52 virtual bool AreItemsOperable() const;
53 virtual Accessible* ContainerWidget() const;
55 virtual bool IsAcceptableChild(Accessible* aPossibleChild) const MOZ_OVERRIDE;
57 protected:
58 // XULButtonAccessible
59 bool ContainsMenu();
60 };
63 /**
64 * Used for XUL checkbox element.
65 */
66 class XULCheckboxAccessible : public LeafAccessible
67 {
68 public:
69 enum { eAction_Click = 0 };
70 XULCheckboxAccessible(nsIContent* aContent, DocAccessible* aDoc);
72 // nsIAccessible
73 NS_IMETHOD GetActionName(uint8_t aIndex, nsAString& aName);
74 NS_IMETHOD DoAction(uint8_t index);
76 // Accessible
77 virtual mozilla::a11y::role NativeRole();
78 virtual uint64_t NativeState();
80 // ActionAccessible
81 virtual uint8_t ActionCount();
82 };
84 /**
85 * Used for XUL dropmarker element.
86 */
87 class XULDropmarkerAccessible : public LeafAccessible
88 {
89 public:
90 enum { eAction_Click = 0 };
91 XULDropmarkerAccessible(nsIContent* aContent, DocAccessible* aDoc);
93 // nsIAccessible
94 NS_IMETHOD GetActionName(uint8_t aIndex, nsAString& aName);
95 NS_IMETHOD DoAction(uint8_t index);
97 // Accessible
98 virtual mozilla::a11y::role NativeRole();
99 virtual uint64_t NativeState();
101 // ActionAccessible
102 virtual uint8_t ActionCount();
104 private:
105 bool DropmarkerOpen(bool aToggleOpen);
106 };
108 /**
109 * Used for XUL groupbox element.
110 */
111 class XULGroupboxAccessible : public AccessibleWrap
112 {
113 public:
114 XULGroupboxAccessible(nsIContent* aContent, DocAccessible* aDoc);
116 // Accessible
117 virtual mozilla::a11y::role NativeRole();
118 virtual Relation RelationByType(RelationType aType) MOZ_OVERRIDE;
120 protected:
121 // Accessible
122 virtual ENameValueFlag NativeName(nsString& aName) MOZ_OVERRIDE;
123 };
125 /**
126 * Used for XUL radio element (radio button).
127 */
128 class XULRadioButtonAccessible : public RadioButtonAccessible
129 {
131 public:
132 XULRadioButtonAccessible(nsIContent* aContent, DocAccessible* aDoc);
134 // Accessible
135 virtual uint64_t NativeState();
136 virtual uint64_t NativeInteractiveState() const;
138 // Widgets
139 virtual Accessible* ContainerWidget() const;
140 };
142 /**
143 * Used for XUL radiogroup element.
144 */
145 class XULRadioGroupAccessible : public XULSelectControlAccessible
146 {
147 public:
148 XULRadioGroupAccessible(nsIContent* aContent, DocAccessible* aDoc);
150 // Accessible
151 virtual mozilla::a11y::role NativeRole();
152 virtual uint64_t NativeInteractiveState() const;
154 // Widgets
155 virtual bool IsWidget() const;
156 virtual bool IsActiveWidget() const;
157 virtual bool AreItemsOperable() const;
158 };
160 /**
161 * Used for XUL statusbar element.
162 */
163 class XULStatusBarAccessible : public AccessibleWrap
164 {
165 public:
166 XULStatusBarAccessible(nsIContent* aContent, DocAccessible* aDoc);
168 // Accessible
169 virtual mozilla::a11y::role NativeRole();
170 };
172 /**
173 * Used for XUL toolbarbutton element.
174 */
175 class XULToolbarButtonAccessible : public XULButtonAccessible
176 {
177 public:
178 XULToolbarButtonAccessible(nsIContent* aContent, DocAccessible* aDoc);
180 // Accessible
181 virtual void GetPositionAndSizeInternal(int32_t *aPosInSet,
182 int32_t *aSetSize);
184 // nsXULToolbarButtonAccessible
185 static bool IsSeparator(Accessible* aAccessible);
186 };
188 /**
189 * Used for XUL toolbar element.
190 */
191 class XULToolbarAccessible : public AccessibleWrap
192 {
193 public:
194 XULToolbarAccessible(nsIContent* aContent, DocAccessible* aDoc);
196 // Accessible
197 virtual mozilla::a11y::role NativeRole();
199 protected:
200 // Accessible
201 virtual ENameValueFlag NativeName(nsString& aName) MOZ_OVERRIDE;
202 };
204 /**
205 * Used for XUL toolbarseparator element.
206 */
207 class XULToolbarSeparatorAccessible : public LeafAccessible
208 {
209 public:
210 XULToolbarSeparatorAccessible(nsIContent* aContent,
211 DocAccessible* aDoc);
213 // Accessible
214 virtual mozilla::a11y::role NativeRole();
215 virtual uint64_t NativeState();
216 };
218 } // namespace a11y
219 } // namespace mozilla
221 #endif