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

          Line data    Source code
       1             : /* This Source Code Form is subject to the terms of the Mozilla Public
       2             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       3             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
       4             : 
       5             : #ifndef AccGroupInfo_h_
       6             : #define AccGroupInfo_h_
       7             : 
       8             : #include "Accessible-inl.h"
       9             : 
      10             : namespace mozilla {
      11             : namespace a11y {
      12             : 
      13             : /**
      14             :  * Calculate and store group information.
      15             :  */
      16             : class AccGroupInfo
      17             : {
      18             : public:
      19           0 :   ~AccGroupInfo() { MOZ_COUNT_DTOR(AccGroupInfo); }
      20             : 
      21             :   /**
      22             :    * Return 1-based position in the group.
      23             :    */
      24           0 :   uint32_t PosInSet() const { return mPosInSet; }
      25             : 
      26             :   /**
      27             :    * Return a number of items in the group.
      28             :    */
      29           0 :   uint32_t SetSize() const { return mSetSize; }
      30             : 
      31             :   /**
      32             :    * Return a direct or logical parent of the accessible that this group info is
      33             :    * created for.
      34             :    */
      35           0 :   Accessible* ConceptualParent() const { return mParent; }
      36             : 
      37             :   /**
      38             :    * Update group information.
      39             :    */
      40             :   void Update();
      41             : 
      42             :   /**
      43             :    * Create group info.
      44             :    */
      45           0 :   static AccGroupInfo* CreateGroupInfo(Accessible* aAccessible)
      46             :   {
      47           0 :     mozilla::a11y::role role = aAccessible->Role();
      48           0 :     if (role != mozilla::a11y::roles::ROW &&
      49           0 :         role != mozilla::a11y::roles::OUTLINEITEM &&
      50           0 :         role != mozilla::a11y::roles::OPTION &&
      51           0 :         role != mozilla::a11y::roles::LISTITEM &&
      52           0 :         role != mozilla::a11y::roles::MENUITEM &&
      53           0 :         role != mozilla::a11y::roles::COMBOBOX_OPTION &&
      54           0 :         role != mozilla::a11y::roles::RICH_OPTION &&
      55           0 :         role != mozilla::a11y::roles::CHECK_RICH_OPTION &&
      56           0 :         role != mozilla::a11y::roles::PARENT_MENUITEM &&
      57           0 :         role != mozilla::a11y::roles::CHECK_MENU_ITEM &&
      58           0 :         role != mozilla::a11y::roles::RADIO_MENU_ITEM &&
      59           0 :         role != mozilla::a11y::roles::RADIOBUTTON &&
      60             :         role != mozilla::a11y::roles::PAGETAB)
      61           0 :       return nullptr;
      62             : 
      63           0 :     AccGroupInfo* info = new AccGroupInfo(aAccessible, BaseRole(role));
      64           0 :     return info;
      65             :   }
      66             : 
      67             :   /**
      68             :    * Return a first item for the given container.
      69             :    */
      70             :   static Accessible* FirstItemOf(Accessible* aContainer);
      71             : 
      72             :   /**
      73             :    * Return next item of the same group to the given item.
      74             :    */
      75             :   static Accessible* NextItemTo(Accessible* aItem);
      76             : 
      77             : protected:
      78             :   AccGroupInfo(Accessible* aItem, a11y::role aRole);
      79             : 
      80             : private:
      81             :   AccGroupInfo() = delete;
      82             :   AccGroupInfo(const AccGroupInfo&) = delete;
      83             :   AccGroupInfo& operator =(const AccGroupInfo&) = delete;
      84             : 
      85           0 :   static mozilla::a11y::role BaseRole(mozilla::a11y::role aRole)
      86             :   {
      87           0 :     if (aRole == mozilla::a11y::roles::CHECK_MENU_ITEM ||
      88           0 :         aRole == mozilla::a11y::roles::PARENT_MENUITEM ||
      89             :         aRole == mozilla::a11y::roles::RADIO_MENU_ITEM)
      90           0 :       return mozilla::a11y::roles::MENUITEM;
      91             : 
      92           0 :     if (aRole == mozilla::a11y::roles::CHECK_RICH_OPTION)
      93           0 :       return mozilla::a11y::roles::RICH_OPTION;
      94             : 
      95           0 :     return aRole;
      96             :   }
      97             : 
      98             :   /**
      99             :    * Return true if the given parent and child roles should have their node
     100             :    * relations reported.
     101             :    */
     102             :   static bool ShouldReportRelations(a11y::role aRole, a11y::role aParentRole);
     103             : 
     104             :   uint32_t mPosInSet;
     105             :   uint32_t mSetSize;
     106             :   Accessible* mParent;
     107             :   Accessible* mItem;
     108             :   a11y::role mRole;
     109             : };
     110             : 
     111             : } // namespace mozilla
     112             : } // namespace a11y
     113             : 
     114             : #endif

Generated by: LCOV version 1.13