Coverage Report

Created: 2018-09-25 14:53

/src/mozilla-central/accessible/xul/XULListboxAccessible.h
Line
Count
Source (jump to first uncovered line)
1
/* -*- Mode: C++; tab-width: 4; 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_XULListboxAccessible_h__
7
#define mozilla_a11y_XULListboxAccessible_h__
8
9
#include "BaseAccessibles.h"
10
#include "TableAccessible.h"
11
#include "TableCellAccessible.h"
12
#include "xpcAccessibleTable.h"
13
#include "xpcAccessibleTableCell.h"
14
#include "XULMenuAccessible.h"
15
#include "XULSelectControlAccessible.h"
16
17
namespace mozilla {
18
namespace a11y {
19
20
/**
21
 * XULColumAccessible are accessible for list and tree columns elements
22
 * (xul:treecols and xul:listheader).
23
 */
24
class XULColumAccessible : public AccessibleWrap
25
{
26
public:
27
  XULColumAccessible(nsIContent* aContent, DocAccessible* aDoc);
28
29
  // Accessible
30
  virtual a11y::role NativeRole() const override;
31
  virtual uint64_t NativeState() const override;
32
};
33
34
/**
35
 * XULColumnItemAccessible are accessibles for list and tree column elements
36
 * (xul:treecol).
37
 */
38
class XULColumnItemAccessible : public LeafAccessible
39
{
40
public:
41
  XULColumnItemAccessible(nsIContent* aContent, DocAccessible* aDoc);
42
43
  // Accessible
44
  virtual a11y::role NativeRole() const override;
45
  virtual uint64_t NativeState() const override;
46
47
  // ActionAccessible
48
  virtual uint8_t ActionCount() const override;
49
  virtual void ActionNameAt(uint8_t aIndex, nsAString& aName) override;
50
  virtual bool DoAction(uint8_t aIndex) const override;
51
52
  enum { eAction_Click = 0 };
53
};
54
55
/*
56
 * A class the represents the XUL Listbox widget.
57
 */
58
class XULListboxAccessible : public XULSelectControlAccessible,
59
                             public TableAccessible
60
{
61
public:
62
  XULListboxAccessible(nsIContent* aContent, DocAccessible* aDoc);
63
64
  // TableAccessible
65
  virtual uint32_t ColCount() const override;
66
  virtual uint32_t RowCount() override;
67
  virtual Accessible* CellAt(uint32_t aRowIndex, uint32_t aColumnIndex) override;
68
  virtual bool IsColSelected(uint32_t aColIdx) override;
69
  virtual bool IsRowSelected(uint32_t aRowIdx) override;
70
  virtual bool IsCellSelected(uint32_t aRowIdx, uint32_t aColIdx) override;
71
  virtual uint32_t SelectedCellCount() override;
72
  virtual uint32_t SelectedColCount() override;
73
  virtual uint32_t SelectedRowCount() override;
74
  virtual void SelectedCells(nsTArray<Accessible*>* aCells) override;
75
  virtual void SelectedCellIndices(nsTArray<uint32_t>* aCells) override;
76
  virtual void SelectedColIndices(nsTArray<uint32_t>* aCols) override;
77
  virtual void SelectedRowIndices(nsTArray<uint32_t>* aRows) override;
78
  virtual void SelectRow(uint32_t aRowIdx) override;
79
  virtual void UnselectRow(uint32_t aRowIdx) override;
80
0
  virtual Accessible* AsAccessible() override { return this; }
81
82
  // Accessible
83
  virtual void Value(nsString& aValue) const override;
84
0
  virtual TableAccessible* AsTable() override { return this; }
85
  virtual a11y::role NativeRole() const override;
86
  virtual uint64_t NativeState() const override;
87
88
  // Widgets
89
  virtual bool IsWidget() const override;
90
  virtual bool IsActiveWidget() const override;
91
  virtual bool AreItemsOperable() const override;
92
93
  virtual Accessible* ContainerWidget() const override;
94
95
protected:
96
0
  virtual ~XULListboxAccessible() {}
97
98
0
  bool IsMulticolumn() const { return ColCount() > 1; }
99
};
100
101
/**
102
  * Listitems -- used in listboxes
103
  */
104
class XULListitemAccessible : public XULMenuitemAccessible
105
{
106
public:
107
  enum { eAction_Click = 0 };
108
109
  NS_INLINE_DECL_REFCOUNTING_INHERITED(XULListitemAccessible,
110
                                       XULMenuitemAccessible)
111
112
  XULListitemAccessible(nsIContent* aContent, DocAccessible* aDoc);
113
114
  // Accessible
115
  virtual void Description(nsString& aDesc) override;
116
  virtual a11y::role NativeRole() const override;
117
  virtual uint64_t NativeState() const override;
118
  virtual uint64_t NativeInteractiveState() const override;
119
120
  // Actions
121
  virtual void ActionNameAt(uint8_t index, nsAString& aName) override;
122
123
  // Widgets
124
  virtual Accessible* ContainerWidget() const override;
125
126
protected:
127
  virtual ~XULListitemAccessible();
128
129
  // Accessible
130
  virtual ENameValueFlag NativeName(nsString& aName) const override;
131
132
  // XULListitemAccessible
133
134
  /**
135
   * Return listbox accessible for the listitem.
136
   */
137
  Accessible* GetListAccessible() const;
138
139
private:
140
  bool mIsCheckbox;
141
};
142
143
} // namespace a11y
144
} // namespace mozilla
145
146
#endif