Coverage Report

Created: 2018-09-25 14:53

/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