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 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
;
37 virtual bool HasPrimaryAction() const override
;
38 virtual void ActionNameAt(uint8_t aIndex
, nsAString
& aName
) override
;
41 virtual bool IsWidget() const override
;
42 virtual bool IsActiveWidget() const override
;
43 virtual bool AreItemsOperable() const override
;
45 virtual bool IsAcceptableChild(nsIContent
* aEl
) const override
;
48 virtual ~XULButtonAccessible();
50 // XULButtonAccessible
51 bool ContainsMenu() const;
55 * Used for XUL dropmarker element.
57 class XULDropmarkerAccessible
: public LeafAccessible
{
59 enum { eAction_Click
= 0 };
60 XULDropmarkerAccessible(nsIContent
* aContent
, DocAccessible
* aDoc
);
63 virtual mozilla::a11y::role
NativeRole() const override
;
64 virtual uint64_t NativeState() const override
;
67 virtual bool HasPrimaryAction() const override
;
68 virtual void ActionNameAt(uint8_t aIndex
, nsAString
& aName
) override
;
69 virtual bool DoAction(uint8_t aIndex
) const override
;
72 bool DropmarkerOpen(bool aToggleOpen
) const;
76 * Used for XUL groupbox element.
78 class XULGroupboxAccessible final
: public AccessibleWrap
{
80 XULGroupboxAccessible(nsIContent
* aContent
, DocAccessible
* aDoc
);
83 virtual mozilla::a11y::role
NativeRole() const override
;
84 virtual Relation
RelationByType(RelationType aType
) const override
;
88 virtual ENameValueFlag
NativeName(nsString
& aName
) const override
;
92 * Used for XUL radio element (radio button).
94 class XULRadioButtonAccessible
: public RadioButtonAccessible
{
96 XULRadioButtonAccessible(nsIContent
* aContent
, DocAccessible
* aDoc
);
99 virtual uint64_t NativeState() const override
;
100 virtual uint64_t NativeInteractiveState() const override
;
103 virtual LocalAccessible
* ContainerWidget() const override
;
107 * Used for XUL radiogroup element.
109 class XULRadioGroupAccessible
: public XULSelectControlAccessible
{
111 XULRadioGroupAccessible(nsIContent
* aContent
, DocAccessible
* aDoc
);
114 virtual mozilla::a11y::role
NativeRole() const override
;
115 virtual uint64_t NativeInteractiveState() const override
;
118 virtual bool IsWidget() const override
;
119 virtual bool IsActiveWidget() const override
;
120 virtual bool AreItemsOperable() const override
;
121 virtual LocalAccessible
* CurrentItem() const override
;
122 virtual void SetCurrentItem(const LocalAccessible
* aItem
) override
;
126 * Used for XUL statusbar element.
128 class XULStatusBarAccessible
: public AccessibleWrap
{
130 XULStatusBarAccessible(nsIContent
* aContent
, DocAccessible
* aDoc
);
133 virtual mozilla::a11y::role
NativeRole() const override
;
137 * Used for XUL toolbarbutton element.
139 class XULToolbarButtonAccessible
: public XULButtonAccessible
{
141 XULToolbarButtonAccessible(nsIContent
* aContent
, DocAccessible
* aDoc
);
143 // nsXULToolbarButtonAccessible
144 static bool IsSeparator(LocalAccessible
* aAccessible
);
147 virtual bool IsAcceptableChild(nsIContent
* aEl
) const override
;
151 virtual void GetPositionAndSetSize(int32_t* aPosInSet
,
152 int32_t* aSetSize
) override
;
156 * Used for XUL toolbar element.
158 class XULToolbarAccessible
: public AccessibleWrap
{
160 XULToolbarAccessible(nsIContent
* aContent
, DocAccessible
* aDoc
);
163 virtual mozilla::a11y::role
NativeRole() const override
;
167 virtual ENameValueFlag
NativeName(nsString
& aName
) const override
;
171 * Used for XUL toolbarseparator element.
173 class XULToolbarSeparatorAccessible
: public LeafAccessible
{
175 XULToolbarSeparatorAccessible(nsIContent
* aContent
, DocAccessible
* aDoc
);
178 virtual mozilla::a11y::role
NativeRole() const override
;
179 virtual uint64_t NativeState() const override
;
183 } // namespace mozilla