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_XULTabAccessible_h__
7 : #define mozilla_a11y_XULTabAccessible_h__
8 :
9 : // NOTE: alphabetically ordered
10 : #include "HyperTextAccessibleWrap.h"
11 : #include "XULMenuAccessible.h"
12 : #include "XULSelectControlAccessible.h"
13 :
14 : namespace mozilla {
15 : namespace a11y {
16 :
17 : /**
18 : * An individual tab, xul:tab element.
19 : */
20 0 : class XULTabAccessible : public HyperTextAccessibleWrap
21 : {
22 : public:
23 : enum { eAction_Switch = 0 };
24 :
25 : XULTabAccessible(nsIContent* aContent, DocAccessible* aDoc);
26 :
27 : // Accessible
28 : virtual a11y::role NativeRole() override;
29 : virtual uint64_t NativeState() override;
30 : virtual uint64_t NativeInteractiveState() const override;
31 : virtual Relation RelationByType(RelationType aType) override;
32 :
33 : // ActionAccessible
34 : virtual uint8_t ActionCount() override;
35 : virtual void ActionNameAt(uint8_t aIndex, nsAString& aName) override;
36 : virtual bool DoAction(uint8_t aIndex) override;
37 : };
38 :
39 :
40 : /**
41 : * A container of tab objects, xul:tabs element.
42 : */
43 0 : class XULTabsAccessible : public XULSelectControlAccessible
44 : {
45 : public:
46 : XULTabsAccessible(nsIContent* aContent, DocAccessible* aDoc);
47 :
48 : // Accessible
49 : virtual void Value(nsString& aValue) override;
50 : virtual a11y::role NativeRole() override;
51 :
52 : // ActionAccessible
53 : virtual uint8_t ActionCount() override;
54 :
55 : protected:
56 : // Accessible
57 : virtual ENameValueFlag NativeName(nsString& aName) override;
58 : };
59 :
60 :
61 : /**
62 : * A container of tab panels, xul:tabpanels element.
63 : */
64 0 : class XULTabpanelsAccessible : public AccessibleWrap
65 : {
66 : public:
67 0 : XULTabpanelsAccessible(nsIContent* aContent, DocAccessible* aDoc) :
68 0 : AccessibleWrap(aContent, aDoc)
69 0 : { mType = eXULTabpanelsType; }
70 :
71 : // Accessible
72 : virtual a11y::role NativeRole() override;
73 : };
74 :
75 :
76 : /**
77 : * A tabpanel object, child elements of xul:tabpanels element.
78 : *
79 : * XXX: we need to move the class logic into generic class since
80 : * for example we do not create instance of this class for XUL textbox used as
81 : * a tabpanel.
82 : */
83 0 : class XULTabpanelAccessible : public AccessibleWrap
84 : {
85 : public:
86 : XULTabpanelAccessible(nsIContent* aContent, DocAccessible* aDoc);
87 :
88 : // Accessible
89 : virtual a11y::role NativeRole() override;
90 : virtual Relation RelationByType(RelationType aType) override;
91 : };
92 :
93 : } // namespace a11y
94 : } // namespace mozilla
95 :
96 : #endif
97 :
|