Chromium Code Reviews| 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..0f1b70b3baf319b284d2d637ccbe0e065f56ea4f 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]; |
| }; |
| @@ -55,6 +56,8 @@ ShadowRoot::ShadowRoot(Document& document, ShadowRootType type) |
| , TreeScope(*this, document) |
| , m_prev(nullptr) |
| , m_next(nullptr) |
| + , m_shadowRootRareData(nullptr) |
|
tkent
2016/04/21 05:46:01
You don't need to initialize Member<T> with nullpt
hayato
2016/04/21 06:33:27
Done
|
| + , m_shadowRootRareDataV0(nullptr) |
| , m_slotAssignment(nullptr) |
| , m_numberOfStyles(0) |
| , m_type(static_cast<unsigned>(type)) |
| @@ -194,14 +197,23 @@ 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() : 0; |
|
tkent
2016/04/21 05:46:01
0 -> false?
hayato
2016/04/21 06:33:27
Done
|
| } |
| bool ShadowRoot::containsContentElements() const |
| { |
| - return m_shadowRootRareData ? m_shadowRootRareData->containsContentElements() : 0; |
| + return m_shadowRootRareDataV0 ? m_shadowRootRareDataV0->containsContentElements() : 0; |
|
tkent
2016/04/21 05:46:01
0 -> false?
hayato
2016/04/21 06:33:27
Done
|
| } |
| bool ShadowRoot::containsShadowRoots() const |
| @@ -211,30 +223,30 @@ bool ShadowRoot::containsShadowRoots() const |
| 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() : 0; |
|
tkent
2016/04/21 05:46:00
0 -> nullptr?
hayato
2016/04/21 06:33:27
Done
|
| } |
| 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 +271,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 +289,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 +358,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); |