summaryrefslogtreecommitdiffstats
path: root/dom/xml/nsXMLElement.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'dom/xml/nsXMLElement.cpp')
-rw-r--r--dom/xml/nsXMLElement.cpp23
1 files changed, 23 insertions, 0 deletions
diff --git a/dom/xml/nsXMLElement.cpp b/dom/xml/nsXMLElement.cpp
index 45163a1c4..ad0314f4c 100644
--- a/dom/xml/nsXMLElement.cpp
+++ b/dom/xml/nsXMLElement.cpp
@@ -9,6 +9,7 @@
#include "mozilla/dom/ElementInlines.h"
#include "nsContentUtils.h" // nsAutoScriptBlocker
+using namespace mozilla;
using namespace mozilla::dom;
nsresult
@@ -29,4 +30,26 @@ nsXMLElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aGivenProto)
return ElementBinding::Wrap(aCx, this, aGivenProto);
}
+void
+nsXMLElement::UnbindFromTree(bool aDeep, bool aNullParent)
+{
+ CSSPseudoElementType pseudoType = GetPseudoElementType();
+ bool isBefore = pseudoType == CSSPseudoElementType::before;
+ nsIAtom* property = isBefore
+ ? nsGkAtoms::beforePseudoProperty : nsGkAtoms::afterPseudoProperty;
+
+ switch (pseudoType) {
+ case CSSPseudoElementType::before:
+ case CSSPseudoElementType::after: {
+ MOZ_ASSERT(GetParent());
+ MOZ_ASSERT(GetParent()->IsElement());
+ GetParent()->DeleteProperty(property);
+ break;
+ }
+ default:
+ break;
+ }
+ Element::UnbindFromTree(aDeep, aNullParent);
+}
+
NS_IMPL_ELEMENT_CLONE(nsXMLElement)