/src/mozilla-central/accessible/generic/ApplicationAccessible.h
Line | Count | Source (jump to first uncovered line) |
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 "nsIMutableArray.h" |
14 | | #include "nsIXULAppInfo.h" |
15 | | |
16 | | namespace mozilla { |
17 | | namespace a11y { |
18 | | |
19 | | /** |
20 | | * ApplicationAccessible is for the whole application of Mozilla. |
21 | | * Only one instance of ApplicationAccessible exists for one Mozilla instance. |
22 | | * And this one should be created when Mozilla Startup (if accessibility |
23 | | * feature has been enabled) and destroyed when Mozilla Shutdown. |
24 | | * |
25 | | * All the accessibility objects for toplevel windows are direct children of |
26 | | * the ApplicationAccessible instance. |
27 | | */ |
28 | | |
29 | | class ApplicationAccessible : public AccessibleWrap |
30 | | { |
31 | | public: |
32 | | |
33 | | ApplicationAccessible(); |
34 | | |
35 | | NS_INLINE_DECL_REFCOUNTING_INHERITED(ApplicationAccessible, AccessibleWrap) |
36 | | |
37 | | // Accessible |
38 | | virtual void Shutdown() override; |
39 | | virtual nsIntRect Bounds() const override; |
40 | | virtual nsRect BoundsInAppUnits() const override; |
41 | | virtual already_AddRefed<nsIPersistentProperties> NativeAttributes() override; |
42 | | virtual GroupPos GroupPosition() override; |
43 | | virtual ENameValueFlag Name(nsString& aName) const override; |
44 | | virtual void ApplyARIAState(uint64_t* aState) const override; |
45 | | virtual void Description(nsString& aDescription) override; |
46 | | virtual void Value(nsString& aValue) const override; |
47 | | virtual mozilla::a11y::role NativeRole() const override; |
48 | | virtual uint64_t State() override; |
49 | | virtual uint64_t NativeState() const override; |
50 | | virtual Relation RelationByType(RelationType aType) const override; |
51 | | |
52 | | virtual Accessible* ChildAtPoint(int32_t aX, int32_t aY, |
53 | | EWhichChildAtPoint aWhichChild) override; |
54 | | virtual Accessible* FocusedChild() override; |
55 | | |
56 | | // ActionAccessible |
57 | | virtual KeyBinding AccessKey() const override; |
58 | | |
59 | | // ApplicationAccessible |
60 | | void Init(); |
61 | | |
62 | | void AppName(nsAString& aName) const |
63 | 0 | { |
64 | 0 | MOZ_ASSERT(mAppInfo, "no application info"); |
65 | 0 |
|
66 | 0 | if (mAppInfo) { |
67 | 0 | nsAutoCString cname; |
68 | 0 | mAppInfo->GetName(cname); |
69 | 0 | AppendUTF8toUTF16(cname, aName); |
70 | 0 | } |
71 | 0 | } |
72 | | |
73 | | void AppVersion(nsAString& aVersion) const |
74 | 0 | { |
75 | 0 | MOZ_ASSERT(mAppInfo, "no application info"); |
76 | 0 |
|
77 | 0 | if (mAppInfo) { |
78 | 0 | nsAutoCString cversion; |
79 | 0 | mAppInfo->GetVersion(cversion); |
80 | 0 | AppendUTF8toUTF16(cversion, aVersion); |
81 | 0 | } |
82 | 0 | } |
83 | | |
84 | | void PlatformName(nsAString& aName) const |
85 | 0 | { |
86 | 0 | aName.AssignLiteral("Gecko"); |
87 | 0 | } |
88 | | |
89 | | void PlatformVersion(nsAString& aVersion) const |
90 | 0 | { |
91 | 0 | MOZ_ASSERT(mAppInfo, "no application info"); |
92 | 0 |
|
93 | 0 | if (mAppInfo) { |
94 | 0 | nsAutoCString cversion; |
95 | 0 | mAppInfo->GetPlatformVersion(cversion); |
96 | 0 | AppendUTF8toUTF16(cversion, aVersion); |
97 | 0 | } |
98 | 0 | } |
99 | | |
100 | | protected: |
101 | 0 | virtual ~ApplicationAccessible() {} |
102 | | |
103 | | // Accessible |
104 | | virtual Accessible* GetSiblingAtOffset(int32_t aOffset, |
105 | | nsresult *aError = nullptr) const override; |
106 | | |
107 | | private: |
108 | | nsCOMPtr<nsIXULAppInfo> mAppInfo; |
109 | | }; |
110 | | |
111 | | inline ApplicationAccessible* |
112 | | Accessible::AsApplication() |
113 | 0 | { |
114 | 0 | return IsApplication() ? static_cast<ApplicationAccessible*>(this) : nullptr; |
115 | 0 | } |
116 | | |
117 | | } // namespace a11y |
118 | | } // namespace mozilla |
119 | | |
120 | | #endif |
121 | | |