| Index: Source/core/dom/shadow/ShadowRoot.cpp
|
| diff --git a/Source/core/dom/shadow/ShadowRoot.cpp b/Source/core/dom/shadow/ShadowRoot.cpp
|
| index e7dcc984865024fc57d1a6ff573ea073cf93abaa..896f38f731ff3cf87956e1545280f2657ba855fa 100644
|
| --- a/Source/core/dom/shadow/ShadowRoot.cpp
|
| +++ b/Source/core/dom/shadow/ShadowRoot.cpp
|
| @@ -68,16 +68,20 @@ ShadowRoot::~ShadowRoot()
|
| ASSERT(!m_prev);
|
| ASSERT(!m_next);
|
|
|
| +#if !ENABLE(OILPAN)
|
| if (m_shadowRootRareData && m_shadowRootRareData->styleSheets())
|
| m_shadowRootRareData->styleSheets()->detachFromDocument();
|
|
|
| document().styleEngine()->didRemoveShadowRoot(this);
|
| +#endif
|
|
|
| +#if !ENABLE(OILPAN)
|
| // We cannot let ContainerNode destructor call willBeDeletedFromDocument()
|
| // for this ShadowRoot instance because TreeScope destructor
|
| // clears Node::m_treeScope thus ContainerNode is no longer able
|
| // to access it Document reference after that.
|
| willBeDeletedFromDocument();
|
| +#endif
|
|
|
| // We must remove all of our children first before the TreeScope destructor
|
| // runs so we don't go through TreeScopeAdopter for each child with a
|
| @@ -230,7 +234,7 @@ ShadowRootRareData* ShadowRoot::ensureShadowRootRareData()
|
| if (m_shadowRootRareData)
|
| return m_shadowRootRareData.get();
|
|
|
| - m_shadowRootRareData = adoptPtr(new ShadowRootRareData);
|
| + m_shadowRootRareData = adoptPtrWillBeNoop(new ShadowRootRareData);
|
| return m_shadowRootRareData.get();
|
| }
|
|
|
| @@ -333,4 +337,11 @@ StyleSheetList* ShadowRoot::styleSheets()
|
| return m_shadowRootRareData->styleSheets();
|
| }
|
|
|
| +void ShadowRoot::trace(Visitor* visitor)
|
| +{
|
| + visitor->trace(m_shadowRootRareData);
|
| + TreeScope::trace(visitor);
|
| + DocumentFragment::trace(visitor);
|
| +}
|
| +
|
| }
|
|
|