Line data Source code
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_OUTERDOCACCESSIBLE_H_
7 : #define MOZILLA_A11Y_OUTERDOCACCESSIBLE_H_
8 :
9 : #include "AccessibleWrap.h"
10 :
11 : namespace mozilla {
12 : namespace a11y {
13 : class DocAccessibleParent;
14 :
15 : /**
16 : * Used for <browser>, <frame>, <iframe>, <page> or editor> elements.
17 : *
18 : * In these variable names, "outer" relates to the OuterDocAccessible as
19 : * opposed to the DocAccessibleWrap which is "inner". The outer node is
20 : * a something like tags listed above, whereas the inner node corresponds to
21 : * the inner document root.
22 : */
23 :
24 : class OuterDocAccessible final : public AccessibleWrap
25 : {
26 : public:
27 : OuterDocAccessible(nsIContent* aContent, DocAccessible* aDoc);
28 :
29 : NS_DECL_ISUPPORTS_INHERITED
30 :
31 : DocAccessibleParent* RemoteChildDoc() const;
32 :
33 : // Accessible
34 : virtual void Shutdown() override;
35 : virtual mozilla::a11y::role NativeRole() override;
36 : virtual Accessible* ChildAtPoint(int32_t aX, int32_t aY,
37 : EWhichChildAtPoint aWhichChild) override;
38 :
39 : virtual bool InsertChildAt(uint32_t aIdx, Accessible* aChild) override;
40 : virtual bool RemoveChild(Accessible* aAccessible) override;
41 : virtual bool IsAcceptableChild(nsIContent* aEl) const override;
42 :
43 : #if defined(XP_WIN)
44 : virtual uint32_t ChildCount() const override;
45 : virtual Accessible* GetChildAt(uint32_t aIndex) const override;
46 : #endif // defined(XP_WIN)
47 :
48 : protected:
49 : virtual ~OuterDocAccessible() override;
50 : };
51 :
52 : inline OuterDocAccessible*
53 0 : Accessible::AsOuterDoc()
54 : {
55 0 : return IsOuterDoc() ? static_cast<OuterDocAccessible*>(this) : nullptr;
56 : }
57 :
58 : } // namespace a11y
59 : } // namespace mozilla
60 :
61 : #endif
|