accessible/src/xul/XULFormControlAccessible.h

Thu, 22 Jan 2015 13:21:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 22 Jan 2015 13:21:57 +0100
branch
TOR_BUG_9701
changeset 15
b8a032363ba2
permissions
-rw-r--r--

Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6

     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_XULFormControlAccessible_H_
     7 #define MOZILLA_A11Y_XULFormControlAccessible_H_
     9 // NOTE: alphabetically ordered
    10 #include "AccessibleWrap.h"
    11 #include "FormControlAccessible.h"
    12 #include "HyperTextAccessibleWrap.h"
    13 #include "XULSelectControlAccessible.h"
    15 namespace mozilla {
    16 namespace a11y {
    18 /**
    19  * Used for XUL progressmeter element.
    20  */
    21 typedef ProgressMeterAccessible<100> XULProgressMeterAccessible;
    23 /**
    24  * Used for XUL button.
    25  *
    26  * @note  Don't inherit from LeafAccessible - it doesn't allow children
    27  *         and a button can have a dropmarker child.
    28  */
    29 class XULButtonAccessible : public AccessibleWrap
    30 {
    31 public:
    32   enum { eAction_Click = 0 };
    33   XULButtonAccessible(nsIContent* aContent, DocAccessible* aDoc);
    35   // nsISupports
    36   NS_DECL_ISUPPORTS_INHERITED
    38   // nsIAccessible
    39   NS_IMETHOD GetActionName(uint8_t aIndex, nsAString& aName);
    40   NS_IMETHOD DoAction(uint8_t index);
    42   // Accessible
    43   virtual mozilla::a11y::role NativeRole();
    44   virtual uint64_t NativeState();
    46   // ActionAccessible
    47   virtual uint8_t ActionCount();
    49   // Widgets
    50   virtual bool IsWidget() const;
    51   virtual bool IsActiveWidget() const;
    52   virtual bool AreItemsOperable() const;
    53   virtual Accessible* ContainerWidget() const;
    55   virtual bool IsAcceptableChild(Accessible* aPossibleChild) const MOZ_OVERRIDE;
    57 protected:
    58   // XULButtonAccessible
    59   bool ContainsMenu();
    60 };
    63 /**
    64  * Used for XUL checkbox element.
    65  */
    66 class XULCheckboxAccessible : public LeafAccessible
    67 {
    68 public:
    69   enum { eAction_Click = 0 };
    70   XULCheckboxAccessible(nsIContent* aContent, DocAccessible* aDoc);
    72   // nsIAccessible
    73   NS_IMETHOD GetActionName(uint8_t aIndex, nsAString& aName);
    74   NS_IMETHOD DoAction(uint8_t index);
    76   // Accessible
    77   virtual mozilla::a11y::role NativeRole();
    78   virtual uint64_t NativeState();
    80   // ActionAccessible
    81   virtual uint8_t ActionCount();
    82 };
    84 /**
    85  * Used for XUL dropmarker element.
    86  */
    87 class XULDropmarkerAccessible : public LeafAccessible
    88 {
    89 public:
    90   enum { eAction_Click = 0 };
    91   XULDropmarkerAccessible(nsIContent* aContent, DocAccessible* aDoc);
    93   // nsIAccessible
    94   NS_IMETHOD GetActionName(uint8_t aIndex, nsAString& aName);
    95   NS_IMETHOD DoAction(uint8_t index);
    97   // Accessible
    98   virtual mozilla::a11y::role NativeRole();
    99   virtual uint64_t NativeState();
   101   // ActionAccessible
   102   virtual uint8_t ActionCount();
   104 private:
   105   bool DropmarkerOpen(bool aToggleOpen);
   106 };
   108 /**
   109  * Used for XUL groupbox element.
   110  */
   111 class XULGroupboxAccessible : public AccessibleWrap
   112 {
   113 public:
   114   XULGroupboxAccessible(nsIContent* aContent, DocAccessible* aDoc);
   116   // Accessible
   117   virtual mozilla::a11y::role NativeRole();
   118   virtual Relation RelationByType(RelationType aType) MOZ_OVERRIDE;
   120 protected:
   121   // Accessible
   122   virtual ENameValueFlag NativeName(nsString& aName) MOZ_OVERRIDE;
   123 };
   125 /**
   126  * Used for XUL radio element (radio button).
   127  */
   128 class XULRadioButtonAccessible : public RadioButtonAccessible
   129 {
   131 public:
   132   XULRadioButtonAccessible(nsIContent* aContent, DocAccessible* aDoc);
   134   // Accessible
   135   virtual uint64_t NativeState();
   136   virtual uint64_t NativeInteractiveState() const;
   138   // Widgets
   139   virtual Accessible* ContainerWidget() const;
   140 };
   142 /**
   143  * Used for XUL radiogroup element.
   144  */
   145 class XULRadioGroupAccessible : public XULSelectControlAccessible
   146 {
   147 public:
   148   XULRadioGroupAccessible(nsIContent* aContent, DocAccessible* aDoc);
   150   // Accessible
   151   virtual mozilla::a11y::role NativeRole();
   152   virtual uint64_t NativeInteractiveState() const;
   154   // Widgets
   155   virtual bool IsWidget() const;
   156   virtual bool IsActiveWidget() const;
   157   virtual bool AreItemsOperable() const;
   158 };
   160 /**
   161  * Used for XUL statusbar element.
   162  */
   163 class XULStatusBarAccessible : public AccessibleWrap
   164 {
   165 public:
   166   XULStatusBarAccessible(nsIContent* aContent, DocAccessible* aDoc);
   168   // Accessible
   169   virtual mozilla::a11y::role NativeRole();
   170 };
   172 /**
   173  * Used for XUL toolbarbutton element.
   174  */
   175 class XULToolbarButtonAccessible : public XULButtonAccessible
   176 {
   177 public:
   178   XULToolbarButtonAccessible(nsIContent* aContent, DocAccessible* aDoc);
   180   // Accessible
   181   virtual void GetPositionAndSizeInternal(int32_t *aPosInSet,
   182                                           int32_t *aSetSize);
   184   // nsXULToolbarButtonAccessible
   185   static bool IsSeparator(Accessible* aAccessible);
   186 };
   188 /**
   189  * Used for XUL toolbar element.
   190  */
   191 class XULToolbarAccessible : public AccessibleWrap
   192 {
   193 public:
   194   XULToolbarAccessible(nsIContent* aContent, DocAccessible* aDoc);
   196   // Accessible
   197   virtual mozilla::a11y::role NativeRole();
   199 protected:
   200   // Accessible
   201   virtual ENameValueFlag NativeName(nsString& aName) MOZ_OVERRIDE;
   202 };
   204 /**
   205  * Used for XUL toolbarseparator element.
   206  */
   207 class XULToolbarSeparatorAccessible : public LeafAccessible
   208 {
   209 public:
   210   XULToolbarSeparatorAccessible(nsIContent* aContent,
   211                                 DocAccessible* aDoc);
   213   // Accessible
   214   virtual mozilla::a11y::role NativeRole();
   215   virtual uint64_t NativeState();
   216 };
   218 } // namespace a11y
   219 } // namespace mozilla
   221 #endif

mercurial