Index: third_party/WebKit/Source/core/svg/SVGUseElement.cpp |
diff --git a/third_party/WebKit/Source/core/svg/SVGUseElement.cpp b/third_party/WebKit/Source/core/svg/SVGUseElement.cpp |
index 01ac2abe3265f32799e1240e224e8d710abfcdcc..4e5725217cd392a5b434ffe46548b1ece4d47e3d 100644 |
--- a/third_party/WebKit/Source/core/svg/SVGUseElement.cpp |
+++ b/third_party/WebKit/Source/core/svg/SVGUseElement.cpp |
@@ -66,6 +66,10 @@ inline SVGUseElement::SVGUseElement(Document& document) |
addToPropertyMap(m_y); |
addToPropertyMap(m_width); |
addToPropertyMap(m_height); |
+ |
+#if ENABLE(OILPAN) |
+ ThreadState::current()->registerPreFinalizer(this); |
+#endif |
} |
PassRefPtrWillBeRawPtr<SVGUseElement> SVGUseElement::create(Document& document) |
@@ -78,14 +82,19 @@ PassRefPtrWillBeRawPtr<SVGUseElement> SVGUseElement::create(Document& document) |
SVGUseElement::~SVGUseElement() |
{ |
- setDocumentResource(0); |
#if !ENABLE(OILPAN) |
clearShadowTree(); |
cancelShadowTreeRecreation(); |
svgUseLoadEventSender().cancelEvent(this); |
+ dispose(); |
#endif |
} |
+void SVGUseElement::dispose() |
+{ |
+ setDocumentResource(nullptr); |
+} |
+ |
DEFINE_TRACE(SVGUseElement) |
{ |
visitor->trace(m_x); |
@@ -93,6 +102,7 @@ DEFINE_TRACE(SVGUseElement) |
visitor->trace(m_width); |
visitor->trace(m_height); |
visitor->trace(m_targetElementInstance); |
+ visitor->trace(m_resource); |
SVGGraphicsElement::trace(visitor); |
SVGURIReference::trace(visitor); |
} |
@@ -233,7 +243,7 @@ void SVGUseElement::svgAttributeChanged(const QualifiedName& attrName) |
setDocumentResource(DocumentResource::fetchSVGDocument(request, document().fetcher())); |
} |
} else { |
- setDocumentResource(0); |
+ setDocumentResource(nullptr); |
} |
invalidateShadowTree(); |
@@ -809,7 +819,7 @@ bool SVGUseElement::instanceTreeIsLoading(const SVGElement* targetInstance) |
return false; |
} |
-void SVGUseElement::setDocumentResource(ResourcePtr<DocumentResource> resource) |
+void SVGUseElement::setDocumentResource(PassRefPtrWillBeRawPtr<DocumentResource> resource) |
{ |
if (m_resource == resource) |
return; |