Index: Source/core/dom/MutationObserverRegistration.cpp |
diff --git a/Source/core/dom/MutationObserverRegistration.cpp b/Source/core/dom/MutationObserverRegistration.cpp |
index 2680bb73b6601eb2e57e356936c800d56c623464..12816b0943bc7ef8a243660c0b9450f18fecb2a3 100644 |
--- a/Source/core/dom/MutationObserverRegistration.cpp |
+++ b/Source/core/dom/MutationObserverRegistration.cpp |
@@ -37,9 +37,9 @@ |
namespace WebCore { |
-PassOwnPtr<MutationObserverRegistration> MutationObserverRegistration::create(MutationObserver& observer, Node& registrationNode, MutationObserverOptions options, const HashSet<AtomicString>& attributeFilter) |
+PassOwnPtrWillBeRawPtr<MutationObserverRegistration> MutationObserverRegistration::create(MutationObserver& observer, Node& registrationNode, MutationObserverOptions options, const HashSet<AtomicString>& attributeFilter) |
{ |
- return adoptPtr(new MutationObserverRegistration(observer, registrationNode, options, attributeFilter)); |
+ return adoptPtrWillBeNoop(new MutationObserverRegistration(observer, registrationNode, options, attributeFilter)); |
} |
MutationObserverRegistration::MutationObserverRegistration(MutationObserver& observer, Node& registrationNode, MutationObserverOptions options, const HashSet<AtomicString>& attributeFilter) |
@@ -53,8 +53,15 @@ MutationObserverRegistration::MutationObserverRegistration(MutationObserver& obs |
MutationObserverRegistration::~MutationObserverRegistration() |
{ |
+ // dispose() hasn't been called if this assert triggers. |
+ ASSERT(!m_observer); |
+} |
+ |
+void MutationObserverRegistration::dispose() |
+{ |
clearTransientRegistrations(); |
m_observer->observationEnded(this); |
+ m_observer.clear(); |
} |
void MutationObserverRegistration::resetObservation(MutationObserverOptions options, const HashSet<AtomicString>& attributeFilter) |
@@ -130,4 +137,9 @@ void MutationObserverRegistration::addRegistrationNodesToSet(HashSet<Node*>& nod |
nodes.add(iter->get()); |
} |
+void MutationObserverRegistration::trace(Visitor* visitor) |
+{ |
+ visitor->trace(m_observer); |
+} |
+ |
} // namespace WebCore |