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
,
51 eNotifications
= eDOMEvents
| eSelection
| eFocus
,
60 * Return true if any of the given modules is logged.
62 bool IsEnabled(uint32_t aModules
);
65 * Return true if all of the given modules are logged.
67 bool IsEnabledAll(uint32_t aModules
);
70 * Return true if the given module is logged.
72 bool IsEnabled(const nsAString
& aModules
);
75 * Log the document loading progress.
77 void DocLoad(const char* aMsg
, nsIWebProgress
* aWebProgress
,
78 nsIRequest
* aRequest
, uint32_t aStateFlags
);
79 void DocLoad(const char* aMsg
, dom::Document
* aDocumentNode
);
80 void DocCompleteLoad(DocAccessible
* aDocument
, bool aIsLoadEventTarget
);
83 * Log that document load event was fired.
85 void DocLoadEventFired(AccEvent
* aEvent
);
88 * Log that document laod event was handled.
90 void DocLoadEventHandled(AccEvent
* aEvent
);
93 * Log the document was created.
95 void DocCreate(const char* aMsg
, dom::Document
* aDocumentNode
,
96 DocAccessible
* aDocument
= nullptr);
99 * Log the document was destroyed.
101 void DocDestroy(const char* aMsg
, dom::Document
* aDocumentNode
,
102 DocAccessible
* aDocument
= nullptr);
105 * Log the outer document was destroyed.
107 void OuterDocDestroy(OuterDocAccessible
* OuterDoc
);
110 * Log the focus notification target.
112 void FocusNotificationTarget(const char* aMsg
, const char* aTargetDescr
,
113 LocalAccessible
* aTarget
);
114 void FocusNotificationTarget(const char* aMsg
, const char* aTargetDescr
,
115 nsINode
* aTargetNode
);
116 void FocusNotificationTarget(const char* aMsg
, const char* aTargetDescr
,
117 nsISupports
* aTargetThing
);
120 * Log a cause of active item descendant change (submessage).
122 void ActiveItemChangeCausedBy(const char* aMsg
, LocalAccessible
* aTarget
);
125 * Log the active widget (submessage).
127 void ActiveWidget(LocalAccessible
* aWidget
);
130 * Log the focus event was dispatched (submessage).
132 void FocusDispatched(LocalAccessible
* aTarget
);
135 * Log the selection change.
137 void SelChange(dom::Selection
* aSelection
, DocAccessible
* aDocument
,
141 * Log the given accessible elements info.
143 void TreeInfo(const char* aMsg
, uint32_t aExtraFlags
, ...);
144 void TreeInfo(const char* aMsg
, uint32_t aExtraFlags
, const char* aMsg1
,
145 LocalAccessible
* aAcc
, const char* aMsg2
, nsINode
* aNode
);
146 void TreeInfo(const char* aMsg
, uint32_t aExtraFlags
, LocalAccessible
* aParent
);
149 * Log the accessible/DOM tree.
151 typedef const char* (*GetTreePrefix
)(void* aData
, LocalAccessible
*);
152 void Tree(const char* aTitle
, const char* aMsgText
, LocalAccessible
* aRoot
,
153 GetTreePrefix aPrefixFunc
= nullptr,
154 void* aGetTreePrefixData
= nullptr);
155 void DOMTree(const char* aTitle
, const char* aMsgText
, DocAccessible
* aDoc
);
158 * Log the tree size in bytes.
160 void TreeSize(const char* aTitle
, const char* aMsgText
, LocalAccessible
* aRoot
);
163 * Log the message ('title: text' format) on new line. Print the start and end
164 * boundaries of the message body designated by '{' and '}' (2 spaces indent for
167 void MsgBegin(const char* aTitle
, const char* aMsgText
, ...)
168 MOZ_FORMAT_PRINTF(2, 3);
172 * Print start and end boundaries of the message body designated by '{' and '}'
173 * (2 spaces indent for body).
179 * Log the entry into message body (4 spaces indent).
181 void MsgEntry(const char* aEntryText
, ...) MOZ_FORMAT_PRINTF(1, 2);
184 * Log the text, two spaces offset is used.
186 void Text(const char* aText
);
189 * Log the accessible object address as message entry (4 spaces indent).
191 void Address(const char* aDescr
, LocalAccessible
* aAcc
);
194 * Log the DOM node info as message entry.
196 void Node(const char* aDescr
, nsINode
* aNode
);
199 * Log the document accessible info as message entry.
201 void Document(DocAccessible
* aDocument
);
204 * Log the accessible and its DOM node as a message entry.
206 void AccessibleInfo(const char* aDescr
, LocalAccessible
* aAccessible
);
207 void AccessibleNNode(const char* aDescr
, LocalAccessible
* aAccessible
);
208 void AccessibleNNode(const char* aDescr
, nsINode
* aNode
);
213 void DOMEvent(const char* aDescr
, nsINode
* aOrigTarget
,
214 const nsAString
& aEventType
);
217 * Log the call stack, two spaces offset is used.
222 * Enable logging of the specified modules, all other modules aren't logged.
224 void Enable(const nsCString
& aModules
);
227 * Enable logging of modules specified by A11YLOG environment variable,
228 * all other modules aren't logged.
232 } // namespace logging
235 } // namespace mozilla