tor-browser

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

XULFormControlAccessible.h (5551B)


      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_XULFormControlAccessible_H_
      7 #define MOZILLA_A11Y_XULFormControlAccessible_H_
      8 
      9 // NOTE: alphabetically ordered
     10 #include "AccessibleWrap.h"
     11 #include "FormControlAccessible.h"
     12 #include "HyperTextAccessible.h"
     13 #include "XULSelectControlAccessible.h"
     14 
     15 namespace mozilla {
     16 namespace a11y {
     17 
     18 /**
     19 * Used for XUL button.
     20 *
     21 * @note  Don't inherit from LeafAccessible - it doesn't allow children
     22 *         and a button can have a dropmarker child.
     23 */
     24 class XULButtonAccessible : public AccessibleWrap {
     25 public:
     26  enum { eAction_Click = 0 };
     27  XULButtonAccessible(nsIContent* aContent, DocAccessible* aDoc);
     28 
     29  // nsISupports
     30  NS_INLINE_DECL_REFCOUNTING_INHERITED(XULButtonAccessible, AccessibleWrap)
     31 
     32  // LocalAccessible
     33  virtual mozilla::a11y::role NativeRole() const override;
     34  virtual uint64_t NativeState() const override;
     35 
     36  // ActionAccessible
     37  virtual bool HasPrimaryAction() const override;
     38  virtual void ActionNameAt(uint8_t aIndex, nsAString& aName) override;
     39 
     40  // Widgets
     41  virtual bool IsWidget() const override;
     42  virtual bool IsActiveWidget() const override;
     43  virtual bool AreItemsOperable() const override;
     44 
     45  virtual bool IsAcceptableChild(nsIContent* aEl) const override;
     46 
     47 protected:
     48  virtual ~XULButtonAccessible();
     49 
     50  // LocalAccessible
     51  virtual bool AttributeChangesState(nsAtom* aAttribute) override;
     52  virtual void DOMAttributeChanged(int32_t aNameSpaceID, nsAtom* aAttribute,
     53                                   AttrModType aModType,
     54                                   const nsAttrValue* aOldValue,
     55                                   uint64_t aOldState) override;
     56 
     57  // XULButtonAccessible
     58  bool ContainsMenu() const;
     59 };
     60 
     61 /**
     62 * Used for XUL dropmarker element.
     63 */
     64 class XULDropmarkerAccessible : public LeafAccessible {
     65 public:
     66  enum { eAction_Click = 0 };
     67  XULDropmarkerAccessible(nsIContent* aContent, DocAccessible* aDoc);
     68 
     69  // LocalAccessible
     70  virtual mozilla::a11y::role NativeRole() const override;
     71  virtual uint64_t NativeState() const override;
     72 
     73  // ActionAccessible
     74  virtual bool HasPrimaryAction() const override;
     75  virtual void ActionNameAt(uint8_t aIndex, nsAString& aName) override;
     76  virtual bool DoAction(uint8_t aIndex) const override;
     77 
     78 private:
     79  bool DropmarkerOpen(bool aToggleOpen) const;
     80 };
     81 
     82 /**
     83 * Used for XUL groupbox element.
     84 */
     85 class XULGroupboxAccessible final : public AccessibleWrap {
     86 public:
     87  XULGroupboxAccessible(nsIContent* aContent, DocAccessible* aDoc);
     88 
     89  // LocalAccessible
     90  virtual mozilla::a11y::role NativeRole() const override;
     91  virtual Relation RelationByType(RelationType aType) const override;
     92 
     93 protected:
     94  // LocalAccessible
     95  virtual ENameValueFlag NativeName(nsString& aName) const override;
     96 };
     97 
     98 /**
     99 * Used for XUL radio element (radio button).
    100 */
    101 class XULRadioButtonAccessible : public RadioButtonAccessible {
    102 public:
    103  XULRadioButtonAccessible(nsIContent* aContent, DocAccessible* aDoc);
    104 
    105  // LocalAccessible
    106  virtual uint64_t NativeState() const override;
    107  virtual uint64_t NativeInteractiveState() const override;
    108 
    109  // Widgets
    110  virtual LocalAccessible* ContainerWidget() const override;
    111 };
    112 
    113 /**
    114 * Used for XUL radiogroup element.
    115 */
    116 class XULRadioGroupAccessible : public XULSelectControlAccessible {
    117 public:
    118  XULRadioGroupAccessible(nsIContent* aContent, DocAccessible* aDoc);
    119 
    120  // LocalAccessible
    121  virtual mozilla::a11y::role NativeRole() const override;
    122  virtual uint64_t NativeInteractiveState() const override;
    123 
    124  // Widgets
    125  virtual bool IsWidget() const override;
    126  virtual bool IsActiveWidget() const override;
    127  virtual bool AreItemsOperable() const override;
    128  virtual LocalAccessible* CurrentItem() const override;
    129  virtual void SetCurrentItem(const LocalAccessible* aItem) override;
    130 };
    131 
    132 /**
    133 * Used for XUL statusbar element.
    134 */
    135 class XULStatusBarAccessible : public AccessibleWrap {
    136 public:
    137  XULStatusBarAccessible(nsIContent* aContent, DocAccessible* aDoc);
    138 
    139  // LocalAccessible
    140  virtual mozilla::a11y::role NativeRole() const override;
    141 };
    142 
    143 /**
    144 * Used for XUL toolbarbutton element.
    145 */
    146 class XULToolbarButtonAccessible : public XULButtonAccessible {
    147 public:
    148  XULToolbarButtonAccessible(nsIContent* aContent, DocAccessible* aDoc);
    149 
    150  // nsXULToolbarButtonAccessible
    151  static bool IsSeparator(LocalAccessible* aAccessible);
    152 
    153  // Widgets
    154  virtual bool IsAcceptableChild(nsIContent* aEl) const override;
    155 
    156 protected:
    157  // LocalAccessible
    158  virtual void GetPositionAndSetSize(int32_t* aPosInSet,
    159                                     int32_t* aSetSize) override;
    160 };
    161 
    162 /**
    163 * Used for XUL toolbar element.
    164 */
    165 class XULToolbarAccessible : public AccessibleWrap {
    166 public:
    167  XULToolbarAccessible(nsIContent* aContent, DocAccessible* aDoc);
    168 
    169  // LocalAccessible
    170  virtual mozilla::a11y::role NativeRole() const override;
    171 
    172 protected:
    173  // LocalAccessible
    174  virtual ENameValueFlag NativeName(nsString& aName) const override;
    175 };
    176 
    177 /**
    178 * Used for XUL toolbarseparator element.
    179 */
    180 class XULToolbarSeparatorAccessible : public LeafAccessible {
    181 public:
    182  XULToolbarSeparatorAccessible(nsIContent* aContent, DocAccessible* aDoc);
    183 
    184  // LocalAccessible
    185  virtual mozilla::a11y::role NativeRole() const override;
    186  virtual uint64_t NativeState() const override;
    187 };
    188 
    189 }  // namespace a11y
    190 }  // namespace mozilla
    191 
    192 #endif