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/. */
6 #ifndef mozilla_a11y_XULTabAccessible_h__
7 #define mozilla_a11y_XULTabAccessible_h__
9 // NOTE: alphabetically ordered
10 #include "HyperTextAccessibleWrap.h"
11 #include "XULMenuAccessible.h"
12 #include "XULSelectControlAccessible.h"
18 * An individual tab, xul:tab element.
20 class XULTabAccessible
: public HyperTextAccessibleWrap
{
22 enum { eAction_Switch
= 0 };
24 XULTabAccessible(nsIContent
* aContent
, DocAccessible
* aDoc
);
27 virtual a11y::role
NativeRole() const override
;
28 virtual uint64_t NativeState() const override
;
29 virtual uint64_t NativeInteractiveState() const override
;
30 virtual Relation
RelationByType(RelationType aType
) const override
;
31 virtual void ApplyARIAState(uint64_t* aState
) const override
;
34 virtual bool HasPrimaryAction() const override
;
35 virtual void ActionNameAt(uint8_t aIndex
, nsAString
& aName
) override
;
36 virtual bool DoAction(uint8_t aIndex
) const override
;
40 * A container of tab objects, xul:tabs element.
42 class XULTabsAccessible
: public XULSelectControlAccessible
{
44 XULTabsAccessible(nsIContent
* aContent
, DocAccessible
* aDoc
);
47 virtual void Value(nsString
& aValue
) const override
;
48 virtual a11y::role
NativeRole() const override
;
49 virtual void ApplyARIAState(uint64_t* aState
) const override
;
52 virtual bool HasPrimaryAction() const override
;
55 virtual void SelectedItems(nsTArray
<Accessible
*>* aItems
) override
;
56 virtual uint32_t SelectedItemCount() override
;
57 virtual Accessible
* GetSelectedItem(uint32_t aIndex
) override
;
58 virtual bool IsItemSelected(uint32_t aIndex
) override
;
62 virtual ENameValueFlag
NativeName(nsString
& aName
) const override
;
66 * A container of tab panels, xul:tabpanels element.
68 class XULTabpanelsAccessible
: public AccessibleWrap
{
70 XULTabpanelsAccessible(nsIContent
* aContent
, DocAccessible
* aDoc
)
71 : AccessibleWrap(aContent
, aDoc
) {
72 mType
= eXULTabpanelsType
;
76 virtual a11y::role
NativeRole() const override
;
80 * A tabpanel object, child elements of xul:tabpanels element.
82 * XXX: we need to move the class logic into generic class since
83 * for example we do not create instance of this class for XUL textbox used as
86 class XULTabpanelAccessible
: public AccessibleWrap
{
88 XULTabpanelAccessible(nsIContent
* aContent
, DocAccessible
* aDoc
);
91 virtual a11y::role
NativeRole() const override
;
92 virtual Relation
RelationByType(RelationType aType
) const override
;
96 } // namespace mozilla