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_XULMenuAccessible_h__
7 #define mozilla_a11y_XULMenuAccessible_h__
9 #include "AccessibleWrap.h"
10 #include "XULSelectControlAccessible.h"
16 * Used for XUL menu, menuitem elements.
18 class XULMenuitemAccessible
: public AccessibleWrap
{
20 enum { eAction_Click
= 0 };
22 XULMenuitemAccessible(nsIContent
* aContent
, DocAccessible
* aDoc
);
25 virtual void Description(nsString
& aDescription
) const override
;
26 virtual a11y::role
NativeRole() const override
;
27 virtual uint64_t NativeState() const override
;
28 virtual uint64_t NativeInteractiveState() const override
;
31 virtual bool HasPrimaryAction() const override
;
32 virtual void ActionNameAt(uint8_t aIndex
, nsAString
& aName
) override
;
33 virtual KeyBinding
AccessKey() const override
;
34 virtual KeyBinding
KeyboardShortcut() const override
;
37 virtual bool IsActiveWidget() const override
;
38 virtual bool AreItemsOperable() const override
;
39 virtual LocalAccessible
* ContainerWidget() const override
;
43 virtual ENameValueFlag
NativeName(nsString
& aName
) const override
;
44 virtual int32_t GetLevel(bool aFast
) const override
;
48 * Used for XUL menuseparator element.
50 class XULMenuSeparatorAccessible
: public XULMenuitemAccessible
{
52 XULMenuSeparatorAccessible(nsIContent
* aContent
, DocAccessible
* aDoc
);
55 virtual a11y::role
NativeRole() const override
;
56 virtual uint64_t NativeState() const override
;
59 virtual bool HasPrimaryAction() const override
;
63 virtual ENameValueFlag
NativeName(nsString
& aName
) const override
;
67 * Used for XUL menupopup and panel.
69 class XULMenupopupAccessible
: public XULSelectControlAccessible
{
71 XULMenupopupAccessible(nsIContent
* aContent
, DocAccessible
* aDoc
);
74 virtual a11y::role
NativeRole() const override
;
75 virtual uint64_t NativeState() const override
;
78 virtual bool IsWidget() const override
;
79 virtual bool IsActiveWidget() const override
;
80 virtual bool AreItemsOperable() const override
;
82 virtual LocalAccessible
* ContainerWidget() const override
;
86 virtual ENameValueFlag
NativeName(nsString
& aName
) const override
;
90 * Used for XUL menubar element.
92 class XULMenubarAccessible
: public AccessibleWrap
{
94 XULMenubarAccessible(nsIContent
* aContent
, DocAccessible
* aDoc
);
97 virtual a11y::role
NativeRole() const override
;
100 virtual bool IsActiveWidget() const override
;
101 virtual bool AreItemsOperable() const override
;
102 virtual LocalAccessible
* CurrentItem() const override
;
103 virtual void SetCurrentItem(const LocalAccessible
* aItem
) override
;
107 virtual ENameValueFlag
NativeName(nsString
& aName
) const override
;
111 } // namespace mozilla