Bumping manifests a=b2g-bump
[gecko.git] / accessible / html / HTMLListAccessible.h
blobe8dc9504af1dff0cc78ac744d6a6d1e166bb9514
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/. */
7 #ifndef mozilla_a11y_HTMLListAccessible_h__
8 #define mozilla_a11y_HTMLListAccessible_h__
10 #include "BaseAccessibles.h"
11 #include "HyperTextAccessibleWrap.h"
13 namespace mozilla {
14 namespace a11y {
16 class HTMLListBulletAccessible;
18 /**
19 * Used for HTML list (like HTML ul).
21 class HTMLListAccessible : public HyperTextAccessibleWrap
23 public:
24 HTMLListAccessible(nsIContent* aContent, DocAccessible* aDoc) :
25 HyperTextAccessibleWrap(aContent, aDoc) { mGenericTypes |= eList; }
27 // nsISupports
28 NS_DECL_ISUPPORTS_INHERITED
30 // Accessible
31 virtual a11y::role NativeRole();
32 virtual uint64_t NativeState();
34 protected:
35 virtual ~HTMLListAccessible() { }
39 /**
40 * Used for HTML list item (e.g. HTML li).
42 class HTMLLIAccessible : public HyperTextAccessibleWrap
44 public:
45 HTMLLIAccessible(nsIContent* aContent, DocAccessible* aDoc);
47 // nsISupports
48 NS_DECL_ISUPPORTS_INHERITED
50 // nsIAccessible
51 NS_IMETHOD GetBounds(int32_t* aX, int32_t* aY,
52 int32_t* aWidth, int32_t* aHeight);
54 // Accessible
55 virtual void Shutdown();
56 virtual a11y::role NativeRole();
57 virtual uint64_t NativeState();
59 // HTMLLIAccessible
60 HTMLListBulletAccessible* Bullet() const { return mBullet; }
61 void UpdateBullet(bool aHasBullet);
63 protected:
64 virtual ~HTMLLIAccessible() { }
66 // Accessible
67 virtual void CacheChildren();
69 private:
70 nsRefPtr<HTMLListBulletAccessible> mBullet;
74 /**
75 * Used for bullet of HTML list item element (for example, HTML li).
77 class HTMLListBulletAccessible : public LeafAccessible
79 public:
80 HTMLListBulletAccessible(nsIContent* aContent, DocAccessible* aDoc);
81 virtual ~HTMLListBulletAccessible() { }
83 // Accessible
84 virtual nsIFrame* GetFrame() const;
85 virtual ENameValueFlag Name(nsString& aName);
86 virtual a11y::role NativeRole();
87 virtual uint64_t NativeState();
88 virtual void AppendTextTo(nsAString& aText, uint32_t aStartOffset = 0,
89 uint32_t aLength = UINT32_MAX);
91 // HTMLListBulletAccessible
93 /**
94 * Return true if the bullet is inside of list item element boundaries.
96 bool IsInside() const;
100 inline HTMLLIAccessible*
101 Accessible::AsHTMLListItem()
103 return IsHTMLListItem() ? static_cast<HTMLLIAccessible*>(this) : nullptr;
106 } // namespace a11y
107 } // namespace mozilla
109 #endif