Node* ComposedTreeWalker::traverseChild(const Node* node, TraversalDirection direction) const { ASSERT(node); ElementShadow* shadow = shadowFor(node); return shadow ? traverseLightChildren(shadow->youngestShadowRoot(), direction) : traverseLightChildren(node, direction); }
Node* ComposedShadowTreeWalker::traverseChild(const Node* node, TraversalDirection direction) const { ASSERT(node); if (canCrossUpperBoundary()) { return node->shadowRoot() ? traverseLightChildren(node->shadowRoot(), direction) : traverseLightChildren(node, direction); } if (isShadowHost(node)) return 0; return traverseLightChildren(node, direction); }
Node* ComposedShadowTreeWalker::traverseChild(const Node* node, TraversalDirection direction) const { ASSERT(node); if (canCrossUpperBoundary()) { ElementShadow* shadow = shadowFor(node); return shadow ? traverseLightChildren(shadow->youngestShadowRoot(), direction) : traverseLightChildren(node, direction); } if (isShadowHost(node)) return 0; return traverseLightChildren(node, direction); }
Node* ComposedShadowTreeWalker::traverseNode(const Node* node, TraversalDirection direction) { ASSERT(node); if (!isActiveInsertionPoint(node)) return const_cast<Node*>(node); const InsertionPoint* insertionPoint = toInsertionPoint(node); if (Node* found = traverseDistributedNodes(direction == TraversalDirectionForward ? insertionPoint->first() : insertionPoint->last(), insertionPoint, direction)) return found; return traverseLightChildren(node, direction); }
Node* ComposedShadowTreeWalker::traverseNode(const Node* node, TraversalDirection direction) { ASSERT(node); if (!isInsertionPoint(node)) return const_cast<Node*>(node); const InsertionPoint* insertionPoint = toInsertionPoint(node); if (!insertionPoint->isActive()) return const_cast<Node*>(node); if (Node* next = (direction == TraversalDirectionForward ? insertionPoint->first() : insertionPoint->last())) return traverseNode(next, direction); return traverseLightChildren(node, direction); }