Bug 1890277: part 4) Add CSPParser support for the `trusted-types` directive, guarded...
[gecko.git] / accessible / ipc / DocAccessibleChild.h
blob01673ba689a6d75ad5f3b111d273322860e8cb98
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"
15 namespace mozilla {
16 namespace a11y {
18 class LocalAccessible;
19 class AccShowEvent;
21 /**
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 {
26 public:
27 DocAccessibleChild(DocAccessible* aDoc,
28 mozilla::ipc::IRefCountedProtocol* aManager)
29 : mDoc(aDoc) {
30 MOZ_COUNT_CTOR(DocAccessibleChild);
31 SetManager(aManager);
34 ~DocAccessibleChild() {
35 // Shutdown() should have been called, but maybe it isn't if the process is
36 // killed?
37 MOZ_ASSERT(!mDoc);
38 if (mDoc) {
39 mDoc->SetIPCDoc(nullptr);
42 MOZ_COUNT_DTOR(DocAccessibleChild);
45 virtual void Shutdown() {
46 DetachDocument();
47 SendShutdown();
50 /**
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 {
57 if (!mDoc) {
58 return;
61 mDoc->SetIPCDoc(nullptr);
62 mDoc = 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,
131 const int32_t& aX,
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);
140 #if !defined(XP_WIN)
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;
151 private:
152 LayoutDeviceIntRect GetCaretRectFor(const uint64_t& aID);
154 protected:
155 static void FlattenTree(LocalAccessible* aRoot,
156 nsTArray<LocalAccessible*>& aTree);
158 static AccessibleData SerializeAcc(LocalAccessible* aAcc);
160 void DetachDocument() {
161 if (mDoc) {
162 mDoc->SetIPCDoc(nullptr);
163 mDoc = nullptr;
167 LocalAccessible* IdToAccessible(const uint64_t& aID) const;
168 HyperTextAccessible* IdToHyperTextAccessible(const uint64_t& aID) const;
170 DocAccessible* mDoc;
172 friend void DocAccessible::DoInitialUpdate();
175 } // namespace a11y
176 } // namespace mozilla
178 #endif // mozilla_a11y_DocAccessibleChild_h