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

Unified Diff: sky/engine/core/dom/shadow/ShadowRoot.cpp

Issue 862183003: Merge ShadowRootRareData into ShadowRoot. (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 11 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
« no previous file with comments | « sky/engine/core/dom/shadow/ShadowRoot.h ('k') | sky/engine/core/dom/shadow/ShadowRootRareData.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: sky/engine/core/dom/shadow/ShadowRoot.cpp
diff --git a/sky/engine/core/dom/shadow/ShadowRoot.cpp b/sky/engine/core/dom/shadow/ShadowRoot.cpp
index f2084717f2611d634fab3b1abd9a182f5df1dc5c..ff08945187b12b5de9ad2e8b112548de8547f757 100644
--- a/sky/engine/core/dom/shadow/ShadowRoot.cpp
+++ b/sky/engine/core/dom/shadow/ShadowRoot.cpp
@@ -35,14 +35,13 @@
#include "sky/engine/core/dom/Text.h"
#include "sky/engine/core/dom/shadow/ElementShadow.h"
#include "sky/engine/core/dom/shadow/InsertionPoint.h"
-#include "sky/engine/core/dom/shadow/ShadowRootRareData.h"
#include "sky/engine/public/platform/Platform.h"
namespace blink {
struct SameSizeAsShadowRoot : public DocumentFragment, public TreeScope {
- void* pointers[1];
- unsigned countersAndFlags[1];
+ Vector<RefPtr<InsertionPoint>> vector;
+ unsigned countersAndFlags[3];
};
COMPILE_ASSERT(sizeof(ShadowRoot) == sizeof(SameSizeAsShadowRoot), shadowroot_should_stay_small);
@@ -50,6 +49,8 @@ COMPILE_ASSERT(sizeof(ShadowRoot) == sizeof(SameSizeAsShadowRoot), shadowroot_sh
ShadowRoot::ShadowRoot(Document& document)
: DocumentFragment(0, CreateShadowRoot)
, TreeScope(*this, document)
+ , m_descendantContentElementCount(0)
+ , m_childShadowRootCount(0)
, m_descendantInsertionPointsIsValid(false)
{
}
@@ -75,6 +76,7 @@ ShadowRoot::~ShadowRoot()
void ShadowRoot::dispose()
{
+ invalidateDescendantInsertionPoints();
removeDetachedChildren();
}
@@ -84,6 +86,16 @@ PassRefPtr<Node> ShadowRoot::cloneNode(bool, ExceptionState& exceptionState)
return nullptr;
}
+PassRefPtr<Node> ShadowRoot::cloneNode(ExceptionState& exceptionState)
+{
+ return cloneNode(exceptionState);
+}
+
+PassRefPtr<Node> ShadowRoot::cloneNode(bool deep)
+{
+ return nullptr;
+}
+
void ShadowRoot::recalcStyle(StyleRecalcChange change)
{
if (styleChangeType() >= SubtreeStyleChange)
@@ -134,79 +146,64 @@ void ShadowRoot::removedFrom(ContainerNode* insertionPoint)
DocumentFragment::removedFrom(insertionPoint);
}
-ShadowRootRareData* ShadowRoot::ensureShadowRootRareData()
+void ShadowRoot::didAddInsertionPoint()
{
- if (m_shadowRootRareData)
- return m_shadowRootRareData.get();
-
- m_shadowRootRareData = adoptPtr(new ShadowRootRareData);
- return m_shadowRootRareData.get();
-}
-
-bool ShadowRoot::containsContentElements() const
-{
- return m_shadowRootRareData ? m_shadowRootRareData->containsContentElements() : 0;
-}
-
-bool ShadowRoot::containsShadowRoots() const
-{
- return m_shadowRootRareData ? m_shadowRootRareData->containsShadowRoots() : 0;
-}
-
-void ShadowRoot::didAddInsertionPoint(InsertionPoint* insertionPoint)
-{
- ensureShadowRootRareData()->didAddInsertionPoint(insertionPoint);
+ ++m_descendantContentElementCount;
invalidateDescendantInsertionPoints();
}
-void ShadowRoot::didRemoveInsertionPoint(InsertionPoint* insertionPoint)
+void ShadowRoot::didRemoveInsertionPoint()
{
- m_shadowRootRareData->didRemoveInsertionPoint(insertionPoint);
+ ASSERT(m_descendantContentElementCount);
+ --m_descendantContentElementCount;
invalidateDescendantInsertionPoints();
}
void ShadowRoot::addChildShadowRoot()
{
- ensureShadowRootRareData()->didAddChildShadowRoot();
+ ++m_childShadowRootCount;
}
void ShadowRoot::removeChildShadowRoot()
{
- // FIXME: Why isn't this an ASSERT?
- if (!m_shadowRootRareData)
- return;
- m_shadowRootRareData->didRemoveChildShadowRoot();
+ ASSERT(m_childShadowRootCount);
+ --m_childShadowRootCount;
+}
+
+void ShadowRoot::invalidateDescendantInsertionPoints()
+{
+ m_descendantInsertionPointsIsValid = false;
+ m_descendantInsertionPoints.clear();
}
-unsigned ShadowRoot::childShadowRootCount() const
+bool ShadowRoot::containsContentElements() const
{
- return m_shadowRootRareData ? m_shadowRootRareData->childShadowRootCount() : 0;
+ return m_descendantContentElementCount;
}
-void ShadowRoot::invalidateDescendantInsertionPoints()
+bool ShadowRoot::containsShadowRoots() const
{
- m_descendantInsertionPointsIsValid = false;
- m_shadowRootRareData->clearDescendantInsertionPoints();
+ return m_childShadowRootCount;
}
const Vector<RefPtr<InsertionPoint> >& ShadowRoot::descendantInsertionPoints()
{
DEFINE_STATIC_LOCAL(Vector<RefPtr<InsertionPoint> >, emptyList, ());
- if (m_shadowRootRareData && m_descendantInsertionPointsIsValid)
- return m_shadowRootRareData->descendantInsertionPoints();
+ if (m_descendantInsertionPointsIsValid)
+ return m_descendantInsertionPoints;
m_descendantInsertionPointsIsValid = true;
- if (!containsInsertionPoints())
+ if (!containsContentElements())
return emptyList;
Vector<RefPtr<InsertionPoint> > insertionPoints;
for (InsertionPoint* insertionPoint = Traversal<InsertionPoint>::firstWithin(*this); insertionPoint; insertionPoint = Traversal<InsertionPoint>::next(*insertionPoint, this))
insertionPoints.append(insertionPoint);
- ensureShadowRootRareData()->setDescendantInsertionPoints(insertionPoints);
+ m_descendantInsertionPoints.swap(insertionPoints);
- return m_shadowRootRareData->descendantInsertionPoints();
+ return m_descendantInsertionPoints;
}
}
« no previous file with comments | « sky/engine/core/dom/shadow/ShadowRoot.h ('k') | sky/engine/core/dom/shadow/ShadowRootRareData.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698