accessible/src/xul/XULElementAccessibles.h

changeset 0
6474c204b198
equal deleted inserted replaced
-1:000000000000 0:606ea0f76ec9
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/. */
5
6 #ifndef mozilla_a11y_XULElementAccessibles_h__
7 #define mozilla_a11y_XULElementAccessibles_h__
8
9 #include "HyperTextAccessibleWrap.h"
10 #include "TextLeafAccessibleWrap.h"
11
12 namespace mozilla {
13 namespace a11y {
14
15 class XULLabelTextLeafAccessible;
16
17 /**
18 * Used for XUL description and label elements.
19 */
20 class XULLabelAccessible : public HyperTextAccessibleWrap
21 {
22 public:
23 XULLabelAccessible(nsIContent* aContent, DocAccessible* aDoc);
24
25 // Accessible
26 virtual void Shutdown();
27 virtual a11y::role NativeRole();
28 virtual uint64_t NativeState();
29 virtual Relation RelationByType(RelationType aType) MOZ_OVERRIDE;
30
31 void UpdateLabelValue(const nsString& aValue);
32
33 protected:
34 // Accessible
35 virtual ENameValueFlag NativeName(nsString& aName) MOZ_OVERRIDE;
36 virtual void CacheChildren() MOZ_OVERRIDE;
37
38 private:
39 nsRefPtr<XULLabelTextLeafAccessible> mValueTextLeaf;
40 };
41
42 inline XULLabelAccessible*
43 Accessible::AsXULLabel()
44 {
45 return IsXULLabel() ? static_cast<XULLabelAccessible*>(this) : nullptr;
46 }
47
48
49 /**
50 * Used to implement text interface on XUL label accessible in case when text
51 * is provided by @value attribute (no underlying text frame).
52 */
53 class XULLabelTextLeafAccessible MOZ_FINAL : public TextLeafAccessibleWrap
54 {
55 public:
56 XULLabelTextLeafAccessible(nsIContent* aContent, DocAccessible* aDoc) :
57 TextLeafAccessibleWrap(aContent, aDoc)
58 { mStateFlags |= eSharedNode; }
59
60 virtual ~XULLabelTextLeafAccessible() { }
61
62 // Accessible
63 virtual a11y::role NativeRole() MOZ_OVERRIDE;
64 virtual uint64_t NativeState() MOZ_OVERRIDE;
65 };
66
67
68 /**
69 * Used for XUL tooltip element.
70 */
71 class XULTooltipAccessible : public LeafAccessible
72 {
73
74 public:
75 XULTooltipAccessible(nsIContent* aContent, DocAccessible* aDoc);
76
77 // Accessible
78 virtual a11y::role NativeRole();
79 virtual uint64_t NativeState();
80 };
81
82 class XULLinkAccessible : public XULLabelAccessible
83 {
84
85 public:
86 XULLinkAccessible(nsIContent* aContent, DocAccessible* aDoc);
87
88 NS_DECL_ISUPPORTS_INHERITED
89
90 // nsIAccessible
91 NS_IMETHOD GetActionName(uint8_t aIndex, nsAString& aName);
92 NS_IMETHOD DoAction(uint8_t aIndex);
93
94 // Accessible
95 virtual void Value(nsString& aValue);
96 virtual a11y::role NativeRole();
97 virtual uint64_t NativeLinkState() const;
98
99 // ActionAccessible
100 virtual uint8_t ActionCount();
101
102 // HyperLinkAccessible
103 virtual bool IsLink();
104 virtual uint32_t StartOffset();
105 virtual uint32_t EndOffset();
106 virtual already_AddRefed<nsIURI> AnchorURIAt(uint32_t aAnchorIndex);
107
108 protected:
109 // Accessible
110 virtual ENameValueFlag NativeName(nsString& aName) MOZ_OVERRIDE;
111
112 enum { eAction_Jump = 0 };
113
114 };
115
116 } // namespace a11y
117 } // namespace mozilla
118
119 #endif

mercurial