accessible/src/xul/XULListboxAccessible.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: 4; 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_XULListboxAccessible_h__
     7 #define mozilla_a11y_XULListboxAccessible_h__
     9 #include "BaseAccessibles.h"
    10 #include "nsIAccessibleTable.h"
    11 #include "TableAccessible.h"
    12 #include "TableCellAccessible.h"
    13 #include "xpcAccessibleTable.h"
    14 #include "xpcAccessibleTableCell.h"
    15 #include "XULMenuAccessible.h"
    16 #include "XULSelectControlAccessible.h"
    18 class nsIWeakReference;
    20 namespace mozilla {
    21 namespace a11y {
    23 /**
    24  * XULColumAccessible are accessible for list and tree columns elements
    25  * (xul:treecols and xul:listcols).
    26  */
    27 class XULColumAccessible : public AccessibleWrap
    28 {
    29 public:
    30   XULColumAccessible(nsIContent* aContent, DocAccessible* aDoc);
    32   // Accessible
    33   virtual a11y::role NativeRole();
    34   virtual uint64_t NativeState();
    35 };
    37 /**
    38  * XULColumnItemAccessible are accessibles for list and tree column elements
    39  * (xul:listcol and xul:treecol).
    40  */
    41 class XULColumnItemAccessible : public LeafAccessible
    42 {
    43 public:
    44   XULColumnItemAccessible(nsIContent* aContent, DocAccessible* aDoc);
    46   // nsIAccessible
    47   NS_IMETHOD GetActionName(uint8_t aIndex, nsAString& aName);
    48   NS_IMETHOD DoAction(uint8_t aIndex);
    50   // Accessible
    51   virtual a11y::role NativeRole();
    52   virtual uint64_t NativeState();
    54   // ActionAccessible
    55   virtual uint8_t ActionCount();
    57   enum { eAction_Click = 0 };
    58 };
    60 /*
    61  * A class the represents the XUL Listbox widget.
    62  */
    63 class XULListboxAccessible : public XULSelectControlAccessible,
    64                              public xpcAccessibleTable,
    65                              public nsIAccessibleTable,
    66                              public TableAccessible
    67 {
    68 public:
    69   XULListboxAccessible(nsIContent* aContent, DocAccessible* aDoc);
    70   virtual ~XULListboxAccessible() {}
    72   NS_DECL_ISUPPORTS_INHERITED
    74   // nsIAccessibleTable
    75   NS_FORWARD_NSIACCESSIBLETABLE(xpcAccessibleTable::)
    77   // TableAccessible
    78   virtual uint32_t ColCount();
    79   virtual uint32_t RowCount();
    80   virtual Accessible* CellAt(uint32_t aRowIndex, uint32_t aColumnIndex);
    81   virtual bool IsColSelected(uint32_t aColIdx);
    82   virtual bool IsRowSelected(uint32_t aRowIdx);
    83   virtual bool IsCellSelected(uint32_t aRowIdx, uint32_t aColIdx);
    84   virtual uint32_t SelectedCellCount();
    85   virtual uint32_t SelectedColCount();
    86   virtual uint32_t SelectedRowCount();
    87   virtual void SelectedCells(nsTArray<Accessible*>* aCells);
    88   virtual void SelectedCellIndices(nsTArray<uint32_t>* aCells);
    89   virtual void SelectedColIndices(nsTArray<uint32_t>* aCols);
    90   virtual void SelectedRowIndices(nsTArray<uint32_t>* aRows);
    91   virtual void SelectRow(uint32_t aRowIdx);
    92   virtual void UnselectRow(uint32_t aRowIdx);
    93   virtual Accessible* AsAccessible() { return this; }
    95   // Accessible
    96   virtual void Shutdown();
    97   virtual void Value(nsString& aValue);
    98   virtual TableAccessible* AsTable() { return this; }
    99   virtual a11y::role NativeRole();
   100   virtual uint64_t NativeState();
   102   // Widgets
   103   virtual bool IsWidget() const;
   104   virtual bool IsActiveWidget() const;
   105   virtual bool AreItemsOperable() const;
   107   virtual Accessible* ContainerWidget() const;
   109 protected:
   110   bool IsMulticolumn();
   111 };
   113 /**
   114   * Listitems -- used in listboxes
   115   */
   116 class XULListitemAccessible : public XULMenuitemAccessible
   117 {
   118 public:
   119   enum { eAction_Click = 0 };
   121   NS_DECL_ISUPPORTS_INHERITED
   123   XULListitemAccessible(nsIContent* aContent, DocAccessible* aDoc);
   124   virtual ~XULListitemAccessible() {}
   126   // nsIAccessible
   127   NS_IMETHOD GetActionName(uint8_t index, nsAString& aName);
   128   // Don't use XUL menuitems's description attribute
   130   // Accessible
   131   virtual void Description(nsString& aDesc);
   132   virtual a11y::role NativeRole();
   133   virtual uint64_t NativeState();
   134   virtual uint64_t NativeInteractiveState() const;
   135   virtual bool CanHaveAnonChildren();
   137   // Widgets
   138   virtual Accessible* ContainerWidget() const;
   140 protected:
   141   // Accessible
   142   virtual ENameValueFlag NativeName(nsString& aName) MOZ_OVERRIDE;
   144   // XULListitemAccessible
   146   /**
   147    * Return listbox accessible for the listitem.
   148    */
   149   Accessible* GetListAccessible();
   151 private:
   152   bool mIsCheckbox;
   153 };
   155 /**
   156  * Class represents xul:listcell.
   157  */
   158 class XULListCellAccessible : public HyperTextAccessibleWrap,
   159                               public nsIAccessibleTableCell,
   160                               public TableCellAccessible,
   161                               public xpcAccessibleTableCell
   162 {
   163 public:
   164   XULListCellAccessible(nsIContent* aContent, DocAccessible* aDoc);
   166   // nsISupports
   167   NS_DECL_ISUPPORTS_INHERITED
   169   // nsIAccessibleTableCell
   170   NS_FORWARD_NSIACCESSIBLETABLECELL(xpcAccessibleTableCell::)
   172   // Accessible
   173   virtual TableCellAccessible* AsTableCell() { return this; }
   174   virtual void Shutdown();
   175   virtual already_AddRefed<nsIPersistentProperties> NativeAttributes() MOZ_OVERRIDE;
   176   virtual a11y::role NativeRole();
   178   // TableCellAccessible
   179   virtual TableAccessible* Table() const MOZ_OVERRIDE;
   180   virtual uint32_t ColIdx() const MOZ_OVERRIDE;
   181   virtual uint32_t RowIdx() const MOZ_OVERRIDE;
   182   virtual void ColHeaderCells(nsTArray<Accessible*>* aHeaderCells) MOZ_OVERRIDE;
   183   virtual bool Selected() MOZ_OVERRIDE;
   184 };
   186 } // namespace a11y
   187 } // namespace mozilla
   189 #endif

mercurial