| Index: third_party/WebKit/Source/core/dom/shadow/ShadowRoot.cpp
|
| diff --git a/third_party/WebKit/Source/core/dom/shadow/ShadowRoot.cpp b/third_party/WebKit/Source/core/dom/shadow/ShadowRoot.cpp
|
| index 1b204033c8bd1438d39c6d504460ad665338afa1..0a939654fdaf985b753239459232db07c14f338c 100644
|
| --- a/third_party/WebKit/Source/core/dom/shadow/ShadowRoot.cpp
|
| +++ b/third_party/WebKit/Source/core/dom/shadow/ShadowRoot.cpp
|
| @@ -36,6 +36,7 @@
|
| #include "core/dom/shadow/ElementShadow.h"
|
| #include "core/dom/shadow/InsertionPoint.h"
|
| #include "core/dom/shadow/ShadowRootRareData.h"
|
| +#include "core/dom/shadow/ShadowRootRareDataV0.h"
|
| #include "core/editing/serializers/Serialization.h"
|
| #include "core/html/HTMLShadowElement.h"
|
| #include "public/platform/Platform.h"
|
| @@ -44,7 +45,7 @@ namespace blink {
|
|
|
| struct SameSizeAsShadowRoot : public DocumentFragment, public TreeScope, public DoublyLinkedListNode<ShadowRoot> {
|
| char emptyClassFieldsDueToGCMixinMarker[1];
|
| - Member<void*> willbeMember[4];
|
| + Member<void*> willbeMember[5];
|
| unsigned countersAndFlags[1];
|
| };
|
|
|
| @@ -194,47 +195,56 @@ ShadowRootRareData* ShadowRoot::ensureShadowRootRareData()
|
| return m_shadowRootRareData.get();
|
| }
|
|
|
| +ShadowRootRareDataV0* ShadowRoot::ensureShadowRootRareDataV0()
|
| +{
|
| + if (m_shadowRootRareDataV0)
|
| + return m_shadowRootRareDataV0.get();
|
| +
|
| + m_shadowRootRareDataV0 = new ShadowRootRareDataV0;
|
| + return m_shadowRootRareDataV0.get();
|
| +}
|
| +
|
| bool ShadowRoot::containsShadowElements() const
|
| {
|
| - return m_shadowRootRareData ? m_shadowRootRareData->containsShadowElements() : 0;
|
| + return m_shadowRootRareDataV0 ? m_shadowRootRareDataV0->containsShadowElements() : false;
|
| }
|
|
|
| bool ShadowRoot::containsContentElements() const
|
| {
|
| - return m_shadowRootRareData ? m_shadowRootRareData->containsContentElements() : 0;
|
| + return m_shadowRootRareDataV0 ? m_shadowRootRareDataV0->containsContentElements() : false;
|
| }
|
|
|
| bool ShadowRoot::containsShadowRoots() const
|
| {
|
| - return m_shadowRootRareData ? m_shadowRootRareData->containsShadowRoots() : 0;
|
| + return m_shadowRootRareData ? m_shadowRootRareData->containsShadowRoots() : false;
|
| }
|
|
|
| unsigned ShadowRoot::descendantShadowElementCount() const
|
| {
|
| - return m_shadowRootRareData ? m_shadowRootRareData->descendantShadowElementCount() : 0;
|
| + return m_shadowRootRareDataV0 ? m_shadowRootRareDataV0->descendantShadowElementCount() : 0;
|
| }
|
|
|
| HTMLShadowElement* ShadowRoot::shadowInsertionPointOfYoungerShadowRoot() const
|
| {
|
| - return m_shadowRootRareData ? m_shadowRootRareData->shadowInsertionPointOfYoungerShadowRoot() : 0;
|
| + return m_shadowRootRareDataV0 ? m_shadowRootRareDataV0->shadowInsertionPointOfYoungerShadowRoot() : nullptr;
|
| }
|
|
|
| void ShadowRoot::setShadowInsertionPointOfYoungerShadowRoot(HTMLShadowElement* shadowInsertionPoint)
|
| {
|
| - if (!m_shadowRootRareData && !shadowInsertionPoint)
|
| + if (!m_shadowRootRareDataV0 && !shadowInsertionPoint)
|
| return;
|
| - ensureShadowRootRareData()->setShadowInsertionPointOfYoungerShadowRoot(shadowInsertionPoint);
|
| + ensureShadowRootRareDataV0()->setShadowInsertionPointOfYoungerShadowRoot(shadowInsertionPoint);
|
| }
|
|
|
| void ShadowRoot::didAddInsertionPoint(InsertionPoint* insertionPoint)
|
| {
|
| - ensureShadowRootRareData()->didAddInsertionPoint(insertionPoint);
|
| + ensureShadowRootRareDataV0()->didAddInsertionPoint(insertionPoint);
|
| invalidateDescendantInsertionPoints();
|
| }
|
|
|
| void ShadowRoot::didRemoveInsertionPoint(InsertionPoint* insertionPoint)
|
| {
|
| - m_shadowRootRareData->didRemoveInsertionPoint(insertionPoint);
|
| + m_shadowRootRareDataV0->didRemoveInsertionPoint(insertionPoint);
|
| invalidateDescendantInsertionPoints();
|
| }
|
|
|
| @@ -259,14 +269,14 @@ unsigned ShadowRoot::childShadowRootCount() const
|
| void ShadowRoot::invalidateDescendantInsertionPoints()
|
| {
|
| m_descendantInsertionPointsIsValid = false;
|
| - m_shadowRootRareData->clearDescendantInsertionPoints();
|
| + m_shadowRootRareDataV0->clearDescendantInsertionPoints();
|
| }
|
|
|
| const HeapVector<Member<InsertionPoint>>& ShadowRoot::descendantInsertionPoints()
|
| {
|
| DEFINE_STATIC_LOCAL(HeapVector<Member<InsertionPoint>>, emptyList, (new HeapVector<Member<InsertionPoint>>));
|
| - if (m_shadowRootRareData && m_descendantInsertionPointsIsValid)
|
| - return m_shadowRootRareData->descendantInsertionPoints();
|
| + if (m_shadowRootRareDataV0 && m_descendantInsertionPointsIsValid)
|
| + return m_shadowRootRareDataV0->descendantInsertionPoints();
|
|
|
| m_descendantInsertionPointsIsValid = true;
|
|
|
| @@ -277,9 +287,9 @@ const HeapVector<Member<InsertionPoint>>& ShadowRoot::descendantInsertionPoints(
|
| for (InsertionPoint& insertionPoint : Traversal<InsertionPoint>::descendantsOf(*this))
|
| insertionPoints.append(&insertionPoint);
|
|
|
| - ensureShadowRootRareData()->setDescendantInsertionPoints(insertionPoints);
|
| + ensureShadowRootRareDataV0()->setDescendantInsertionPoints(insertionPoints);
|
|
|
| - return m_shadowRootRareData->descendantInsertionPoints();
|
| + return m_shadowRootRareDataV0->descendantInsertionPoints();
|
| }
|
|
|
| StyleSheetList* ShadowRoot::styleSheets()
|
| @@ -346,6 +356,7 @@ DEFINE_TRACE(ShadowRoot)
|
| visitor->trace(m_prev);
|
| visitor->trace(m_next);
|
| visitor->trace(m_shadowRootRareData);
|
| + visitor->trace(m_shadowRootRareDataV0);
|
| visitor->trace(m_slotAssignment);
|
| TreeScope::trace(visitor);
|
| DocumentFragment::trace(visitor);
|
|
|