Line data Source code
1 : /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 : /* vim: set ts=2 et sw=2 tw=80: */
3 : /* This Source Code Form is subject to the terms of the Mozilla Public
4 : * License, v. 2.0. If a copy of the MPL was not distributed with this file,
5 : * You can obtain one at http://mozilla.org/MPL/2.0/. */
6 :
7 : #ifndef mozilla_a11y_HTMLListAccessible_h__
8 : #define mozilla_a11y_HTMLListAccessible_h__
9 :
10 : #include "BaseAccessibles.h"
11 : #include "HyperTextAccessibleWrap.h"
12 :
13 : namespace mozilla {
14 : namespace a11y {
15 :
16 : class HTMLListBulletAccessible;
17 :
18 : /**
19 : * Used for HTML list (like HTML ul).
20 : */
21 : class HTMLListAccessible : public HyperTextAccessibleWrap
22 : {
23 : public:
24 0 : HTMLListAccessible(nsIContent* aContent, DocAccessible* aDoc) :
25 0 : HyperTextAccessibleWrap(aContent, aDoc) { mGenericTypes |= eList; }
26 :
27 : // nsISupports
28 : NS_DECL_ISUPPORTS_INHERITED
29 :
30 : // Accessible
31 : virtual a11y::role NativeRole() override;
32 : virtual uint64_t NativeState() override;
33 :
34 : protected:
35 0 : virtual ~HTMLListAccessible() { }
36 : };
37 :
38 :
39 : /**
40 : * Used for HTML list item (e.g. HTML li).
41 : */
42 : class HTMLLIAccessible : public HyperTextAccessibleWrap
43 : {
44 : public:
45 : HTMLLIAccessible(nsIContent* aContent, DocAccessible* aDoc);
46 :
47 : // nsISupports
48 : NS_DECL_ISUPPORTS_INHERITED
49 :
50 : // Accessible
51 : virtual void Shutdown() override;
52 : virtual nsIntRect Bounds() const override;
53 : virtual a11y::role NativeRole() override;
54 : virtual uint64_t NativeState() override;
55 :
56 : virtual bool InsertChildAt(uint32_t aIndex, Accessible* aChild) override;
57 :
58 : // HTMLLIAccessible
59 0 : HTMLListBulletAccessible* Bullet() const { return mBullet; }
60 : void UpdateBullet(bool aHasBullet);
61 :
62 : protected:
63 0 : virtual ~HTMLLIAccessible() { }
64 :
65 : private:
66 : HTMLListBulletAccessible* mBullet;
67 : };
68 :
69 :
70 : /**
71 : * Used for bullet of HTML list item element (for example, HTML li).
72 : */
73 : class HTMLListBulletAccessible : public LeafAccessible
74 : {
75 : public:
76 : HTMLListBulletAccessible(nsIContent* aContent, DocAccessible* aDoc);
77 0 : virtual ~HTMLListBulletAccessible() { }
78 :
79 : // Accessible
80 : virtual nsIFrame* GetFrame() const override;
81 : virtual ENameValueFlag Name(nsString& aName) override;
82 : virtual a11y::role NativeRole() override;
83 : virtual uint64_t NativeState() override;
84 : virtual void AppendTextTo(nsAString& aText, uint32_t aStartOffset = 0,
85 : uint32_t aLength = UINT32_MAX) override;
86 :
87 : // HTMLListBulletAccessible
88 :
89 : /**
90 : * Return true if the bullet is inside of list item element boundaries.
91 : */
92 : bool IsInside() const;
93 : };
94 :
95 :
96 : inline HTMLLIAccessible*
97 0 : Accessible::AsHTMLListItem()
98 : {
99 0 : return IsHTMLListItem() ? static_cast<HTMLLIAccessible*>(this) : nullptr;
100 : }
101 :
102 : } // namespace a11y
103 : } // namespace mozilla
104 :
105 : #endif
|