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 class XULTabAccessible : public HyperTextAccessibleWrap { 21 public: 22 enum { eAction_Switch = 0 }; 23 24 XULTabAccessible(nsIContent* aContent, DocAccessible* aDoc); 25 26 // LocalAccessible 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; 32 33 // ActionAccessible 34 virtual uint8_t ActionCount() const override; 35 virtual void ActionNameAt(uint8_t aIndex, nsAString& aName) override; 36 virtual bool DoAction(uint8_t aIndex) const override; 37 }; 38 39 /** 40 * A container of tab objects, xul:tabs element. 41 */ 42 class XULTabsAccessible : public XULSelectControlAccessible { 43 public: 44 XULTabsAccessible(nsIContent* aContent, DocAccessible* aDoc); 45 46 // LocalAccessible 47 virtual void Value(nsString& aValue) const override; 48 virtual a11y::role NativeRole() const override; 49 virtual void ApplyARIAState(uint64_t* aState) const override; 50 51 // ActionAccessible 52 virtual uint8_t ActionCount() const override; 53 54 // SelectAccessible 55 virtual void SelectedItems(nsTArray<LocalAccessible*>* aItems) override; 56 virtual uint32_t SelectedItemCount() override; 57 virtual LocalAccessible* GetSelectedItem(uint32_t aIndex) override; 58 virtual bool IsItemSelected(uint32_t aIndex) override; 59 60 protected: 61 // LocalAccessible 62 virtual ENameValueFlag NativeName(nsString& aName) const override; 63 }; 64 65 /** 66 * A container of tab panels, xul:tabpanels element. 67 */ 68 class XULTabpanelsAccessible : public AccessibleWrap { 69 public: XULTabpanelsAccessible(nsIContent * aContent,DocAccessible * aDoc)70 XULTabpanelsAccessible(nsIContent* aContent, DocAccessible* aDoc) 71 : AccessibleWrap(aContent, aDoc) { 72 mType = eXULTabpanelsType; 73 } 74 75 // LocalAccessible 76 virtual a11y::role NativeRole() const override; 77 }; 78 79 /** 80 * A tabpanel object, child elements of xul:tabpanels element. 81 * 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 84 * a tabpanel. 85 */ 86 class XULTabpanelAccessible : public AccessibleWrap { 87 public: 88 XULTabpanelAccessible(nsIContent* aContent, DocAccessible* aDoc); 89 90 // LocalAccessible 91 virtual a11y::role NativeRole() const override; 92 virtual Relation RelationByType(RelationType aType) const override; 93 }; 94 95 } // namespace a11y 96 } // namespace mozilla 97 98 #endif 99