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"
19 * Used for XUL progressmeter element.
21 typedef ProgressMeterAccessible
<100> XULProgressMeterAccessible
;
24 * Used for XUL button.
26 * @note Don't inherit from LeafAccessible - it doesn't allow children
27 * and a button can have a dropmarker child.
29 class XULButtonAccessible
: public AccessibleWrap
32 enum { eAction_Click
= 0 };
33 XULButtonAccessible(nsIContent
* aContent
, DocAccessible
* aDoc
);
36 NS_DECL_ISUPPORTS_INHERITED
39 NS_IMETHOD
GetActionName(uint8_t aIndex
, nsAString
& aName
);
40 NS_IMETHOD
DoAction(uint8_t index
);
43 virtual mozilla::a11y::role
NativeRole();
44 virtual uint64_t NativeState();
47 virtual uint8_t ActionCount();
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
;
58 virtual ~XULButtonAccessible();
60 // XULButtonAccessible
66 * Used for XUL checkbox element.
68 class XULCheckboxAccessible
: public LeafAccessible
71 enum { eAction_Click
= 0 };
72 XULCheckboxAccessible(nsIContent
* aContent
, DocAccessible
* aDoc
);
75 NS_IMETHOD
GetActionName(uint8_t aIndex
, nsAString
& aName
);
76 NS_IMETHOD
DoAction(uint8_t index
);
79 virtual mozilla::a11y::role
NativeRole();
80 virtual uint64_t NativeState();
83 virtual uint8_t ActionCount();
87 * Used for XUL dropmarker element.
89 class XULDropmarkerAccessible
: public LeafAccessible
92 enum { eAction_Click
= 0 };
93 XULDropmarkerAccessible(nsIContent
* aContent
, DocAccessible
* aDoc
);
96 NS_IMETHOD
GetActionName(uint8_t aIndex
, nsAString
& aName
);
97 NS_IMETHOD
DoAction(uint8_t index
);
100 virtual mozilla::a11y::role
NativeRole();
101 virtual uint64_t NativeState();
104 virtual uint8_t ActionCount();
107 bool DropmarkerOpen(bool aToggleOpen
);
111 * Used for XUL groupbox element.
113 class XULGroupboxAccessible MOZ_FINAL
: public AccessibleWrap
116 XULGroupboxAccessible(nsIContent
* aContent
, DocAccessible
* aDoc
);
119 virtual mozilla::a11y::role
NativeRole();
120 virtual Relation
RelationByType(RelationType aType
) MOZ_OVERRIDE
;
124 virtual ENameValueFlag
NativeName(nsString
& aName
) MOZ_OVERRIDE
;
128 * Used for XUL radio element (radio button).
130 class XULRadioButtonAccessible
: public RadioButtonAccessible
134 XULRadioButtonAccessible(nsIContent
* aContent
, DocAccessible
* aDoc
);
137 virtual uint64_t NativeState();
138 virtual uint64_t NativeInteractiveState() const;
141 virtual Accessible
* ContainerWidget() const;
145 * Used for XUL radiogroup element.
147 class XULRadioGroupAccessible
: public XULSelectControlAccessible
150 XULRadioGroupAccessible(nsIContent
* aContent
, DocAccessible
* aDoc
);
153 virtual mozilla::a11y::role
NativeRole();
154 virtual uint64_t NativeInteractiveState() const;
157 virtual bool IsWidget() const;
158 virtual bool IsActiveWidget() const;
159 virtual bool AreItemsOperable() const;
163 * Used for XUL statusbar element.
165 class XULStatusBarAccessible
: public AccessibleWrap
168 XULStatusBarAccessible(nsIContent
* aContent
, DocAccessible
* aDoc
);
171 virtual mozilla::a11y::role
NativeRole();
175 * Used for XUL toolbarbutton element.
177 class XULToolbarButtonAccessible
: public XULButtonAccessible
180 XULToolbarButtonAccessible(nsIContent
* aContent
, DocAccessible
* aDoc
);
183 virtual void GetPositionAndSizeInternal(int32_t *aPosInSet
,
186 // nsXULToolbarButtonAccessible
187 static bool IsSeparator(Accessible
* aAccessible
);
191 * Used for XUL toolbar element.
193 class XULToolbarAccessible
: public AccessibleWrap
196 XULToolbarAccessible(nsIContent
* aContent
, DocAccessible
* aDoc
);
199 virtual mozilla::a11y::role
NativeRole();
203 virtual ENameValueFlag
NativeName(nsString
& aName
) MOZ_OVERRIDE
;
207 * Used for XUL toolbarseparator element.
209 class XULToolbarSeparatorAccessible
: public LeafAccessible
212 XULToolbarSeparatorAccessible(nsIContent
* aContent
,
213 DocAccessible
* aDoc
);
216 virtual mozilla::a11y::role
NativeRole();
217 virtual uint64_t NativeState();
221 } // namespace mozilla