Bug 1874684 - Part 28: Return DateDuration from DifferenceISODateTime. r=mgaudet
[gecko.git] / accessible / xul / XULFormControlAccessible.h
blob4eda16c7e991f2932c15e7de03efc922f9f8fb6a
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"
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;
35 virtual bool AttributeChangesState(nsAtom* aAttribute) override;
37 // ActionAccessible
38 virtual bool HasPrimaryAction() const override;
39 virtual void ActionNameAt(uint8_t aIndex, nsAString& aName) override;
41 // Widgets
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;
48 protected:
49 virtual ~XULButtonAccessible();
51 // XULButtonAccessible
52 bool ContainsMenu() const;
55 /**
56 * Used for XUL dropmarker element.
58 class XULDropmarkerAccessible : public LeafAccessible {
59 public:
60 enum { eAction_Click = 0 };
61 XULDropmarkerAccessible(nsIContent* aContent, DocAccessible* aDoc);
63 // LocalAccessible
64 virtual mozilla::a11y::role NativeRole() const override;
65 virtual uint64_t NativeState() const override;
67 // ActionAccessible
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;
72 private:
73 bool DropmarkerOpen(bool aToggleOpen) const;
76 /**
77 * Used for XUL groupbox element.
79 class XULGroupboxAccessible final : public AccessibleWrap {
80 public:
81 XULGroupboxAccessible(nsIContent* aContent, DocAccessible* aDoc);
83 // LocalAccessible
84 virtual mozilla::a11y::role NativeRole() const override;
85 virtual Relation RelationByType(RelationType aType) const override;
87 protected:
88 // LocalAccessible
89 virtual ENameValueFlag NativeName(nsString& aName) const override;
92 /**
93 * Used for XUL radio element (radio button).
95 class XULRadioButtonAccessible : public RadioButtonAccessible {
96 public:
97 XULRadioButtonAccessible(nsIContent* aContent, DocAccessible* aDoc);
99 // LocalAccessible
100 virtual uint64_t NativeState() const override;
101 virtual uint64_t NativeInteractiveState() const override;
103 // Widgets
104 virtual LocalAccessible* ContainerWidget() const override;
108 * Used for XUL radiogroup element.
110 class XULRadioGroupAccessible : public XULSelectControlAccessible {
111 public:
112 XULRadioGroupAccessible(nsIContent* aContent, DocAccessible* aDoc);
114 // LocalAccessible
115 virtual mozilla::a11y::role NativeRole() const override;
116 virtual uint64_t NativeInteractiveState() const override;
118 // Widgets
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 {
130 public:
131 XULStatusBarAccessible(nsIContent* aContent, DocAccessible* aDoc);
133 // LocalAccessible
134 virtual mozilla::a11y::role NativeRole() const override;
138 * Used for XUL toolbarbutton element.
140 class XULToolbarButtonAccessible : public XULButtonAccessible {
141 public:
142 XULToolbarButtonAccessible(nsIContent* aContent, DocAccessible* aDoc);
144 // nsXULToolbarButtonAccessible
145 static bool IsSeparator(LocalAccessible* aAccessible);
147 // Widgets
148 virtual bool IsAcceptableChild(nsIContent* aEl) const override;
150 protected:
151 // LocalAccessible
152 virtual void GetPositionAndSetSize(int32_t* aPosInSet,
153 int32_t* aSetSize) override;
157 * Used for XUL toolbar element.
159 class XULToolbarAccessible : public AccessibleWrap {
160 public:
161 XULToolbarAccessible(nsIContent* aContent, DocAccessible* aDoc);
163 // LocalAccessible
164 virtual mozilla::a11y::role NativeRole() const override;
166 protected:
167 // LocalAccessible
168 virtual ENameValueFlag NativeName(nsString& aName) const override;
172 * Used for XUL toolbarseparator element.
174 class XULToolbarSeparatorAccessible : public LeafAccessible {
175 public:
176 XULToolbarSeparatorAccessible(nsIContent* aContent, DocAccessible* aDoc);
178 // LocalAccessible
179 virtual mozilla::a11y::role NativeRole() const override;
180 virtual uint64_t NativeState() const override;
183 } // namespace a11y
184 } // namespace mozilla
186 #endif