1 /* This Source Code Form is subject to the terms of the Mozilla Public
2 * License, v. 2.0. If a copy of the MPL was not distributed with this
3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
5 #ifndef mozilla_a11y_FocusManager_h_
6 #define mozilla_a11y_FocusManager_h_
22 * Manage the accessible focus. Used to fire and process accessible events.
27 virtual ~FocusManager();
30 * Return a focused accessible.
32 Accessible
* FocusedAccessible() const;
35 * Return true if given accessible is focused.
37 bool IsFocused(const Accessible
* aAccessible
) const;
40 * Return true if the given accessible is an active item, i.e. an item that
41 * is current within the active widget.
43 inline bool IsActiveItem(const Accessible
* aAccessible
)
44 { return aAccessible
== mActiveItem
; }
47 * Return true if given DOM node has DOM focus.
49 inline bool HasDOMFocus(const nsINode
* aNode
) const
50 { return aNode
== FocusedDOMNode(); }
53 * Return true if focused accessible is within the given container.
55 bool IsFocusWithin(const Accessible
* aContainer
) const;
58 * Return whether the given accessible is focused or contains the focus or
59 * contained by focused accessible.
61 enum FocusDisposition
{
67 FocusDisposition
IsInOrContainsFocus(const Accessible
* aAccessible
) const;
69 //////////////////////////////////////////////////////////////////////////////
70 // Focus notifications and processing (don't use until you know what you do).
73 * Called when DOM focus event is fired.
75 void NotifyOfDOMFocus(nsISupports
* aTarget
);
78 * Called when DOM blur event is fired.
80 void NotifyOfDOMBlur(nsISupports
* aTarget
);
83 * Called when active item is changed. Note: must be called when accessible
86 void ActiveItemChanged(Accessible
* aItem
, bool aCheckIfActive
= true);
89 * Dispatch delayed focus event for the current focus accessible.
91 void ForceFocusEvent();
94 * Dispatch delayed focus event for the given target.
96 void DispatchFocusEvent(DocAccessible
* aDocument
, Accessible
* aTarget
);
99 * Process DOM focus notification.
101 void ProcessDOMFocus(nsINode
* aTarget
);
104 * Process the delayed accessible event.
107 void ProcessFocusEvent(AccEvent
* aEvent
);
113 FocusManager(const FocusManager
&);
114 FocusManager
& operator =(const FocusManager
&);
117 * Return DOM node having DOM focus.
119 nsINode
* FocusedDOMNode() const;
122 * Return DOM document having DOM focus.
124 nsIDocument
* FocusedDOMDocument() const;
127 nsRefPtr
<Accessible
> mActiveItem
;
128 nsRefPtr
<Accessible
> mActiveARIAMenubar
;
132 } // namespace mozilla