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_XULElementAccessibles_h__
7 #define mozilla_a11y_XULElementAccessibles_h__
9 #include "HyperTextAccessibleWrap.h"
10 #include "TextLeafAccessibleWrap.h"
15 class XULLabelTextLeafAccessible
;
18 * Used for XUL description and label elements.
20 class XULLabelAccessible
: public HyperTextAccessibleWrap
23 XULLabelAccessible(nsIContent
* aContent
, DocAccessible
* aDoc
);
26 virtual void Shutdown() override
;
27 virtual a11y::role
NativeRole() const override
;
28 virtual uint64_t NativeState() const override
;
29 virtual Relation
RelationByType(RelationType aType
) const override
;
31 void UpdateLabelValue(const nsString
& aValue
);
35 virtual ENameValueFlag
NativeName(nsString
& aName
) const override
;
38 RefPtr
<XULLabelTextLeafAccessible
> mValueTextLeaf
;
41 inline XULLabelAccessible
*
42 Accessible::AsXULLabel()
44 return IsXULLabel() ? static_cast<XULLabelAccessible
*>(this) : nullptr;
49 * Used to implement text interface on XUL label accessible in case when text
50 * is provided by @value attribute (no underlying text frame).
52 class XULLabelTextLeafAccessible final
: public TextLeafAccessibleWrap
55 XULLabelTextLeafAccessible(nsIContent
* aContent
, DocAccessible
* aDoc
) :
56 TextLeafAccessibleWrap(aContent
, aDoc
)
57 { mStateFlags
|= eSharedNode
; }
59 virtual ~XULLabelTextLeafAccessible() { }
62 virtual a11y::role
NativeRole() const override
;
63 virtual uint64_t NativeState() const override
;
68 * Used for XUL tooltip element.
70 class XULTooltipAccessible
: public LeafAccessible
74 XULTooltipAccessible(nsIContent
* aContent
, DocAccessible
* aDoc
);
77 virtual a11y::role
NativeRole() const override
;
78 virtual uint64_t NativeState() const override
;
81 class XULLinkAccessible
: public XULLabelAccessible
85 XULLinkAccessible(nsIContent
* aContent
, DocAccessible
* aDoc
);
88 virtual void Value(nsString
& aValue
) const override
;
89 virtual a11y::role
NativeRole() const override
;
90 virtual uint64_t NativeLinkState() const override
;
93 virtual uint8_t ActionCount() const override
;
94 virtual void ActionNameAt(uint8_t aIndex
, nsAString
& aName
) override
;
95 virtual bool DoAction(uint8_t aIndex
) const override
;
97 // HyperLinkAccessible
98 virtual bool IsLink() const override
;
99 virtual uint32_t StartOffset() override
;
100 virtual uint32_t EndOffset() override
;
101 virtual already_AddRefed
<nsIURI
> AnchorURIAt(uint32_t aAnchorIndex
) const override
;
104 virtual ~XULLinkAccessible();
107 virtual ENameValueFlag
NativeName(nsString
& aName
) const override
;
109 enum { eAction_Jump
= 0 };
114 } // namespace mozilla