Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(366)

Unified Diff: third_party/WebKit/Source/core/dom/shadow/ShadowRoot.cpp

Issue 1925043002: Clean up ShadowRootRareData, ShadowRoot and SlotAssignment (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fixed Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 078e1fa9f04f0acc8897806043f65df5fb9f2d97..c7d7c0dfb8490ef8c2cf3ba8f554390abc5e4f92 100644
--- a/third_party/WebKit/Source/core/dom/shadow/ShadowRoot.cpp
+++ b/third_party/WebKit/Source/core/dom/shadow/ShadowRoot.cpp
@@ -35,10 +35,11 @@
#include "core/dom/Text.h"
#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/dom/shadow/SlotAssignment.h"
#include "core/editing/serializers/Serialization.h"
#include "core/html/HTMLShadowElement.h"
+#include "core/html/HTMLSlotElement.h"
#include "public/platform/Platform.h"
namespace blink {
@@ -55,6 +56,7 @@ ShadowRoot::ShadowRoot(Document& document, ShadowRootType type)
: DocumentFragment(0, CreateShadowRoot)
, TreeScope(*this, document)
, m_numberOfStyles(0)
+ , m_childShadowRootCount(0)
, m_type(static_cast<unsigned>(type))
, m_registeredWithParentShadowRoot(false)
, m_descendantInsertionPointsIsValid(false)
@@ -102,6 +104,19 @@ void ShadowRoot::setOlderShadowRoot(ShadowRoot& root)
ensureShadowRootRareDataV0().setOlderShadowRoot(root);
}
+SlotAssignment& ShadowRoot::ensureSlotAssignment()
+{
+ if (!m_slotAssignment)
+ m_slotAssignment = SlotAssignment::create();
+ return *m_slotAssignment;
+}
+
+HTMLSlotElement* ShadowRoot::assignedSlotFor(const Node& node) const
+{
+ DCHECK(m_slotAssignment);
+ return m_slotAssignment->assignedSlotFor(node);
+}
+
Node* ShadowRoot::cloneNode(bool, ExceptionState& exceptionState)
{
exceptionState.throwDOMException(NotSupportedError, "ShadowRoot nodes are not clonable.");
@@ -209,15 +224,6 @@ void ShadowRoot::unregisterScopedHTMLStyleChild()
--m_numberOfStyles;
}
-ShadowRootRareData& ShadowRoot::ensureShadowRootRareData()
-{
- if (m_shadowRootRareData)
- return *m_shadowRootRareData;
-
- m_shadowRootRareData = new ShadowRootRareData;
- return *m_shadowRootRareData;
-}
-
ShadowRootRareDataV0& ShadowRoot::ensureShadowRootRareDataV0()
{
if (m_shadowRootRareDataV0)
@@ -237,11 +243,6 @@ bool ShadowRoot::containsContentElements() const
return m_shadowRootRareDataV0 ? m_shadowRootRareDataV0->containsContentElements() : false;
}
-bool ShadowRoot::containsShadowRoots() const
-{
- return m_shadowRootRareData ? m_shadowRootRareData->containsShadowRoots() : false;
-}
-
unsigned ShadowRoot::descendantShadowElementCount() const
{
return m_shadowRootRareDataV0 ? m_shadowRootRareDataV0->descendantShadowElementCount() : 0;
@@ -271,24 +272,6 @@ void ShadowRoot::didRemoveInsertionPoint(InsertionPoint* insertionPoint)
invalidateDescendantInsertionPoints();
}
-void ShadowRoot::addChildShadowRoot()
-{
- ensureShadowRootRareData().didAddChildShadowRoot();
-}
-
-void ShadowRoot::removeChildShadowRoot()
-{
- // FIXME: Why isn't this an ASSERT?
- if (!m_shadowRootRareData)
- return;
- m_shadowRootRareData->didRemoveChildShadowRoot();
-}
-
-unsigned ShadowRoot::childShadowRootCount() const
-{
- return m_shadowRootRareData ? m_shadowRootRareData->childShadowRootCount() : 0;
-}
-
void ShadowRoot::invalidateDescendantInsertionPoints()
{
m_descendantInsertionPointsIsValid = false;
@@ -315,56 +298,56 @@ const HeapVector<Member<InsertionPoint>>& ShadowRoot::descendantInsertionPoints(
return m_shadowRootRareDataV0->descendantInsertionPoints();
}
-StyleSheetList* ShadowRoot::styleSheets()
+StyleSheetList& ShadowRoot::styleSheets()
{
- if (!ensureShadowRootRareData().styleSheets())
- m_shadowRootRareData->setStyleSheets(StyleSheetList::create(this));
-
- return m_shadowRootRareData->styleSheets();
+ if (!m_styleSheetList)
+ setStyleSheets(StyleSheetList::create(this));
+ return *m_styleSheetList;
}
void ShadowRoot::didAddSlot()
{
- ensureShadowRootRareData().didAddSlot();
+ ensureSlotAssignment().didAddSlot();
invalidateDescendantSlots();
}
void ShadowRoot::didRemoveSlot()
{
- DCHECK(m_shadowRootRareData);
- m_shadowRootRareData->didRemoveSlot();
+ DCHECK(m_slotAssignment);
+ m_slotAssignment->didRemoveSlot();
invalidateDescendantSlots();
}
void ShadowRoot::invalidateDescendantSlots()
{
+ DCHECK(m_slotAssignment);
m_descendantSlotsIsValid = false;
- m_shadowRootRareData->clearDescendantSlots();
+ m_slotAssignment->clearDescendantSlots();
}
unsigned ShadowRoot::descendantSlotCount() const
{
- return m_shadowRootRareData ? m_shadowRootRareData->descendantSlotCount() : 0;
+ return m_slotAssignment ? m_slotAssignment->descendantSlotCount() : 0;
}
const HeapVector<Member<HTMLSlotElement>>& ShadowRoot::descendantSlots()
{
DEFINE_STATIC_LOCAL(HeapVector<Member<HTMLSlotElement>>, emptyList, (new HeapVector<Member<HTMLSlotElement>>));
if (m_descendantSlotsIsValid) {
- DCHECK(m_shadowRootRareData);
- return m_shadowRootRareData->descendantSlots();
+ DCHECK(m_slotAssignment);
+ return m_slotAssignment->descendantSlots();
}
if (descendantSlotCount() == 0)
return emptyList;
- DCHECK(m_shadowRootRareData);
+ DCHECK(m_slotAssignment);
HeapVector<Member<HTMLSlotElement>> slots;
slots.reserveCapacity(descendantSlotCount());
for (HTMLSlotElement& slot : Traversal<HTMLSlotElement>::descendantsOf(rootNode()))
slots.append(&slot);
- m_shadowRootRareData->setDescendantSlots(slots);
+ m_slotAssignment->setDescendantSlots(slots);
m_descendantSlotsIsValid = true;
- return m_shadowRootRareData->descendantSlots();
+ return m_slotAssignment->descendantSlots();
}
void ShadowRoot::assignV1()
@@ -383,9 +366,9 @@ void ShadowRoot::distributeV1()
DEFINE_TRACE(ShadowRoot)
{
- visitor->trace(m_shadowRootRareData);
visitor->trace(m_shadowRootRareDataV0);
visitor->trace(m_slotAssignment);
+ visitor->trace(m_styleSheetList);
TreeScope::trace(visitor);
DocumentFragment::trace(visitor);
}
« no previous file with comments | « third_party/WebKit/Source/core/dom/shadow/ShadowRoot.h ('k') | third_party/WebKit/Source/core/dom/shadow/ShadowRootRareData.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698