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_FormControlAccessible_H_
7 #define MOZILLA_A11Y_FormControlAccessible_H_
8 
9 #include "BaseAccessibles.h"
10 
11 namespace mozilla {
12 namespace a11y {
13 
14 /**
15  * Checkbox accessible.
16  */
17 class CheckboxAccessible : public LeafAccessible {
18  public:
19   enum { eAction_Click = 0 };
20 
CheckboxAccessible(nsIContent * aContent,DocAccessible * aDoc)21   CheckboxAccessible(nsIContent* aContent, DocAccessible* aDoc)
22       : LeafAccessible(aContent, aDoc) {
23     // Ignore "CheckboxStateChange" DOM event in lieu of document observer
24     // state change notification.
25     if (aContent->IsHTMLElement()) {
26       mStateFlags |= eIgnoreDOMUIEvent;
27     }
28   }
29 
30   // LocalAccessible
31   virtual mozilla::a11y::role NativeRole() const override;
32   virtual uint64_t NativeState() 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   // Widgets
40   virtual bool IsWidget() const override;
41 };
42 
43 /**
44  * Generic class used for radio buttons.
45  */
46 class RadioButtonAccessible : public LeafAccessible {
47  public:
48   RadioButtonAccessible(nsIContent* aContent, DocAccessible* aDoc);
49 
50   // LocalAccessible
51   virtual mozilla::a11y::role NativeRole() const override;
52 
53   // ActionAccessible
54   virtual uint8_t ActionCount() const override;
55   virtual void ActionNameAt(uint8_t aIndex, nsAString& aName) override;
56   virtual bool DoAction(uint8_t aIndex) const override;
57 
58   enum { eAction_Click = 0 };
59 
60   // Widgets
61   virtual bool IsWidget() const override;
62 };
63 
64 }  // namespace a11y
65 }  // namespace mozilla
66 
67 #endif
68