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
5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
7 #ifndef mozilla_a11y_DocAccessibleChild_h
8 #define mozilla_a11y_DocAccessibleChild_h
10 #include "mozilla/a11y/DocAccessible.h"
11 #include "mozilla/a11y/PDocAccessibleChild.h"
12 #include "mozilla/Unused.h"
13 #include "nsISupportsImpl.h"
18 class LocalAccessible
;
22 * These objects handle content side communication for an accessible document,
23 * and their lifetime is the same as the document they represent.
25 class DocAccessibleChild
: public PDocAccessibleChild
{
27 DocAccessibleChild(DocAccessible
* aDoc
,
28 mozilla::ipc::IRefCountedProtocol
* aManager
)
30 MOZ_COUNT_CTOR(DocAccessibleChild
);
34 ~DocAccessibleChild() {
35 // Shutdown() should have been called, but maybe it isn't if the process is
39 mDoc
->SetIPCDoc(nullptr);
42 MOZ_COUNT_DTOR(DocAccessibleChild
);
45 virtual void Shutdown() {
51 * Serializes a shown tree and sends it to the chrome process.
53 void InsertIntoIpcTree(LocalAccessible
* aChild
, bool aSuppressShowEvent
);
54 void ShowEvent(AccShowEvent
* aShowEvent
);
56 virtual void ActorDestroy(ActorDestroyReason
) override
{
61 mDoc
->SetIPCDoc(nullptr);
65 virtual mozilla::ipc::IPCResult
RecvTakeFocus(const uint64_t& aID
) override
;
67 MOZ_CAN_RUN_SCRIPT_BOUNDARY
68 virtual mozilla::ipc::IPCResult
RecvScrollTo(
69 const uint64_t& aID
, const uint32_t& aScrollType
) override
;
71 virtual mozilla::ipc::IPCResult
RecvTakeSelection(
72 const uint64_t& aID
) override
;
73 virtual mozilla::ipc::IPCResult
RecvSetSelected(const uint64_t& aID
,
74 const bool& aSelect
) override
;
76 virtual mozilla::ipc::IPCResult
RecvVerifyCache(
77 const uint64_t& aID
, const uint64_t& aCacheDomain
,
78 AccAttributes
* aFields
) override
;
80 virtual mozilla::ipc::IPCResult
RecvDoActionAsync(
81 const uint64_t& aID
, const uint8_t& aIndex
) override
;
83 virtual mozilla::ipc::IPCResult
RecvSetCaretOffset(
84 const uint64_t& aID
, const int32_t& aOffset
) override
;
86 MOZ_CAN_RUN_SCRIPT_BOUNDARY
87 virtual mozilla::ipc::IPCResult
RecvSetTextSelection(
88 const uint64_t& aStartID
, const int32_t& aStartOffset
,
89 const uint64_t& aEndID
, const int32_t& aEndOffset
,
90 const int32_t& aSelectionNum
) override
;
92 MOZ_CAN_RUN_SCRIPT_BOUNDARY
93 virtual mozilla::ipc::IPCResult
RecvScrollTextLeafRangeIntoView(
94 const uint64_t& aStartID
, const int32_t& aStartOffset
,
95 const uint64_t& aEndID
, const int32_t& aEndOffset
,
96 const uint32_t& aScrollType
) override
;
98 virtual mozilla::ipc::IPCResult
RecvRemoveTextSelection(
99 const uint64_t& aID
, const int32_t& aSelectionNum
) override
;
101 virtual mozilla::ipc::IPCResult
RecvSetCurValue(
102 const uint64_t& aID
, const double& aValue
) override
;
104 virtual mozilla::ipc::IPCResult
RecvReplaceText(
105 const uint64_t& aID
, const nsAString
& aText
) override
;
107 virtual mozilla::ipc::IPCResult
RecvInsertText(
108 const uint64_t& aID
, const nsAString
& aText
,
109 const int32_t& aPosition
) override
;
111 virtual mozilla::ipc::IPCResult
RecvCopyText(const uint64_t& aID
,
112 const int32_t& aStartPos
,
113 const int32_t& aEndPos
) override
;
115 virtual mozilla::ipc::IPCResult
RecvCutText(const uint64_t& aID
,
116 const int32_t& aStartPos
,
117 const int32_t& aEndPos
) override
;
119 virtual mozilla::ipc::IPCResult
RecvDeleteText(
120 const uint64_t& aID
, const int32_t& aStartPos
,
121 const int32_t& aEndPos
) override
;
123 MOZ_CAN_RUN_SCRIPT_BOUNDARY
124 virtual mozilla::ipc::IPCResult
RecvPasteText(
125 const uint64_t& aID
, const int32_t& aPosition
) override
;
127 virtual mozilla::ipc::IPCResult
RecvRestoreFocus() override
;
129 virtual mozilla::ipc::IPCResult
RecvScrollToPoint(const uint64_t& aID
,
130 const uint32_t& aScrollType
,
132 const int32_t& aY
) override
;
134 bool SendCaretMoveEvent(const uint64_t& aID
, const int32_t& aOffset
,
135 const bool& aIsSelectionCollapsed
,
136 const bool& aIsAtEndOfLine
,
137 const int32_t& aGranularity
, bool aFromUser
);
138 bool SendFocusEvent(const uint64_t& aID
);
141 virtual mozilla::ipc::IPCResult
RecvAnnounce(
142 const uint64_t& aID
, const nsAString
& aAnnouncement
,
143 const uint16_t& aPriority
) override
;
144 #endif // !defined(XP_WIN)
146 virtual mozilla::ipc::IPCResult
RecvScrollSubstringToPoint(
147 const uint64_t& aID
, const int32_t& aStartOffset
,
148 const int32_t& aEndOffset
, const uint32_t& aCoordinateType
,
149 const int32_t& aX
, const int32_t& aY
) override
;
152 LayoutDeviceIntRect
GetCaretRectFor(const uint64_t& aID
);
155 static void FlattenTree(LocalAccessible
* aRoot
,
156 nsTArray
<LocalAccessible
*>& aTree
);
158 static AccessibleData
SerializeAcc(LocalAccessible
* aAcc
);
160 void DetachDocument() {
162 mDoc
->SetIPCDoc(nullptr);
167 LocalAccessible
* IdToAccessible(const uint64_t& aID
) const;
168 HyperTextAccessible
* IdToHyperTextAccessible(const uint64_t& aID
) const;
172 friend void DocAccessible::DoInitialUpdate();
176 } // namespace mozilla
178 #endif // mozilla_a11y_DocAccessibleChild_h