Bug 1755924 [wpt PR 32876] - Handle resumed blocks that get sliced by floats correctl...
[gecko.git] / accessible / xul / XULFormControlAccessible.h
blob1f5753d2919178ec49c2104d3ea64dc2da353cf8
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 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 {
25 public:
26 enum { eAction_Click = 0 };
27 XULButtonAccessible(nsIContent* aContent, DocAccessible* aDoc);
29 // nsISupports
30 NS_INLINE_DECL_REFCOUNTING_INHERITED(XULButtonAccessible, AccessibleWrap)
32 // LocalAccessible
33 virtual mozilla::a11y::role NativeRole() const override;
34 virtual uint64_t NativeState() const override;
36 // ActionAccessible
37 virtual bool HasPrimaryAction() const override;
38 virtual void ActionNameAt(uint8_t aIndex, nsAString& aName) override;
40 // Widgets
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;
47 protected:
48 virtual ~XULButtonAccessible();
50 // XULButtonAccessible
51 bool ContainsMenu() const;
54 /**
55 * Used for XUL dropmarker element.
57 class XULDropmarkerAccessible : public LeafAccessible {
58 public:
59 enum { eAction_Click = 0 };
60 XULDropmarkerAccessible(nsIContent* aContent, DocAccessible* aDoc);
62 // LocalAccessible
63 virtual mozilla::a11y::role NativeRole() const override;
64 virtual uint64_t NativeState() const override;
66 // ActionAccessible
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;
71 private:
72 bool DropmarkerOpen(bool aToggleOpen) const;
75 /**
76 * Used for XUL groupbox element.
78 class XULGroupboxAccessible final : public AccessibleWrap {
79 public:
80 XULGroupboxAccessible(nsIContent* aContent, DocAccessible* aDoc);
82 // LocalAccessible
83 virtual mozilla::a11y::role NativeRole() const override;
84 virtual Relation RelationByType(RelationType aType) const override;
86 protected:
87 // LocalAccessible
88 virtual ENameValueFlag NativeName(nsString& aName) const override;
91 /**
92 * Used for XUL radio element (radio button).
94 class XULRadioButtonAccessible : public RadioButtonAccessible {
95 public:
96 XULRadioButtonAccessible(nsIContent* aContent, DocAccessible* aDoc);
98 // LocalAccessible
99 virtual uint64_t NativeState() const override;
100 virtual uint64_t NativeInteractiveState() const override;
102 // Widgets
103 virtual LocalAccessible* ContainerWidget() const override;
107 * Used for XUL radiogroup element.
109 class XULRadioGroupAccessible : public XULSelectControlAccessible {
110 public:
111 XULRadioGroupAccessible(nsIContent* aContent, DocAccessible* aDoc);
113 // LocalAccessible
114 virtual mozilla::a11y::role NativeRole() const override;
115 virtual uint64_t NativeInteractiveState() const override;
117 // Widgets
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 {
129 public:
130 XULStatusBarAccessible(nsIContent* aContent, DocAccessible* aDoc);
132 // LocalAccessible
133 virtual mozilla::a11y::role NativeRole() const override;
137 * Used for XUL toolbarbutton element.
139 class XULToolbarButtonAccessible : public XULButtonAccessible {
140 public:
141 XULToolbarButtonAccessible(nsIContent* aContent, DocAccessible* aDoc);
143 // nsXULToolbarButtonAccessible
144 static bool IsSeparator(LocalAccessible* aAccessible);
146 // Widgets
147 virtual bool IsAcceptableChild(nsIContent* aEl) const override;
149 protected:
150 // LocalAccessible
151 virtual void GetPositionAndSetSize(int32_t* aPosInSet,
152 int32_t* aSetSize) override;
156 * Used for XUL toolbar element.
158 class XULToolbarAccessible : public AccessibleWrap {
159 public:
160 XULToolbarAccessible(nsIContent* aContent, DocAccessible* aDoc);
162 // LocalAccessible
163 virtual mozilla::a11y::role NativeRole() const override;
165 protected:
166 // LocalAccessible
167 virtual ENameValueFlag NativeName(nsString& aName) const override;
171 * Used for XUL toolbarseparator element.
173 class XULToolbarSeparatorAccessible : public LeafAccessible {
174 public:
175 XULToolbarSeparatorAccessible(nsIContent* aContent, DocAccessible* aDoc);
177 // LocalAccessible
178 virtual mozilla::a11y::role NativeRole() const override;
179 virtual uint64_t NativeState() const override;
182 } // namespace a11y
183 } // namespace mozilla
185 #endif