HTMLElementAccessibles.h (5924B)
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_HTMLElementAccessibles_h__ 7 #define mozilla_a11y_HTMLElementAccessibles_h__ 8 9 #include "BaseAccessibles.h" 10 11 namespace mozilla { 12 namespace a11y { 13 14 /** 15 * Used for HTML hr element. 16 */ 17 class HTMLHRAccessible : public LeafAccessible { 18 public: 19 HTMLHRAccessible(nsIContent* aContent, DocAccessible* aDoc) 20 : LeafAccessible(aContent, aDoc) {} 21 22 // LocalAccessible 23 virtual a11y::role NativeRole() const override; 24 }; 25 26 /** 27 * Used for HTML br element. 28 */ 29 class HTMLBRAccessible : public LeafAccessible { 30 public: 31 HTMLBRAccessible(nsIContent* aContent, DocAccessible* aDoc) 32 : LeafAccessible(aContent, aDoc) { 33 mType = eHTMLBRType; 34 mGenericTypes |= eText; 35 } 36 37 // LocalAccessible 38 virtual a11y::role NativeRole() const override; 39 virtual uint64_t NativeState() const override; 40 41 protected: 42 // LocalAccessible 43 virtual ENameValueFlag NativeName(nsString& aName) const override; 44 }; 45 46 /** 47 * Used for HTML label element. 48 */ 49 class HTMLLabelAccessible : public HyperTextAccessible { 50 public: 51 HTMLLabelAccessible(nsIContent* aContent, DocAccessible* aDoc) 52 : HyperTextAccessible(aContent, aDoc) {} 53 54 NS_INLINE_DECL_REFCOUNTING_INHERITED(HTMLLabelAccessible, HyperTextAccessible) 55 56 // LocalAccessible 57 virtual Relation RelationByType(RelationType aType) const override; 58 59 // ActionAccessible 60 virtual void ActionNameAt(uint8_t aIndex, nsAString& aName) override; 61 virtual bool HasPrimaryAction() const override; 62 63 protected: 64 virtual ~HTMLLabelAccessible() {} 65 virtual ENameValueFlag NativeName(nsString& aName) const override; 66 virtual void DOMAttributeChanged(int32_t aNameSpaceID, nsAtom* aAttribute, 67 AttrModType aModType, 68 const nsAttrValue* aOldValue, 69 uint64_t aOldState) override; 70 }; 71 72 /** 73 * Used for HTML output element. 74 */ 75 class HTMLOutputAccessible : public HyperTextAccessible { 76 public: 77 HTMLOutputAccessible(nsIContent* aContent, DocAccessible* aDoc) 78 : HyperTextAccessible(aContent, aDoc) {} 79 80 NS_INLINE_DECL_REFCOUNTING_INHERITED(HTMLOutputAccessible, 81 HyperTextAccessible) 82 83 // LocalAccessible 84 virtual Relation RelationByType(RelationType aType) const override; 85 86 virtual void DOMAttributeChanged(int32_t aNameSpaceID, nsAtom* aAttribute, 87 AttrModType aModType, 88 const nsAttrValue* aOldValue, 89 uint64_t aOldState) override; 90 91 protected: 92 virtual ~HTMLOutputAccessible() {} 93 }; 94 95 /** 96 * Accessible for the HTML summary element. 97 */ 98 class HTMLSummaryAccessible : public HyperTextAccessible { 99 public: 100 enum { eAction_Click = 0 }; 101 102 HTMLSummaryAccessible(nsIContent* aContent, DocAccessible* aDoc); 103 104 // Check that the given LocalAccessible belongs to a details frame. 105 // If so, find and return the accessible for the detail frame's 106 // main summary. 107 static HTMLSummaryAccessible* FromDetails(LocalAccessible* aDetails); 108 109 // LocalAccessible 110 virtual uint64_t NativeState() const override; 111 112 // ActionAccessible 113 virtual void ActionNameAt(uint8_t aIndex, nsAString& aName) override; 114 virtual bool HasPrimaryAction() const override; 115 116 // Widgets 117 virtual bool IsWidget() const override; 118 }; 119 120 /** 121 * Used for HTML header and footer elements. 122 */ 123 class HTMLHeaderOrFooterAccessible : public HyperTextAccessible { 124 public: 125 HTMLHeaderOrFooterAccessible(nsIContent* aContent, DocAccessible* aDoc) 126 : HyperTextAccessible(aContent, aDoc) {} 127 128 NS_INLINE_DECL_REFCOUNTING_INHERITED(HTMLHeaderOrFooterAccessible, 129 HyperTextAccessible) 130 131 // LocalAccessible 132 virtual a11y::role NativeRole() const override; 133 134 protected: 135 virtual ~HTMLHeaderOrFooterAccessible() {} 136 }; 137 138 /** 139 * Used for aside elements. 140 */ 141 class HTMLAsideAccessible : public HyperTextAccessible { 142 public: 143 HTMLAsideAccessible(nsIContent* aContent, DocAccessible* aDoc) 144 : HyperTextAccessible(aContent, aDoc) {} 145 146 NS_INLINE_DECL_REFCOUNTING_INHERITED(HTMLAsideAccessible, HyperTextAccessible) 147 148 // LocalAccessible 149 virtual a11y::role NativeRole() const override; 150 151 protected: 152 virtual ~HTMLAsideAccessible() = default; 153 }; 154 155 /** 156 * Used for HTML section element. 157 */ 158 class HTMLSectionAccessible : public HyperTextAccessible { 159 public: 160 HTMLSectionAccessible(nsIContent* aContent, DocAccessible* aDoc) 161 : HyperTextAccessible(aContent, aDoc) {} 162 163 NS_INLINE_DECL_REFCOUNTING_INHERITED(HTMLSectionAccessible, 164 HyperTextAccessible) 165 166 // LocalAccessible 167 virtual a11y::role NativeRole() const override; 168 169 protected: 170 virtual ~HTMLSectionAccessible() = default; 171 }; 172 173 /** 174 * Used for abbr and the deprecated acronym elements. 175 */ 176 class HTMLAbbreviationAccessible : public HyperTextAccessible { 177 public: 178 HTMLAbbreviationAccessible(nsIContent* aContent, DocAccessible* aDoc) 179 : HyperTextAccessible(aContent, aDoc) { 180 mType = eHTMLAbbrevType; 181 } 182 183 NS_INLINE_DECL_REFCOUNTING_INHERITED(HTMLAbbreviationAccessible, 184 HyperTextAccessible) 185 186 protected: 187 // LocalAccessible 188 virtual ENameValueFlag NativeName(nsString& aName) const override; 189 190 virtual void DOMAttributeChanged(int32_t aNameSpaceID, nsAtom* aAttribute, 191 AttrModType aModType, 192 const nsAttrValue* aOldValue, 193 uint64_t aOldState) override; 194 195 virtual ~HTMLAbbreviationAccessible() = default; 196 }; 197 198 } // namespace a11y 199 } // namespace mozilla 200 201 #endif