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