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