accessible/src/html/HTMLFormControlAccessible.h

Tue, 06 Jan 2015 21:39:09 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Tue, 06 Jan 2015 21:39:09 +0100
branch
TOR_BUG_9701
changeset 8
97036ab72558
permissions
-rw-r--r--

Conditionally force memory storage according to privacy.thirdparty.isolate;
This solves Tor bug #9701, complying with disk avoidance documented in
https://www.torproject.org/projects/torbrowser/design/#disk-avoidance.

     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_HTMLFormControlAccessible_H_
     7 #define MOZILLA_A11Y_HTMLFormControlAccessible_H_
     9 #include "FormControlAccessible.h"
    10 #include "HyperTextAccessibleWrap.h"
    12 namespace mozilla {
    13 namespace a11y {
    15 /**
    16  * Accessible for HTML progress element.
    17  */
    18 typedef ProgressMeterAccessible<1> HTMLProgressMeterAccessible;
    20 /**
    21  * Accessible for HTML input@type="checkbox".
    22  */
    23 class HTMLCheckboxAccessible : public LeafAccessible
    24 {
    26 public:
    27   enum { eAction_Click = 0 };
    29   HTMLCheckboxAccessible(nsIContent* aContent, DocAccessible* aDoc) :
    30     LeafAccessible(aContent, aDoc)
    31   {
    32     // Ignore "CheckboxStateChange" DOM event in lieu of document observer
    33     // state change notification.
    34     mStateFlags |= eIgnoreDOMUIEvent;
    35   }
    37   // nsIAccessible
    38   NS_IMETHOD GetActionName(uint8_t aIndex, nsAString& aName);
    39   NS_IMETHOD DoAction(uint8_t index);
    41   // Accessible
    42   virtual mozilla::a11y::role NativeRole();
    43   virtual uint64_t NativeState();
    45   // ActionAccessible
    46   virtual uint8_t ActionCount();
    48   // Widgets
    49   virtual bool IsWidget() const;
    50 };
    53 /**
    54  * Accessible for HTML input@type="radio" element.
    55  */
    56 class HTMLRadioButtonAccessible : public RadioButtonAccessible
    57 {
    59 public:
    60   HTMLRadioButtonAccessible(nsIContent* aContent, DocAccessible* aDoc) :
    61     RadioButtonAccessible(aContent, aDoc)
    62   {
    63     // Ignore "RadioStateChange" DOM event in lieu of document observer
    64     // state change notification.
    65     mStateFlags |= eIgnoreDOMUIEvent;
    66   }
    68   // Accessible
    69   virtual uint64_t NativeState();
    70   virtual void GetPositionAndSizeInternal(int32_t *aPosInSet,
    71                                           int32_t *aSetSize);
    72 };
    75 /**
    76  * Accessible for HTML input@type="button", @type="submit", @type="image"
    77  * and HTML button elements.
    78  */
    79 class HTMLButtonAccessible : public HyperTextAccessibleWrap
    80 {
    82 public:
    83   enum { eAction_Click = 0 };
    85   HTMLButtonAccessible(nsIContent* aContent, DocAccessible* aDoc);
    87   // nsIAccessible
    88   NS_IMETHOD GetActionName(uint8_t aIndex, nsAString& aName);
    89   NS_IMETHOD DoAction(uint8_t index);
    91   // Accessible
    92   virtual mozilla::a11y::role NativeRole();
    93   virtual uint64_t State();
    94   virtual uint64_t NativeState();
    96   // ActionAccessible
    97   virtual uint8_t ActionCount();
    99   // Widgets
   100   virtual bool IsWidget() const;
   102 protected:
   103   // Accessible
   104   virtual ENameValueFlag NativeName(nsString& aName) MOZ_OVERRIDE;
   105 };
   108 /**
   109  * Accessible for HTML input@type="text", input@type="password", textarea and
   110  * other HTML text controls.
   111  */
   112 class HTMLTextFieldAccessible : public HyperTextAccessibleWrap
   113 {
   115 public:
   116   enum { eAction_Click = 0 };
   118   HTMLTextFieldAccessible(nsIContent* aContent, DocAccessible* aDoc);
   120   NS_DECL_ISUPPORTS_INHERITED
   122   // nsIAccessible
   123   NS_IMETHOD GetActionName(uint8_t aIndex, nsAString& aName);
   124   NS_IMETHOD DoAction(uint8_t index);
   126   // HyperTextAccessible
   127   virtual already_AddRefed<nsIEditor> GetEditor() const;
   129   // Accessible
   130   virtual void Value(nsString& aValue);
   131   virtual void ApplyARIAState(uint64_t* aState) const;
   132   virtual mozilla::a11y::role NativeRole();
   133   virtual uint64_t NativeState();
   134   virtual already_AddRefed<nsIPersistentProperties> NativeAttributes() MOZ_OVERRIDE;
   136   // ActionAccessible
   137   virtual uint8_t ActionCount();
   139   // Widgets
   140   virtual bool IsWidget() const;
   141   virtual Accessible* ContainerWidget() const;
   143 protected:
   144   // Accessible
   145   virtual ENameValueFlag NativeName(nsString& aName) MOZ_OVERRIDE;
   147   /**
   148    * Return a XUL widget element this input is part of.
   149    */
   150   nsIContent* XULWidgetElm() const { return mContent->GetBindingParent(); }
   151 };
   154 /**
   155  * Accessible for input@type="file" element.
   156  */
   157 class HTMLFileInputAccessible : public HyperTextAccessibleWrap
   158 {
   159 public:
   160   HTMLFileInputAccessible(nsIContent* aContent, DocAccessible* aDoc);
   162   // Accessible
   163   virtual mozilla::a11y::role NativeRole();
   164   virtual nsresult HandleAccEvent(AccEvent* aAccEvent);
   165 };
   168 /**
   169  * Used for HTML input@type="number".
   170  */
   171 class HTMLSpinnerAccessible : public AccessibleWrap
   172 {
   173 public:
   174   HTMLSpinnerAccessible(nsIContent* aContent, DocAccessible* aDoc) :
   175     AccessibleWrap(aContent, aDoc)
   176   {
   177     mStateFlags |= eHasNumericValue;
   178 }
   180   // Accessible
   181   virtual mozilla::a11y::role NativeRole() MOZ_OVERRIDE;
   182   virtual void Value(nsString& aValue) MOZ_OVERRIDE;
   184   virtual double MaxValue() const MOZ_OVERRIDE;
   185   virtual double MinValue() const MOZ_OVERRIDE;
   186   virtual double CurValue() const MOZ_OVERRIDE;
   187   virtual double Step() const MOZ_OVERRIDE;
   188   virtual bool SetCurValue(double aValue) MOZ_OVERRIDE;
   189 };
   192 /**
   193   * Used for input@type="range" element.
   194   */
   195 class HTMLRangeAccessible : public LeafAccessible
   196 {
   197 public:
   198   HTMLRangeAccessible(nsIContent* aContent, DocAccessible* aDoc) :
   199     LeafAccessible(aContent, aDoc)
   200   {
   201     mStateFlags |= eHasNumericValue;
   202   }
   204   // Accessible
   205   virtual void Value(nsString& aValue);
   206   virtual mozilla::a11y::role NativeRole();
   208   // Value
   209   virtual double MaxValue() const MOZ_OVERRIDE;
   210   virtual double MinValue() const MOZ_OVERRIDE;
   211   virtual double CurValue() const MOZ_OVERRIDE;
   212   virtual double Step() const MOZ_OVERRIDE;
   213   virtual bool SetCurValue(double aValue) MOZ_OVERRIDE;
   215   // Widgets
   216   virtual bool IsWidget() const;
   217 };
   220 /**
   221  * Accessible for HTML fieldset element.
   222  */
   223 class HTMLGroupboxAccessible : public HyperTextAccessibleWrap
   224 {
   225 public:
   226   HTMLGroupboxAccessible(nsIContent* aContent, DocAccessible* aDoc);
   228   // Accessible
   229   virtual mozilla::a11y::role NativeRole();
   230   virtual Relation RelationByType(RelationType aType) MOZ_OVERRIDE;
   232 protected:
   233   // Accessible
   234   virtual ENameValueFlag NativeName(nsString& aName) MOZ_OVERRIDE;
   236   // HTMLGroupboxAccessible
   237   nsIContent* GetLegend();
   238 };
   241 /**
   242  * Accessible for HTML legend element.
   243  */
   244 class HTMLLegendAccessible : public HyperTextAccessibleWrap
   245 {
   246 public:
   247   HTMLLegendAccessible(nsIContent* aContent, DocAccessible* aDoc);
   249   // Accessible
   250   virtual mozilla::a11y::role NativeRole();
   251   virtual Relation RelationByType(RelationType aType) MOZ_OVERRIDE;
   252 };
   254 /**
   255  * Accessible for HTML5 figure element.
   256  */
   257 class HTMLFigureAccessible : public HyperTextAccessibleWrap
   258 {
   259 public:
   260   HTMLFigureAccessible(nsIContent* aContent, DocAccessible* aDoc);
   262   // Accessible
   263   virtual already_AddRefed<nsIPersistentProperties> NativeAttributes() MOZ_OVERRIDE;
   264   virtual mozilla::a11y::role NativeRole();
   265   virtual Relation RelationByType(RelationType aType) MOZ_OVERRIDE;
   267 protected:
   268   // Accessible
   269   virtual ENameValueFlag NativeName(nsString& aName) MOZ_OVERRIDE;
   271   // HTMLLegendAccessible
   272   nsIContent* Caption() const;
   273 };
   276 /**
   277  * Accessible for HTML5 figcaption element.
   278  */
   279 class HTMLFigcaptionAccessible : public HyperTextAccessibleWrap
   280 {
   281 public:
   282   HTMLFigcaptionAccessible(nsIContent* aContent, DocAccessible* aDoc);
   284   // Accessible
   285   virtual mozilla::a11y::role NativeRole();
   286   virtual Relation RelationByType(RelationType aType) MOZ_OVERRIDE;
   287 };
   289 } // namespace a11y
   290 } // namespace mozilla
   292 #endif

mercurial