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_logs_h__
8 #define mozilla_a11y_logs_h__
11 #include "nsStringFwd.h"
12 #include "mozilla/Attributes.h"
29 class LocalAccessible
;
31 class OuterDocAccessible
;
39 eDocLifeCycle
= eDocLoad
| eDocCreate
| eDocDestroy
,
50 eNotifications
= eDOMEvents
| eSelection
| eFocus
,
59 * Return true if any of the given modules is logged.
61 bool IsEnabled(uint32_t aModules
);
64 * Return true if all of the given modules are logged.
66 bool IsEnabledAll(uint32_t aModules
);
69 * Return true if the given module is logged.
71 bool IsEnabled(const nsAString
& aModules
);
74 * Log the document loading progress.
76 void DocLoad(const char* aMsg
, nsIWebProgress
* aWebProgress
,
77 nsIRequest
* aRequest
, uint32_t aStateFlags
);
78 void DocLoad(const char* aMsg
, dom::Document
* aDocumentNode
);
79 void DocCompleteLoad(DocAccessible
* aDocument
, bool aIsLoadEventTarget
);
82 * Log that document load event was fired.
84 void DocLoadEventFired(AccEvent
* aEvent
);
87 * Log that document laod event was handled.
89 void DocLoadEventHandled(AccEvent
* aEvent
);
92 * Log the document was created.
94 void DocCreate(const char* aMsg
, dom::Document
* aDocumentNode
,
95 DocAccessible
* aDocument
= nullptr);
98 * Log the document was destroyed.
100 void DocDestroy(const char* aMsg
, dom::Document
* aDocumentNode
,
101 DocAccessible
* aDocument
= nullptr);
104 * Log the outer document was destroyed.
106 void OuterDocDestroy(OuterDocAccessible
* OuterDoc
);
109 * Log the focus notification target.
111 void FocusNotificationTarget(const char* aMsg
, const char* aTargetDescr
,
112 LocalAccessible
* aTarget
);
113 void FocusNotificationTarget(const char* aMsg
, const char* aTargetDescr
,
114 nsINode
* aTargetNode
);
115 void FocusNotificationTarget(const char* aMsg
, const char* aTargetDescr
,
116 nsISupports
* aTargetThing
);
119 * Log a cause of active item descendant change (submessage).
121 void ActiveItemChangeCausedBy(const char* aMsg
, LocalAccessible
* aTarget
);
124 * Log the active widget (submessage).
126 void ActiveWidget(LocalAccessible
* aWidget
);
129 * Log the focus event was dispatched (submessage).
131 void FocusDispatched(LocalAccessible
* aTarget
);
134 * Log the selection change.
136 void SelChange(dom::Selection
* aSelection
, DocAccessible
* aDocument
,
140 * Log the given accessible elements info.
142 void TreeInfo(const char* aMsg
, uint32_t aExtraFlags
, ...);
143 void TreeInfo(const char* aMsg
, uint32_t aExtraFlags
, const char* aMsg1
,
144 LocalAccessible
* aAcc
, const char* aMsg2
, nsINode
* aNode
);
145 void TreeInfo(const char* aMsg
, uint32_t aExtraFlags
, LocalAccessible
* aParent
);
148 * Log the accessible/DOM tree.
150 typedef const char* (*GetTreePrefix
)(void* aData
, LocalAccessible
*);
151 void Tree(const char* aTitle
, const char* aMsgText
, LocalAccessible
* aRoot
,
152 GetTreePrefix aPrefixFunc
= nullptr,
153 void* aGetTreePrefixData
= nullptr);
154 void DOMTree(const char* aTitle
, const char* aMsgText
, DocAccessible
* aDoc
);
157 * Log the tree size in bytes.
159 void TreeSize(const char* aTitle
, const char* aMsgText
, LocalAccessible
* aRoot
);
162 * Log the message ('title: text' format) on new line. Print the start and end
163 * boundaries of the message body designated by '{' and '}' (2 spaces indent for
166 void MsgBegin(const char* aTitle
, const char* aMsgText
, ...)
167 MOZ_FORMAT_PRINTF(2, 3);
171 * Print start and end boundaries of the message body designated by '{' and '}'
172 * (2 spaces indent for body).
178 * Log the entry into message body (4 spaces indent).
180 void MsgEntry(const char* aEntryText
, ...) MOZ_FORMAT_PRINTF(1, 2);
183 * Log the text, two spaces offset is used.
185 void Text(const char* aText
);
188 * Log the accessible object address as message entry (4 spaces indent).
190 void Address(const char* aDescr
, LocalAccessible
* aAcc
);
193 * Log the DOM node info as message entry.
195 void Node(const char* aDescr
, nsINode
* aNode
);
198 * Log the document accessible info as message entry.
200 void Document(DocAccessible
* aDocument
);
203 * Log the accessible and its DOM node as a message entry.
205 void AccessibleInfo(const char* aDescr
, LocalAccessible
* aAccessible
);
206 void AccessibleNNode(const char* aDescr
, LocalAccessible
* aAccessible
);
207 void AccessibleNNode(const char* aDescr
, nsINode
* aNode
);
212 void DOMEvent(const char* aDescr
, nsINode
* aOrigTarget
,
213 const nsAString
& aEventType
);
216 * Log the call stack, two spaces offset is used.
221 * Enable logging of the specified modules, all other modules aren't logged.
223 void Enable(const nsCString
& aModules
);
226 * Enable logging of modules specified by A11YLOG environment variable,
227 * all other modules aren't logged.
231 } // namespace logging
234 } // namespace mozilla