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_XULMenuAccessible_h__
7 : #define mozilla_a11y_XULMenuAccessible_h__
8 :
9 : #include "AccessibleWrap.h"
10 : #include "nsIDOMXULSelectCntrlEl.h"
11 : #include "XULSelectControlAccessible.h"
12 :
13 : namespace mozilla {
14 : namespace a11y {
15 :
16 : /**
17 : * Used for XUL menu, menuitem elements.
18 : */
19 0 : class XULMenuitemAccessible : public AccessibleWrap
20 : {
21 : public:
22 : enum { eAction_Click = 0 };
23 :
24 : XULMenuitemAccessible(nsIContent* aContent, DocAccessible* aDoc);
25 :
26 : // Accessible
27 : virtual void Description(nsString& aDescription) override;
28 : virtual a11y::role NativeRole() override;
29 : virtual uint64_t NativeState() override;
30 : virtual uint64_t NativeInteractiveState() const override;
31 : virtual int32_t GetLevelInternal() 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 : virtual KeyBinding AccessKey() const override;
38 : virtual KeyBinding KeyboardShortcut() const override;
39 :
40 : // Widgets
41 : virtual bool IsActiveWidget() const override;
42 : virtual bool AreItemsOperable() const override;
43 : virtual Accessible* ContainerWidget() const override;
44 :
45 : protected:
46 : // Accessible
47 : virtual ENameValueFlag NativeName(nsString& aName) override;
48 : };
49 :
50 : /**
51 : * Used for XUL menuseparator element.
52 : */
53 0 : class XULMenuSeparatorAccessible : public XULMenuitemAccessible
54 : {
55 : public:
56 : XULMenuSeparatorAccessible(nsIContent* aContent, DocAccessible* aDoc);
57 :
58 : // Accessible
59 : virtual a11y::role NativeRole() override;
60 : virtual uint64_t NativeState() override;
61 :
62 : // ActionAccessible
63 : virtual uint8_t ActionCount() override;
64 : virtual void ActionNameAt(uint8_t aIndex, nsAString& aName) override;
65 : virtual bool DoAction(uint8_t aIndex) override;
66 :
67 : protected:
68 : // Accessible
69 : virtual ENameValueFlag NativeName(nsString& aName) override;
70 : };
71 :
72 :
73 : /**
74 : * Used for XUL menupopup and panel.
75 : */
76 0 : class XULMenupopupAccessible : public XULSelectControlAccessible
77 : {
78 : public:
79 : XULMenupopupAccessible(nsIContent* aContent, DocAccessible* aDoc);
80 :
81 : // Accessible
82 : virtual a11y::role NativeRole() override;
83 : virtual uint64_t NativeState() override;
84 :
85 : // Widgets
86 : virtual bool IsWidget() const override;
87 : virtual bool IsActiveWidget() const override;
88 : virtual bool AreItemsOperable() const override;
89 :
90 : virtual Accessible* ContainerWidget() const override;
91 :
92 : protected:
93 : // Accessible
94 : virtual ENameValueFlag NativeName(nsString& aName) override;
95 : };
96 :
97 : /**
98 : * Used for XUL menubar element.
99 : */
100 0 : class XULMenubarAccessible : public AccessibleWrap
101 : {
102 : public:
103 : XULMenubarAccessible(nsIContent* aContent, DocAccessible* aDoc);
104 :
105 : // Accessible
106 : virtual a11y::role NativeRole() override;
107 :
108 : // Widget
109 : virtual bool IsActiveWidget() const override;
110 : virtual bool AreItemsOperable() const override;
111 : virtual Accessible* CurrentItem() override;
112 : virtual void SetCurrentItem(Accessible* aItem) override;
113 :
114 : protected:
115 : // Accessible
116 : virtual ENameValueFlag NativeName(nsString& aName) override;
117 : };
118 :
119 : } // namespace a11y
120 : } // namespace mozilla
121 :
122 : #endif
|