Coverage Report

Created: 2018-09-25 14:53

/src/mozilla-central/accessible/xul/XULElementAccessibles.h
Line
Count
Source (jump to first uncovered line)
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_XULElementAccessibles_h__
7
#define mozilla_a11y_XULElementAccessibles_h__
8
9
#include "HyperTextAccessibleWrap.h"
10
#include "TextLeafAccessibleWrap.h"
11
12
namespace mozilla {
13
namespace a11y {
14
15
class XULLabelTextLeafAccessible;
16
17
/**
18
 * Used for XUL description and label elements.
19
 */
20
class XULLabelAccessible : public HyperTextAccessibleWrap
21
{
22
public:
23
  XULLabelAccessible(nsIContent* aContent, DocAccessible* aDoc);
24
25
  // Accessible
26
  virtual void Shutdown() override;
27
  virtual a11y::role NativeRole() const override;
28
  virtual uint64_t NativeState() const override;
29
  virtual Relation RelationByType(RelationType aType) const override;
30
31
  void UpdateLabelValue(const nsString& aValue);
32
33
protected:
34
  // Accessible
35
  virtual ENameValueFlag NativeName(nsString& aName) const override;
36
37
private:
38
  RefPtr<XULLabelTextLeafAccessible> mValueTextLeaf;
39
};
40
41
inline XULLabelAccessible*
42
Accessible::AsXULLabel()
43
0
{
44
0
  return IsXULLabel() ? static_cast<XULLabelAccessible*>(this) : nullptr;
45
0
}
46
47
48
/**
49
 * Used to implement text interface on XUL label accessible in case when text
50
 * is provided by @value attribute (no underlying text frame).
51
 */
52
class XULLabelTextLeafAccessible final : public TextLeafAccessibleWrap
53
{
54
public:
55
  XULLabelTextLeafAccessible(nsIContent* aContent, DocAccessible* aDoc) :
56
    TextLeafAccessibleWrap(aContent, aDoc)
57
0
  { mStateFlags |= eSharedNode; }
58
59
0
  virtual ~XULLabelTextLeafAccessible() { }
60
61
  // Accessible
62
  virtual a11y::role NativeRole() const override;
63
  virtual uint64_t NativeState() const override;
64
};
65
66
67
/**
68
 * Used for XUL tooltip element.
69
 */
70
class XULTooltipAccessible : public LeafAccessible
71
{
72
73
public:
74
  XULTooltipAccessible(nsIContent* aContent, DocAccessible* aDoc);
75
76
  // Accessible
77
  virtual a11y::role NativeRole() const override;
78
  virtual uint64_t NativeState() const override;
79
};
80
81
class XULLinkAccessible : public XULLabelAccessible
82
{
83
84
public:
85
  XULLinkAccessible(nsIContent* aContent, DocAccessible* aDoc);
86
87
  // Accessible
88
  virtual void Value(nsString& aValue) const override;
89
  virtual a11y::role NativeRole() const override;
90
  virtual uint64_t NativeLinkState() const override;
91
92
  // ActionAccessible
93
  virtual uint8_t ActionCount() const override;
94
  virtual void ActionNameAt(uint8_t aIndex, nsAString& aName) override;
95
  virtual bool DoAction(uint8_t aIndex) const override;
96
97
  // HyperLinkAccessible
98
  virtual bool IsLink() const override;
99
  virtual uint32_t StartOffset() override;
100
  virtual uint32_t EndOffset() override;
101
  virtual already_AddRefed<nsIURI> AnchorURIAt(uint32_t aAnchorIndex) const override;
102
103
protected:
104
  virtual ~XULLinkAccessible();
105
106
  // Accessible
107
  virtual ENameValueFlag NativeName(nsString& aName) const override;
108
109
  enum { eAction_Jump = 0 };
110
111
};
112
113
} // namespace a11y
114
} // namespace mozilla
115
116
#endif