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/. */
5 #ifndef AccGroupInfo_h_
6 #define AccGroupInfo_h_
8 #include "Accessible-inl.h"
14 * Calculate and store group information.
19 ~AccGroupInfo() { MOZ_COUNT_DTOR(AccGroupInfo
); }
22 * Return 1-based position in the group.
24 uint32_t PosInSet() const { return mPosInSet
; }
27 * Return a number of items in the group.
29 uint32_t SetSize() const { return mSetSize
; }
32 * Return a direct or logical parent of the accessible that this group info is
35 Accessible
* ConceptualParent() const { return mParent
; }
38 * Update group information.
45 static AccGroupInfo
* CreateGroupInfo(Accessible
* aAccessible
)
47 mozilla::a11y::role role
= aAccessible
->Role();
48 if (role
!= mozilla::a11y::roles::ROW
&&
49 role
!= mozilla::a11y::roles::OUTLINEITEM
&&
50 role
!= mozilla::a11y::roles::OPTION
&&
51 role
!= mozilla::a11y::roles::LISTITEM
&&
52 role
!= mozilla::a11y::roles::MENUITEM
&&
53 role
!= mozilla::a11y::roles::COMBOBOX_OPTION
&&
54 role
!= mozilla::a11y::roles::RICH_OPTION
&&
55 role
!= mozilla::a11y::roles::CHECK_RICH_OPTION
&&
56 role
!= mozilla::a11y::roles::PARENT_MENUITEM
&&
57 role
!= mozilla::a11y::roles::CHECK_MENU_ITEM
&&
58 role
!= mozilla::a11y::roles::RADIO_MENU_ITEM
&&
59 role
!= mozilla::a11y::roles::RADIOBUTTON
&&
60 role
!= mozilla::a11y::roles::PAGETAB
)
63 AccGroupInfo
* info
= new AccGroupInfo(aAccessible
, BaseRole(role
));
68 * Return a first item for the given container.
70 static Accessible
* FirstItemOf(Accessible
* aContainer
);
73 * Return next item of the same group to the given item.
75 static Accessible
* NextItemTo(Accessible
* aItem
);
78 AccGroupInfo(Accessible
* aItem
, a11y::role aRole
);
81 AccGroupInfo() MOZ_DELETE
;
82 AccGroupInfo(const AccGroupInfo
&) MOZ_DELETE
;
83 AccGroupInfo
& operator =(const AccGroupInfo
&) MOZ_DELETE
;
85 static mozilla::a11y::role
BaseRole(mozilla::a11y::role aRole
)
87 if (aRole
== mozilla::a11y::roles::CHECK_MENU_ITEM
||
88 aRole
== mozilla::a11y::roles::PARENT_MENUITEM
||
89 aRole
== mozilla::a11y::roles::RADIO_MENU_ITEM
)
90 return mozilla::a11y::roles::MENUITEM
;
92 if (aRole
== mozilla::a11y::roles::CHECK_RICH_OPTION
)
93 return mozilla::a11y::roles::RICH_OPTION
;
99 * Return true if the given parent and child roles should have their node
100 * relations reported.
102 static bool ShouldReportRelations(a11y::role aRole
, a11y::role aParentRole
);
111 } // namespace mozilla