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 "HyperTextAccessible.h"
13 #include "XULSelectControlAccessible.h"
19 * Used for XUL button.
21 * @note Don't inherit from LeafAccessible - it doesn't allow children
22 * and a button can have a dropmarker child.
24 class XULButtonAccessible
: public AccessibleWrap
{
26 enum { eAction_Click
= 0 };
27 XULButtonAccessible(nsIContent
* aContent
, DocAccessible
* aDoc
);
30 NS_INLINE_DECL_REFCOUNTING_INHERITED(XULButtonAccessible
, AccessibleWrap
)
33 virtual mozilla::a11y::role
NativeRole() const override
;
34 virtual uint64_t NativeState() const override
;
35 virtual bool AttributeChangesState(nsAtom
* aAttribute
) override
;
38 virtual bool HasPrimaryAction() const override
;
39 virtual void ActionNameAt(uint8_t aIndex
, nsAString
& aName
) override
;
42 virtual bool IsWidget() const override
;
43 virtual bool IsActiveWidget() const override
;
44 virtual bool AreItemsOperable() const override
;
46 virtual bool IsAcceptableChild(nsIContent
* aEl
) const override
;
49 virtual ~XULButtonAccessible();
51 // XULButtonAccessible
52 bool ContainsMenu() const;
56 * Used for XUL dropmarker element.
58 class XULDropmarkerAccessible
: public LeafAccessible
{
60 enum { eAction_Click
= 0 };
61 XULDropmarkerAccessible(nsIContent
* aContent
, DocAccessible
* aDoc
);
64 virtual mozilla::a11y::role
NativeRole() const override
;
65 virtual uint64_t NativeState() const override
;
68 virtual bool HasPrimaryAction() const override
;
69 virtual void ActionNameAt(uint8_t aIndex
, nsAString
& aName
) override
;
70 virtual bool DoAction(uint8_t aIndex
) const override
;
73 bool DropmarkerOpen(bool aToggleOpen
) const;
77 * Used for XUL groupbox element.
79 class XULGroupboxAccessible final
: public AccessibleWrap
{
81 XULGroupboxAccessible(nsIContent
* aContent
, DocAccessible
* aDoc
);
84 virtual mozilla::a11y::role
NativeRole() const override
;
85 virtual Relation
RelationByType(RelationType aType
) const override
;
89 virtual ENameValueFlag
NativeName(nsString
& aName
) const override
;
93 * Used for XUL radio element (radio button).
95 class XULRadioButtonAccessible
: public RadioButtonAccessible
{
97 XULRadioButtonAccessible(nsIContent
* aContent
, DocAccessible
* aDoc
);
100 virtual uint64_t NativeState() const override
;
101 virtual uint64_t NativeInteractiveState() const override
;
104 virtual LocalAccessible
* ContainerWidget() const override
;
108 * Used for XUL radiogroup element.
110 class XULRadioGroupAccessible
: public XULSelectControlAccessible
{
112 XULRadioGroupAccessible(nsIContent
* aContent
, DocAccessible
* aDoc
);
115 virtual mozilla::a11y::role
NativeRole() const override
;
116 virtual uint64_t NativeInteractiveState() const override
;
119 virtual bool IsWidget() const override
;
120 virtual bool IsActiveWidget() const override
;
121 virtual bool AreItemsOperable() const override
;
122 virtual LocalAccessible
* CurrentItem() const override
;
123 virtual void SetCurrentItem(const LocalAccessible
* aItem
) override
;
127 * Used for XUL statusbar element.
129 class XULStatusBarAccessible
: public AccessibleWrap
{
131 XULStatusBarAccessible(nsIContent
* aContent
, DocAccessible
* aDoc
);
134 virtual mozilla::a11y::role
NativeRole() const override
;
138 * Used for XUL toolbarbutton element.
140 class XULToolbarButtonAccessible
: public XULButtonAccessible
{
142 XULToolbarButtonAccessible(nsIContent
* aContent
, DocAccessible
* aDoc
);
144 // nsXULToolbarButtonAccessible
145 static bool IsSeparator(LocalAccessible
* aAccessible
);
148 virtual bool IsAcceptableChild(nsIContent
* aEl
) const override
;
152 virtual void GetPositionAndSetSize(int32_t* aPosInSet
,
153 int32_t* aSetSize
) override
;
157 * Used for XUL toolbar element.
159 class XULToolbarAccessible
: public AccessibleWrap
{
161 XULToolbarAccessible(nsIContent
* aContent
, DocAccessible
* aDoc
);
164 virtual mozilla::a11y::role
NativeRole() const override
;
168 virtual ENameValueFlag
NativeName(nsString
& aName
) const override
;
172 * Used for XUL toolbarseparator element.
174 class XULToolbarSeparatorAccessible
: public LeafAccessible
{
176 XULToolbarSeparatorAccessible(nsIContent
* aContent
, DocAccessible
* aDoc
);
179 virtual mozilla::a11y::role
NativeRole() const override
;
180 virtual uint64_t NativeState() const override
;
184 } // namespace mozilla