LCOV - code coverage report
Current view: top level - accessible/xul - XULTreeGridAccessible.h (source / functions) Hit Total Coverage
Test: output.info Lines: 0 10 0.0 %
Date: 2017-07-14 16:53:18 Functions: 0 13 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       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_XULTreeGridAccessible_h__
       7             : #define mozilla_a11y_XULTreeGridAccessible_h__
       8             : 
       9             : #include "XULTreeAccessible.h"
      10             : #include "TableAccessible.h"
      11             : #include "TableCellAccessible.h"
      12             : #include "xpcAccessibleTable.h"
      13             : #include "xpcAccessibleTableCell.h"
      14             : 
      15             : namespace mozilla {
      16             : namespace a11y {
      17             : 
      18             : class XULTreeGridCellAccessible;
      19             : 
      20             : /**
      21             :  * Represents accessible for XUL tree in the case when it has multiple columns.
      22             :  */
      23             : class XULTreeGridAccessible : public XULTreeAccessible,
      24             :                               public TableAccessible
      25             : {
      26             : public:
      27           0 :   XULTreeGridAccessible(nsIContent* aContent, DocAccessible* aDoc,
      28           0 :                         nsTreeBodyFrame* aTreeFrame) :
      29           0 :     XULTreeAccessible(aContent, aDoc, aTreeFrame)
      30           0 :     { mGenericTypes |= eTable; }
      31             : 
      32             :   // TableAccessible
      33             :   virtual uint32_t ColCount() override;
      34             :   virtual uint32_t RowCount() override;
      35             :   virtual Accessible* CellAt(uint32_t aRowIndex, uint32_t aColumnIndex) override;
      36             :   virtual void ColDescription(uint32_t aColIdx, nsString& aDescription) override;
      37             :   virtual bool IsColSelected(uint32_t aColIdx) override;
      38             :   virtual bool IsRowSelected(uint32_t aRowIdx) override;
      39             :   virtual bool IsCellSelected(uint32_t aRowIdx, uint32_t aColIdx) override;
      40             :   virtual uint32_t SelectedCellCount() override;
      41             :   virtual uint32_t SelectedColCount() override;
      42             :   virtual uint32_t SelectedRowCount() override;
      43             :   virtual void SelectedCells(nsTArray<Accessible*>* aCells) override;
      44             :   virtual void SelectedCellIndices(nsTArray<uint32_t>* aCells) override;
      45             :   virtual void SelectedColIndices(nsTArray<uint32_t>* aCols) override;
      46             :   virtual void SelectedRowIndices(nsTArray<uint32_t>* aRows) override;
      47             :   virtual void SelectRow(uint32_t aRowIdx) override;
      48             :   virtual void UnselectRow(uint32_t aRowIdx) override;
      49           0 :   virtual Accessible* AsAccessible() override { return this; }
      50             : 
      51             :   // Accessible
      52           0 :   virtual TableAccessible* AsTable() override { return this; }
      53             :   virtual a11y::role NativeRole() override;
      54             : 
      55             : protected:
      56             :   virtual ~XULTreeGridAccessible();
      57             : 
      58             :   // XULTreeAccessible
      59             :   virtual already_AddRefed<Accessible>
      60             :     CreateTreeItemAccessible(int32_t aRow) const override;
      61             : };
      62             : 
      63             : 
      64             : /**
      65             :  * Represents accessible for XUL tree item in the case when XUL tree has
      66             :  * multiple columns.
      67             :  */
      68             : class XULTreeGridRowAccessible final : public XULTreeItemAccessibleBase
      69             : {
      70             : public:
      71             :   using Accessible::GetChildAt;
      72             : 
      73             :   XULTreeGridRowAccessible(nsIContent* aContent, DocAccessible* aDoc,
      74             :                            Accessible* aParent, nsITreeBoxObject* aTree,
      75             :                            nsITreeView* aTreeView, int32_t aRow);
      76             : 
      77             :   // nsISupports and cycle collection
      78             :   NS_DECL_ISUPPORTS_INHERITED
      79           0 :   NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(XULTreeGridRowAccessible,
      80             :                                            XULTreeItemAccessibleBase)
      81             : 
      82             :   // Accessible
      83             :   virtual void Shutdown() override;
      84             :   virtual a11y::role NativeRole() override;
      85             :   virtual ENameValueFlag Name(nsString& aName) override;
      86             :   virtual Accessible* ChildAtPoint(int32_t aX, int32_t aY,
      87             :                                    EWhichChildAtPoint aWhichChild) override;
      88             : 
      89             :   virtual Accessible* GetChildAt(uint32_t aIndex) const override;
      90             :   virtual uint32_t ChildCount() const override;
      91             : 
      92             :   // XULTreeItemAccessibleBase
      93             :   virtual XULTreeGridCellAccessible* GetCellAccessible(nsITreeColumn* aColumn)
      94             :     const override final;
      95             :   virtual void RowInvalidated(int32_t aStartColIdx, int32_t aEndColIdx) override;
      96             : 
      97             : protected:
      98             :   virtual ~XULTreeGridRowAccessible();
      99             : 
     100             :   // XULTreeItemAccessibleBase
     101             :   mutable nsRefPtrHashtable<nsPtrHashKey<const void>, XULTreeGridCellAccessible>
     102             :     mAccessibleCache;
     103             : };
     104             : 
     105             : 
     106             : /**
     107             :  * Represents an accessible for XUL tree cell in the case when XUL tree has
     108             :  * multiple columns.
     109             :  */
     110             : 
     111             : class XULTreeGridCellAccessible : public LeafAccessible,
     112             :                                   public TableCellAccessible
     113             : {
     114             : public:
     115             : 
     116             :   XULTreeGridCellAccessible(nsIContent* aContent, DocAccessible* aDoc,
     117             :                             XULTreeGridRowAccessible* aRowAcc,
     118             :                             nsITreeBoxObject* aTree, nsITreeView* aTreeView,
     119             :                             int32_t aRow, nsITreeColumn* aColumn);
     120             : 
     121             :   // nsISupports
     122             :   NS_DECL_ISUPPORTS_INHERITED
     123           0 :   NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(XULTreeGridCellAccessible,
     124             :                                            LeafAccessible)
     125             : 
     126             :   // Accessible
     127             :   virtual void Shutdown() override;
     128           0 :   virtual TableCellAccessible* AsTableCell() override { return this; }
     129             :   virtual nsIntRect Bounds() const override;
     130             :   virtual ENameValueFlag Name(nsString& aName) override;
     131             :   virtual Accessible* FocusedChild() override;
     132             :   virtual already_AddRefed<nsIPersistentProperties> NativeAttributes() override;
     133             :   virtual int32_t IndexInParent() const override;
     134             :   virtual Relation RelationByType(RelationType aType) override;
     135             :   virtual a11y::role NativeRole() override;
     136             :   virtual uint64_t NativeState() override;
     137             :   virtual uint64_t NativeInteractiveState() const override;
     138             : 
     139             :   // ActionAccessible
     140             :   virtual uint8_t ActionCount() override;
     141             :   virtual void ActionNameAt(uint8_t aIndex, nsAString& aName) override;
     142             :   virtual bool DoAction(uint8_t aIndex) override;
     143             : 
     144             :   // TableCellAccessible
     145             :   virtual TableAccessible* Table() const override;
     146             :   virtual uint32_t ColIdx() const override;
     147             :   virtual uint32_t RowIdx() const override;
     148             :   virtual void ColHeaderCells(nsTArray<Accessible*>* aHeaderCells) override;
     149           0 :   virtual void RowHeaderCells(nsTArray<Accessible*>* aCells) override { }
     150             :   virtual bool Selected() override;
     151             : 
     152             :   /**
     153             :    * Fire name or state change event if the accessible text or value has been
     154             :    * changed.
     155             :    * @return true if name has changed
     156             :    */
     157             :   bool CellInvalidated();
     158             : 
     159             : protected:
     160             :   virtual ~XULTreeGridCellAccessible();
     161             : 
     162             :   // Accessible
     163             :   virtual Accessible* GetSiblingAtOffset(int32_t aOffset,
     164             :                                          nsresult* aError = nullptr) const override;
     165             :   virtual void DispatchClickEvent(nsIContent* aContent, uint32_t aActionIndex) override;
     166             : 
     167             :   // XULTreeGridCellAccessible
     168             : 
     169             :   /**
     170             :    * Return true if value of cell can be modified.
     171             :    */
     172             :   bool IsEditable() const;
     173             : 
     174             :   enum { eAction_Click = 0 };
     175             : 
     176             :   nsCOMPtr<nsITreeBoxObject> mTree;
     177             :   nsITreeView* mTreeView;
     178             : 
     179             :   int32_t mRow;
     180             :   nsCOMPtr<nsITreeColumn> mColumn;
     181             : 
     182             :   nsString mCachedTextEquiv;
     183             : };
     184             : 
     185             : } // namespace a11y
     186             : } // namespace mozilla
     187             : 
     188             : #endif

Generated by: LCOV version 1.13