tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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