From 9adcf4429d36716fb3fd70ef0a230e725865d8be Mon Sep 17 00:00:00 2001 From: wolfbeast Date: Sat, 19 Jan 2019 11:36:47 +0100 Subject: Actually unlink targets from registered intersection observers. When a node is released/removed, and it has an intersection observer attached to it, that observer should be unlinked at the time of release. This resolves #935. --- dom/base/nsNodeUtils.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'dom') diff --git a/dom/base/nsNodeUtils.cpp b/dom/base/nsNodeUtils.cpp index ecea95dc1..75d408151 100644 --- a/dom/base/nsNodeUtils.cpp +++ b/dom/base/nsNodeUtils.cpp @@ -297,6 +297,16 @@ nsNodeUtils::LastRelease(nsINode* aNode) NodeWillBeDestroyed, (aNode)); } + if (aNode->IsElement()) { + Element* elem = aNode->AsElement(); + FragmentOrElement::nsDOMSlots* domSlots = + static_cast(slots); + for (auto iter = domSlots->mRegisteredIntersectionObservers.Iter(); !iter.Done(); iter.Next()) { + DOMIntersectionObserver* observer = iter.Key(); + observer->UnlinkTarget(*elem); + } + } + delete slots; aNode->mSlots = nullptr; } -- cgit v1.2.3 From 9a954e2d1619788f658f6ec30c7dbd89b3d48b0d Mon Sep 17 00:00:00 2001 From: wolfbeast Date: Sat, 19 Jan 2019 22:06:35 +0100 Subject: Properly camelCase dom.intersectionObserver.enabled pref. --- dom/webidl/IntersectionObserver.webidl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'dom') diff --git a/dom/webidl/IntersectionObserver.webidl b/dom/webidl/IntersectionObserver.webidl index bc193ee8c..83200d950 100644 --- a/dom/webidl/IntersectionObserver.webidl +++ b/dom/webidl/IntersectionObserver.webidl @@ -7,7 +7,7 @@ * https://wicg.github.io/IntersectionObserver/ */ -[ProbablyShortLivingObject, Pref="dom.IntersectionObserver.enabled"] +[ProbablyShortLivingObject, Pref="dom.intersectionObserver.enabled"] interface IntersectionObserverEntry { [Constant] readonly attribute DOMHighResTimeStamp time; @@ -27,7 +27,7 @@ interface IntersectionObserverEntry { [Constructor(IntersectionCallback intersectionCallback, optional IntersectionObserverInit options), - Pref="dom.IntersectionObserver.enabled"] + Pref="dom.intersectionObserver.enabled"] interface IntersectionObserver { [Constant] readonly attribute Element? root; -- cgit v1.2.3