summaryrefslogtreecommitdiff
path: root/Source/WebCore/dom/MutationObserverRegistration.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebCore/dom/MutationObserverRegistration.h')
-rw-r--r--Source/WebCore/dom/MutationObserverRegistration.h28
1 files changed, 11 insertions, 17 deletions
diff --git a/Source/WebCore/dom/MutationObserverRegistration.h b/Source/WebCore/dom/MutationObserverRegistration.h
index 5af6c357e..7b6483f47 100644
--- a/Source/WebCore/dom/MutationObserverRegistration.h
+++ b/Source/WebCore/dom/MutationObserverRegistration.h
@@ -28,8 +28,7 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-#ifndef MutationObserverRegistration_h
-#define MutationObserverRegistration_h
+#pragma once
#include "MutationObserver.h"
#include <wtf/HashSet.h>
@@ -41,38 +40,33 @@ namespace WebCore {
class QualifiedName;
class MutationObserverRegistration {
+ WTF_MAKE_FAST_ALLOCATED;
public:
- static PassOwnPtr<MutationObserverRegistration> create(PassRefPtr<MutationObserver>, Node*, MutationObserverOptions, const HashSet<AtomicString>& attributeFilter);
+ MutationObserverRegistration(MutationObserver&, Node&, MutationObserverOptions, const HashSet<AtomicString>& attributeFilter);
~MutationObserverRegistration();
void resetObservation(MutationObserverOptions, const HashSet<AtomicString>& attributeFilter);
- void observedSubtreeNodeWillDetach(Node*);
+ void observedSubtreeNodeWillDetach(Node&);
void clearTransientRegistrations();
bool hasTransientRegistrations() const { return m_transientRegistrationNodes && !m_transientRegistrationNodes->isEmpty(); }
- static void unregisterAndDelete(MutationObserverRegistration*);
- bool shouldReceiveMutationFrom(Node*, MutationObserver::MutationType, const QualifiedName* attributeName) const;
+ bool shouldReceiveMutationFrom(Node&, MutationObserver::MutationType, const QualifiedName* attributeName) const;
bool isSubtree() const { return m_options & MutationObserver::Subtree; }
- MutationObserver* observer() const { return m_observer.get(); }
+ MutationObserver& observer() { return m_observer.get(); }
+ Node& node() { return m_node; }
MutationRecordDeliveryOptions deliveryOptions() const { return m_options & (MutationObserver::AttributeOldValue | MutationObserver::CharacterDataOldValue); }
MutationObserverOptions mutationTypes() const { return m_options & MutationObserver::AllMutationTypes; }
void addRegistrationNodesToSet(HashSet<Node*>&) const;
private:
- MutationObserverRegistration(PassRefPtr<MutationObserver>, Node*, MutationObserverOptions, const HashSet<AtomicString>& attributeFilter);
-
- RefPtr<MutationObserver> m_observer;
- Node* m_registrationNode;
- RefPtr<Node> m_registrationNodeKeepAlive;
- typedef HashSet<RefPtr<Node>> NodeHashSet;
- OwnPtr<NodeHashSet> m_transientRegistrationNodes;
-
+ Ref<MutationObserver> m_observer;
+ Node& m_node;
+ RefPtr<Node> m_nodeKeptAlive;
+ std::unique_ptr<HashSet<RefPtr<Node>>> m_transientRegistrationNodes;
MutationObserverOptions m_options;
HashSet<AtomicString> m_attributeFilter;
};
} // namespace WebCore
-
-#endif // MutationObserverRegistration_h