Title: [155264] trunk/Source/WebCore
- Revision
- 155264
- Author
- [email protected]
- Date
- 2013-09-07 15:30:41 -0700 (Sat, 07 Sep 2013)
Log Message
Simplify ComposedShadowTreeWalker parent traversal
https://bugs.webkit.org/show_bug.cgi?id=120971
Reviewed by Andreas Kling.
Combine a bunch of parent traversal functions into one.
* dom/ComposedShadowTreeWalker.cpp:
(WebCore::ComposedShadowTreeWalker::traverseParent):
(WebCore::ComposedShadowTreeWalker::previous):
* dom/ComposedShadowTreeWalker.h:
Remove unused fromFirstChild.
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (155263 => 155264)
--- trunk/Source/WebCore/ChangeLog 2013-09-07 22:20:15 UTC (rev 155263)
+++ trunk/Source/WebCore/ChangeLog 2013-09-07 22:30:41 UTC (rev 155264)
@@ -1,3 +1,19 @@
+2013-09-07 Antti Koivisto <[email protected]>
+
+ Simplify ComposedShadowTreeWalker parent traversal
+ https://bugs.webkit.org/show_bug.cgi?id=120971
+
+ Reviewed by Andreas Kling.
+
+ Combine a bunch of parent traversal functions into one.
+
+ * dom/ComposedShadowTreeWalker.cpp:
+ (WebCore::ComposedShadowTreeWalker::traverseParent):
+ (WebCore::ComposedShadowTreeWalker::previous):
+ * dom/ComposedShadowTreeWalker.h:
+
+ Remove unused fromFirstChild.
+
2013-09-07 Anders Carlsson <[email protected]>
Get rid of PassOwnArrayPtr
Modified: trunk/Source/WebCore/dom/ComposedShadowTreeWalker.cpp (155263 => 155264)
--- trunk/Source/WebCore/dom/ComposedShadowTreeWalker.cpp 2013-09-07 22:20:15 UTC (rev 155263)
+++ trunk/Source/WebCore/dom/ComposedShadowTreeWalker.cpp 2013-09-07 22:30:41 UTC (rev 155264)
@@ -52,13 +52,6 @@
return false;
}
-ComposedShadowTreeWalker ComposedShadowTreeWalker::fromFirstChild(const Node* node, Policy policy)
-{
- ComposedShadowTreeWalker walker(node, policy);
- walker.firstChild();
- return walker;
-}
-
void ComposedShadowTreeWalker::firstChild()
{
assertPrecondition();
@@ -178,16 +171,6 @@
return 0;
}
-inline Node* ComposedShadowTreeWalker::traverseNodeEscapingFallbackContents(const Node* node) const
-{
- ASSERT(node);
- if (!node->isInsertionPoint())
- return const_cast<Node*>(node);
- const InsertionPoint* insertionPoint = toInsertionPoint(node);
- return insertionPoint->hasDistribution() ? 0 :
- insertionPoint->isActive() ? traverseParent(node) : const_cast<Node*>(node);
-}
-
void ComposedShadowTreeWalker::parent()
{
assertPrecondition();
@@ -195,8 +178,6 @@
assertPostcondition();
}
-// FIXME: Use an iterative algorithm so that it can be inlined.
-// https://bugs.webkit.org/show_bug.cgi?id=90415
Node* ComposedShadowTreeWalker::traverseParent(const Node* node) const
{
if (node->isPseudoElement())
@@ -208,26 +189,23 @@
if (nodeCanBeDistributed(node)) {
if (InsertionPoint* insertionPoint = findInsertionPointOf(node))
return traverseParent(insertionPoint);
- return 0;
+ return nullptr;
}
- return traverseParentInCurrentTree(node);
-}
+ ContainerNode* parent = node->parentNode();
+ if (!parent)
+ return nullptr;
-inline Node* ComposedShadowTreeWalker::traverseParentInCurrentTree(const Node* node) const
-{
- if (Node* parent = node->parentNode())
- return parent->isShadowRoot() ? traverseParentBackToShadowRootOrHost(toShadowRoot(parent)) : traverseNodeEscapingFallbackContents(parent);
- return 0;
-}
+ if (parent->isShadowRoot())
+ return canCrossUpperBoundary() ? toShadowRoot(parent)->hostElement() : parent;
-Node* ComposedShadowTreeWalker::traverseParentBackToShadowRootOrHost(const ShadowRoot* shadowRoot) const
-{
- ASSERT(shadowRoot);
-
- if (canCrossUpperBoundary())
- return shadowRoot->hostElement();
-
- return const_cast<ShadowRoot*>(shadowRoot);
+ if (parent->isInsertionPoint()) {
+ const InsertionPoint* insertionPoint = toInsertionPoint(parent);
+ if (insertionPoint->hasDistribution())
+ return nullptr;
+ if (insertionPoint->isActive())
+ return traverseParent(parent);
+ }
+ return parent;
}
Node* ComposedShadowTreeWalker::traverseNextSibling(const Node* node)
@@ -266,7 +244,7 @@
n = child;
m_node = n;
} else
- parent();
+ m_node = traverseParent(m_node);
assertPostcondition();
}
Modified: trunk/Source/WebCore/dom/ComposedShadowTreeWalker.h (155263 => 155264)
--- trunk/Source/WebCore/dom/ComposedShadowTreeWalker.h 2013-09-07 22:20:15 UTC (rev 155263)
+++ trunk/Source/WebCore/dom/ComposedShadowTreeWalker.h 2013-09-07 22:30:41 UTC (rev 155264)
@@ -52,10 +52,6 @@
ComposedShadowTreeWalker(const Node*, Policy = CrossUpperBoundary, StartPolicy = CannotStartFromShadowBoundary);
- // For a common use case such as:
- // for (ComposedShadowTreeWalker walker = ComposedShadowTreeWalker::fromFirstChild(node); walker.get(); walker.nextSibling())
- static ComposedShadowTreeWalker fromFirstChild(const Node*, Policy = CrossUpperBoundary);
-
Node* get() const { return const_cast<Node*>(m_node); }
void firstChild();
@@ -115,10 +111,6 @@
static Node* escapeFallbackContentElement(const Node*, TraversalDirection);
- Node* traverseNodeEscapingFallbackContents(const Node*) const;
- Node* traverseParentInCurrentTree(const Node*) const;
- Node* traverseParentBackToShadowRootOrHost(const ShadowRoot*) const;
-
const Node* m_node;
Policy m_policy;
};
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes