Coverage Report

Created: 2018-09-25 14:53

/src/mozilla-central/accessible/xul/XULTabAccessible.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_XULTabAccessible_h__
7
#define mozilla_a11y_XULTabAccessible_h__
8
9
// NOTE: alphabetically ordered
10
#include "HyperTextAccessibleWrap.h"
11
#include "XULMenuAccessible.h"
12
#include "XULSelectControlAccessible.h"
13
14
namespace mozilla {
15
namespace a11y {
16
17
/**
18
 * An individual tab, xul:tab element.
19
 */
20
class XULTabAccessible : public HyperTextAccessibleWrap
21
{
22
public:
23
  enum { eAction_Switch = 0 };
24
25
  XULTabAccessible(nsIContent* aContent, DocAccessible* aDoc);
26
27
  // Accessible
28
  virtual a11y::role NativeRole() const override;
29
  virtual uint64_t NativeState() const override;
30
  virtual uint64_t NativeInteractiveState() const override;
31
  virtual Relation RelationByType(RelationType aType) const override;
32
  virtual void ApplyARIAState(uint64_t* aState) const override;
33
34
  // ActionAccessible
35
  virtual uint8_t ActionCount() const override;
36
  virtual void ActionNameAt(uint8_t aIndex, nsAString& aName) override;
37
  virtual bool DoAction(uint8_t aIndex) const override;
38
};
39
40
41
/**
42
 * A container of tab objects, xul:tabs element.
43
 */
44
class XULTabsAccessible : public XULSelectControlAccessible
45
{
46
public:
47
  XULTabsAccessible(nsIContent* aContent, DocAccessible* aDoc);
48
49
  // Accessible
50
  virtual void Value(nsString& aValue) const override;
51
  virtual a11y::role NativeRole() const override;
52
  virtual void ApplyARIAState(uint64_t* aState) const override;
53
54
  // ActionAccessible
55
  virtual uint8_t ActionCount() const override;
56
57
  // SelectAccessible
58
  virtual void SelectedItems(nsTArray<Accessible*>* aItems) override;
59
  virtual uint32_t SelectedItemCount() override;
60
  virtual Accessible* GetSelectedItem(uint32_t aIndex) override;
61
  virtual bool IsItemSelected(uint32_t aIndex) override;
62
63
protected:
64
  // Accessible
65
  virtual ENameValueFlag NativeName(nsString& aName) const override;
66
};
67
68
69
/**
70
 * A container of tab panels, xul:tabpanels element.
71
 */
72
class XULTabpanelsAccessible : public AccessibleWrap
73
{
74
public:
75
  XULTabpanelsAccessible(nsIContent* aContent, DocAccessible* aDoc) :
76
    AccessibleWrap(aContent, aDoc)
77
0
    { mType = eXULTabpanelsType; }
78
79
  // Accessible
80
  virtual a11y::role NativeRole() const override;
81
};
82
83
84
/**
85
 * A tabpanel object, child elements of xul:tabpanels element.
86
 *
87
 * XXX: we need to move the class logic into generic class since
88
 * for example we do not create instance of this class for XUL textbox used as
89
 * a tabpanel.
90
 */
91
class XULTabpanelAccessible : public AccessibleWrap
92
{
93
public:
94
  XULTabpanelAccessible(nsIContent* aContent, DocAccessible* aDoc);
95
96
  // Accessible
97
  virtual a11y::role NativeRole() const override;
98
  virtual Relation RelationByType(RelationType aType) const override;
99
};
100
101
} // namespace a11y
102
} // namespace mozilla
103
104
#endif
105