tor-browser

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

XULListboxAccessible.h (4264B)


      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/. */
      5 
      6 #ifndef mozilla_a11y_XULListboxAccessible_h__
      7 #define mozilla_a11y_XULListboxAccessible_h__
      8 
      9 #include "BaseAccessibles.h"
     10 #include "mozilla/a11y/TableAccessible.h"
     11 #include "XULMenuAccessible.h"
     12 #include "XULSelectControlAccessible.h"
     13 
     14 namespace mozilla {
     15 namespace a11y {
     16 
     17 /**
     18 * XULColumAccessible are accessible for list and tree columns elements
     19 * (xul:treecols and xul:listheader).
     20 */
     21 class XULColumAccessible : public AccessibleWrap {
     22 public:
     23  XULColumAccessible(nsIContent* aContent, DocAccessible* aDoc);
     24 
     25  // LocalAccessible
     26  virtual a11y::role NativeRole() const override;
     27  virtual uint64_t NativeState() const override;
     28 };
     29 
     30 /**
     31 * XULColumnItemAccessible are accessibles for list and tree column elements
     32 * (xul:treecol).
     33 */
     34 class XULColumnItemAccessible : public LeafAccessible {
     35 public:
     36  XULColumnItemAccessible(nsIContent* aContent, DocAccessible* aDoc);
     37 
     38  // LocalAccessible
     39  virtual a11y::role NativeRole() const override;
     40  virtual uint64_t NativeState() const override;
     41 
     42  // ActionAccessible
     43  virtual bool HasPrimaryAction() const override;
     44  virtual void ActionNameAt(uint8_t aIndex, nsAString& aName) override;
     45 
     46  enum { eAction_Click = 0 };
     47 };
     48 
     49 /*
     50 * A class the represents the XUL Listbox widget.
     51 */
     52 class XULListboxAccessible : public XULSelectControlAccessible,
     53                             public TableAccessible {
     54 public:
     55  XULListboxAccessible(nsIContent* aContent, DocAccessible* aDoc);
     56 
     57  // TableAccessible
     58  virtual uint32_t ColCount() const override;
     59  virtual uint32_t RowCount() override;
     60  virtual LocalAccessible* CellAt(uint32_t aRowIndex,
     61                                  uint32_t aColumnIndex) override;
     62  virtual bool IsColSelected(uint32_t aColIdx) override;
     63  virtual bool IsRowSelected(uint32_t aRowIdx) override;
     64  virtual bool IsCellSelected(uint32_t aRowIdx, uint32_t aColIdx) override;
     65  virtual uint32_t SelectedCellCount() override;
     66  virtual uint32_t SelectedColCount() override;
     67  virtual uint32_t SelectedRowCount() override;
     68  virtual void SelectedCells(nsTArray<Accessible*>* aCells) override;
     69  virtual void SelectedCellIndices(nsTArray<uint32_t>* aCells) override;
     70  virtual void SelectedColIndices(nsTArray<uint32_t>* aCols) override;
     71  virtual void SelectedRowIndices(nsTArray<uint32_t>* aRows) override;
     72  virtual LocalAccessible* AsAccessible() override { return this; }
     73 
     74  // LocalAccessible
     75  virtual TableAccessible* AsTable() override { return this; }
     76  virtual a11y::role NativeRole() const override;
     77  virtual uint64_t NativeState() const override;
     78 
     79  // Widgets
     80  virtual bool IsWidget() const override;
     81  virtual bool IsActiveWidget() const override;
     82  virtual bool AreItemsOperable() const override;
     83 
     84  virtual LocalAccessible* ContainerWidget() const override;
     85 
     86 protected:
     87  virtual ~XULListboxAccessible() {}
     88 
     89  bool IsMulticolumn() const { return ColCount() > 1; }
     90 };
     91 
     92 /**
     93 * Listitems -- used in listboxes
     94 */
     95 class XULListitemAccessible : public XULMenuitemAccessible {
     96 public:
     97  enum { eAction_Click = 0 };
     98 
     99  NS_INLINE_DECL_REFCOUNTING_INHERITED(XULListitemAccessible,
    100                                       XULMenuitemAccessible)
    101 
    102  XULListitemAccessible(nsIContent* aContent, DocAccessible* aDoc);
    103 
    104  // LocalAccessible
    105  virtual EDescriptionValueFlag Description(nsString& aDesc) const override;
    106  virtual a11y::role NativeRole() const override;
    107  virtual uint64_t NativeState() const override;
    108  virtual uint64_t NativeInteractiveState() const override;
    109 
    110  // Actions
    111  virtual void ActionNameAt(uint8_t index, nsAString& aName) override;
    112 
    113  // Widgets
    114  virtual LocalAccessible* ContainerWidget() const override;
    115 
    116 protected:
    117  virtual ~XULListitemAccessible();
    118 
    119  // LocalAccessible
    120  virtual ENameValueFlag NativeName(nsString& aName) const override;
    121 
    122  // XULListitemAccessible
    123 
    124  /**
    125   * Return listbox accessible for the listitem.
    126   */
    127  LocalAccessible* GetListAccessible() const;
    128 
    129 private:
    130  bool mIsCheckbox;
    131 };
    132 
    133 }  // namespace a11y
    134 }  // namespace mozilla
    135 
    136 #endif