ApplicationAccessible.h (3391B)
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 2 /* vim:expandtab:shiftwidth=2:tabstop=2: 3 */ 4 /* This Source Code Form is subject to the terms of the Mozilla Public 5 * License, v. 2.0. If a copy of the MPL was not distributed with this 6 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 7 8 #ifndef mozilla_a11y_ApplicationAccessible_h__ 9 #define mozilla_a11y_ApplicationAccessible_h__ 10 11 #include "AccessibleWrap.h" 12 13 #include "nsIXULAppInfo.h" 14 15 namespace mozilla { 16 namespace a11y { 17 18 /** 19 * ApplicationAccessible is for the whole application of Mozilla. 20 * Only one instance of ApplicationAccessible exists for one Mozilla instance. 21 * And this one should be created when Mozilla Startup (if accessibility 22 * feature has been enabled) and destroyed when Mozilla Shutdown. 23 * 24 * All the accessibility objects for toplevel windows are direct children of 25 * the ApplicationAccessible instance. 26 */ 27 28 class ApplicationAccessible : public AccessibleWrap { 29 public: 30 ApplicationAccessible(); 31 32 NS_INLINE_DECL_REFCOUNTING_INHERITED(ApplicationAccessible, AccessibleWrap) 33 34 // LocalAccessible 35 virtual void Shutdown() override; 36 virtual LayoutDeviceIntRect Bounds() const override; 37 virtual nsRect BoundsInAppUnits() const override; 38 virtual already_AddRefed<AccAttributes> NativeAttributes() override; 39 virtual GroupPos GroupPosition() override; 40 virtual ENameValueFlag DirectName(nsString& aName) const override; 41 virtual void ApplyARIAState(uint64_t* aState) const override; 42 virtual EDescriptionValueFlag Description( 43 nsString& aDescription) const override; 44 virtual void Value(nsString& aValue) const override; 45 virtual mozilla::a11y::role NativeRole() const override; 46 virtual uint64_t State() override; 47 virtual uint64_t NativeState() const override; 48 virtual Relation RelationByType(RelationType aType) const override; 49 50 virtual LocalAccessible* LocalChildAtPoint( 51 int32_t aX, int32_t aY, EWhichChildAtPoint aWhichChild) override; 52 virtual Accessible* FocusedChild() override; 53 54 // ActionAccessible 55 virtual KeyBinding AccessKey() const override; 56 57 // ApplicationAccessible 58 void Init(); 59 60 void AppName(nsAString& aName) const { 61 MOZ_ASSERT(mAppInfo, "no application info"); 62 63 if (mAppInfo) { 64 nsAutoCString cname; 65 mAppInfo->GetName(cname); 66 AppendUTF8toUTF16(cname, aName); 67 } 68 } 69 70 void AppVersion(nsAString& aVersion) const { 71 MOZ_ASSERT(mAppInfo, "no application info"); 72 73 if (mAppInfo) { 74 nsAutoCString cversion; 75 mAppInfo->GetVersion(cversion); 76 AppendUTF8toUTF16(cversion, aVersion); 77 } 78 } 79 80 void PlatformName(nsAString& aName) const { aName.AssignLiteral("Gecko"); } 81 82 void PlatformVersion(nsAString& aVersion) const { 83 MOZ_ASSERT(mAppInfo, "no application info"); 84 85 if (mAppInfo) { 86 nsAutoCString cversion; 87 mAppInfo->GetPlatformVersion(cversion); 88 AppendUTF8toUTF16(cversion, aVersion); 89 } 90 } 91 92 protected: 93 virtual ~ApplicationAccessible() {} 94 95 // LocalAccessible 96 virtual LocalAccessible* GetSiblingAtOffset( 97 int32_t aOffset, nsresult* aError = nullptr) const override; 98 99 private: 100 nsCOMPtr<nsIXULAppInfo> mAppInfo; 101 }; 102 103 inline ApplicationAccessible* LocalAccessible::AsApplication() { 104 return IsApplication() ? static_cast<ApplicationAccessible*>(this) : nullptr; 105 } 106 107 } // namespace a11y 108 } // namespace mozilla 109 110 #endif