Bug 1776444 [wpt PR 34582] - Revert "Add TimedHTMLParserBudget to fieldtrial_testing_...
[gecko.git] / widget / cocoa / nsChangeObserver.h
blobaacf837bb51a6ccc5c59964f125b01b2f65d9165
1 /* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
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 nsChangeObserver_h_
8 #define nsChangeObserver_h_
10 class nsIContent;
11 class nsAtom;
12 namespace mozilla {
13 namespace dom {
14 class Document;
16 } // namespace mozilla
18 #define NS_DECL_CHANGEOBSERVER \
19 void ObserveAttributeChanged(mozilla::dom::Document* aDocument, \
20 nsIContent* aContent, nsAtom* aAttribute) \
21 override; \
22 void ObserveContentRemoved(mozilla::dom::Document* aDocument, \
23 nsIContent* aContainer, nsIContent* aChild, \
24 nsIContent* aPreviousChild) override; \
25 void ObserveContentInserted(mozilla::dom::Document* aDocument, \
26 nsIContent* aContainer, nsIContent* aChild) \
27 override;
29 // Something that wants to be alerted to changes in attributes or changes in
30 // its corresponding content object.
32 // This interface is used by our menu code so we only have to have one
33 // nsIMutationObserver per menu subtree root (e.g. per menubar).
35 // Any class that implements this interface must take care to unregister itself
36 // on deletion.
38 // XXXmstange The methods below use nsIContent*. Eventually, the should be
39 // converted to use mozilla::dom::Element* instead.
40 class nsChangeObserver {
41 public:
42 // Called when the attribute aAttribute on the element aContent has changed.
43 // Only if aContent is being observed by this nsChangeObserver.
44 virtual void ObserveAttributeChanged(mozilla::dom::Document* aDocument,
45 nsIContent* aContent,
46 nsAtom* aAttribute) = 0;
48 // Called when aChild has been removed from its parent aContainer.
49 // aPreviousSibling is the old previous sibling of aChild.
50 // aContainer is always the old parent node of aChild and of aPreviousSibling.
51 // Only called if aContainer or aContainer's parent node are being observed
52 // by this nsChangeObserver.
53 // In other words: If you observe an element, ObserveContentRemoved is called
54 // if that element's children and grandchildren are removed. NOT if the
55 // observed element itself is removed.
56 virtual void ObserveContentRemoved(mozilla::dom::Document* aDocument,
57 nsIContent* aContainer, nsIContent* aChild,
58 nsIContent* aPreviousSibling) = 0;
60 // Called when aChild has been inserted into its new parent aContainer.
61 // Only called if aContainer or aContainer's parent node are being observed
62 // by this nsChangeObserver.
63 // In other words: If you observe an element, ObserveContentInserted is called
64 // if that element receives a new child or grandchild. NOT if the observed
65 // element itself is inserted anywhere.
66 virtual void ObserveContentInserted(mozilla::dom::Document* aDocument,
67 nsIContent* aContainer,
68 nsIContent* aChild) = 0;
71 #endif // nsChangeObserver_h_