| 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 76797f1bd010a02dce6a3792e3d6d5a84de32faa..cb6536bcb8140e6482620e47143750abebf88e48 100644
|
| --- a/third_party/WebKit/Source/core/dom/shadow/ShadowRoot.cpp
|
| +++ b/third_party/WebKit/Source/core/dom/shadow/ShadowRoot.cpp
|
| @@ -43,9 +43,9 @@
|
|
|
| namespace blink {
|
|
|
| -struct SameSizeAsShadowRoot : public DocumentFragment, public TreeScope, public DoublyLinkedListNode<ShadowRoot> {
|
| +struct SameSizeAsShadowRoot : public DocumentFragment, public TreeScope {
|
| char emptyClassFieldsDueToGCMixinMarker[1];
|
| - Member<void*> willbeMember[5];
|
| + Member<void*> willbeMember[3];
|
| unsigned countersAndFlags[1];
|
| };
|
|
|
| @@ -54,9 +54,6 @@ static_assert(sizeof(ShadowRoot) == sizeof(SameSizeAsShadowRoot), "ShadowRoot sh
|
| ShadowRoot::ShadowRoot(Document& document, ShadowRootType type)
|
| : DocumentFragment(0, CreateShadowRoot)
|
| , TreeScope(*this, document)
|
| - , m_prev(nullptr)
|
| - , m_next(nullptr)
|
| - , m_slotAssignment(nullptr)
|
| , m_numberOfStyles(0)
|
| , m_type(static_cast<unsigned>(type))
|
| , m_registeredWithParentShadowRoot(false)
|
| @@ -70,6 +67,20 @@ ShadowRoot::~ShadowRoot()
|
| {
|
| }
|
|
|
| +ShadowRoot* ShadowRoot::youngerShadowRoot() const
|
| +{
|
| + if (type() == ShadowRootType::V0 && m_shadowRootRareDataV0)
|
| + return m_shadowRootRareDataV0->youngerShadowRoot();
|
| + return nullptr;
|
| +}
|
| +
|
| +ShadowRoot* ShadowRoot::olderShadowRoot() const
|
| +{
|
| + if (type() == ShadowRootType::V0 && m_shadowRootRareDataV0)
|
| + return m_shadowRootRareDataV0->olderShadowRoot();
|
| + return nullptr;
|
| +}
|
| +
|
| ShadowRoot* ShadowRoot::olderShadowRootForBindings() const
|
| {
|
| ShadowRoot* older = olderShadowRoot();
|
| @@ -79,6 +90,18 @@ ShadowRoot* ShadowRoot::olderShadowRootForBindings() const
|
| return older;
|
| }
|
|
|
| +void ShadowRoot::setYoungerShadowRoot(ShadowRoot& root)
|
| +{
|
| + DCHECK_EQ(type(), ShadowRootType::V0);
|
| + ensureShadowRootRareDataV0().setYoungerShadowRoot(root);
|
| +}
|
| +
|
| +void ShadowRoot::setOlderShadowRoot(ShadowRoot& root)
|
| +{
|
| + DCHECK_EQ(type(), ShadowRootType::V0);
|
| + ensureShadowRootRareDataV0().setOlderShadowRoot(root);
|
| +}
|
| +
|
| Node* ShadowRoot::cloneNode(bool, ExceptionState& exceptionState)
|
| {
|
| exceptionState.throwDOMException(NotSupportedError, "ShadowRoot nodes are not clonable.");
|
| @@ -186,22 +209,22 @@ void ShadowRoot::unregisterScopedHTMLStyleChild()
|
| --m_numberOfStyles;
|
| }
|
|
|
| -ShadowRootRareData* ShadowRoot::ensureShadowRootRareData()
|
| +ShadowRootRareData& ShadowRoot::ensureShadowRootRareData()
|
| {
|
| if (m_shadowRootRareData)
|
| - return m_shadowRootRareData.get();
|
| + return *m_shadowRootRareData;
|
|
|
| m_shadowRootRareData = new ShadowRootRareData;
|
| - return m_shadowRootRareData.get();
|
| + return *m_shadowRootRareData;
|
| }
|
|
|
| -ShadowRootRareDataV0* ShadowRoot::ensureShadowRootRareDataV0()
|
| +ShadowRootRareDataV0& ShadowRoot::ensureShadowRootRareDataV0()
|
| {
|
| if (m_shadowRootRareDataV0)
|
| - return m_shadowRootRareDataV0.get();
|
| + return *m_shadowRootRareDataV0;
|
|
|
| m_shadowRootRareDataV0 = new ShadowRootRareDataV0;
|
| - return m_shadowRootRareDataV0.get();
|
| + return *m_shadowRootRareDataV0;
|
| }
|
|
|
| bool ShadowRoot::containsShadowElements() const
|
| @@ -233,12 +256,12 @@ void ShadowRoot::setShadowInsertionPointOfYoungerShadowRoot(HTMLShadowElement* s
|
| {
|
| if (!m_shadowRootRareDataV0 && !shadowInsertionPoint)
|
| return;
|
| - ensureShadowRootRareDataV0()->setShadowInsertionPointOfYoungerShadowRoot(shadowInsertionPoint);
|
| + ensureShadowRootRareDataV0().setShadowInsertionPointOfYoungerShadowRoot(shadowInsertionPoint);
|
| }
|
|
|
| void ShadowRoot::didAddInsertionPoint(InsertionPoint* insertionPoint)
|
| {
|
| - ensureShadowRootRareDataV0()->didAddInsertionPoint(insertionPoint);
|
| + ensureShadowRootRareDataV0().didAddInsertionPoint(insertionPoint);
|
| invalidateDescendantInsertionPoints();
|
| }
|
|
|
| @@ -250,7 +273,7 @@ void ShadowRoot::didRemoveInsertionPoint(InsertionPoint* insertionPoint)
|
|
|
| void ShadowRoot::addChildShadowRoot()
|
| {
|
| - ensureShadowRootRareData()->didAddChildShadowRoot();
|
| + ensureShadowRootRareData().didAddChildShadowRoot();
|
| }
|
|
|
| void ShadowRoot::removeChildShadowRoot()
|
| @@ -287,14 +310,14 @@ const HeapVector<Member<InsertionPoint>>& ShadowRoot::descendantInsertionPoints(
|
| for (InsertionPoint& insertionPoint : Traversal<InsertionPoint>::descendantsOf(*this))
|
| insertionPoints.append(&insertionPoint);
|
|
|
| - ensureShadowRootRareDataV0()->setDescendantInsertionPoints(insertionPoints);
|
| + ensureShadowRootRareDataV0().setDescendantInsertionPoints(insertionPoints);
|
|
|
| return m_shadowRootRareDataV0->descendantInsertionPoints();
|
| }
|
|
|
| StyleSheetList* ShadowRoot::styleSheets()
|
| {
|
| - if (!ensureShadowRootRareData()->styleSheets())
|
| + if (!ensureShadowRootRareData().styleSheets())
|
| m_shadowRootRareData->setStyleSheets(StyleSheetList::create(this));
|
|
|
| return m_shadowRootRareData->styleSheets();
|
| @@ -302,7 +325,7 @@ StyleSheetList* ShadowRoot::styleSheets()
|
|
|
| void ShadowRoot::didAddSlot()
|
| {
|
| - ensureShadowRootRareData()->didAddSlot();
|
| + ensureShadowRootRareData().didAddSlot();
|
| invalidateDescendantSlots();
|
| }
|
|
|
| @@ -353,8 +376,6 @@ void ShadowRoot::distributeV1()
|
|
|
| DEFINE_TRACE(ShadowRoot)
|
| {
|
| - visitor->trace(m_prev);
|
| - visitor->trace(m_next);
|
| visitor->trace(m_shadowRootRareData);
|
| visitor->trace(m_shadowRootRareDataV0);
|
| visitor->trace(m_slotAssignment);
|
|
|