Index: Source/core/html/HTMLCollection.cpp |
diff --git a/Source/core/html/HTMLCollection.cpp b/Source/core/html/HTMLCollection.cpp |
index 12574b936ccf69480f342f8f8b7f4bbde8d46cb8..f9fa83177b29bf69c3a298c3488cef2d6f7bbccf 100644 |
--- a/Source/core/html/HTMLCollection.cpp |
+++ b/Source/core/html/HTMLCollection.cpp |
@@ -65,7 +65,6 @@ static bool shouldOnlyIncludeDirectChildren(CollectionType type) |
case TSectionRows: |
case TableTBodies: |
return true; |
- case ChildNodeListType: |
case NameNodeListType: |
case RadioNodeListType: |
case RadioImgNodeListType: |
@@ -104,7 +103,6 @@ static NodeListRootType rootTypeFromCollectionType(CollectionType type) |
case DataListOptions: |
case MapAreas: |
return NodeListIsRootedAtNode; |
- case ChildNodeListType: |
case NameNodeListType: |
case RadioNodeListType: |
case RadioImgNodeListType: |
@@ -150,7 +148,6 @@ static NodeListInvalidationType invalidationTypeExcludingIdAndNameAttributes(Col |
return InvalidateForFormControls; |
case ClassCollectionType: |
return InvalidateOnClassAttrChange; |
- case ChildNodeListType: |
case NameNodeListType: |
case RadioNodeListType: |
case RadioImgNodeListType: |
@@ -259,7 +256,6 @@ template <> inline bool isMatchingElement(const HTMLCollection& htmlCollection, |
case DocumentNamedItems: |
case TableRows: |
case WindowNamedItems: |
- case ChildNodeListType: |
case NameNodeListType: |
case RadioNodeListType: |
case RadioImgNodeListType: |
@@ -315,7 +311,7 @@ ALWAYS_INLINE Element* LiveNodeListBase::iterateForPreviousNode(const Collection |
} |
template <typename Collection> |
-Element* LiveNodeListBase::itemBefore(const Collection& collection, const Node* previous) |
+Element* LiveNodeListBase::itemBefore(const Collection& collection, const Element* previous) |
{ |
Node* current; |
if (LIKELY(!!previous)) // Without this LIKELY, length() and item() can be 10% slower. |
@@ -326,14 +322,12 @@ Element* LiveNodeListBase::itemBefore(const Collection& collection, const Node* |
return iterateForPreviousNode(collection, current); |
} |
-Node* LiveNodeList::itemBefore(const Node* previous) const |
+Element* LiveNodeList::itemBefore(const Element* previous) const |
{ |
- if (type() == ChildNodeListType) |
- return LIKELY(!!previous) ? previous->previousSibling() : rootNode().lastChild(); |
return LiveNodeListBase::itemBefore(*this, previous); |
} |
-Element* HTMLCollection::itemBefore(const Node* previous) const |
+Element* HTMLCollection::itemBefore(const Element* previous) const |
{ |
return LiveNodeListBase::itemBefore(*this, previous); |
} |
@@ -369,40 +363,18 @@ inline Element* traverseMatchingElementsForwardToOffset(const NodeListType& node |
return 0; |
} |
-static inline Node* traverseSiblingsForwardToOffset(unsigned offset, Node& currentNode, unsigned& currentOffset) |
-{ |
- ASSERT(currentOffset < offset); |
- Node* next = ¤tNode; |
- while ((next = next->nextSibling())) { |
- if (++currentOffset == offset) |
- return next; |
- } |
- return 0; |
-} |
- |
// FIXME: This should be in LiveNodeList.cpp but it needs to stay here until firstMatchingElement() |
// and others are moved to a separate header. |
-Node* LiveNodeList::traverseToFirstElement(const ContainerNode& root) const |
+Element* LiveNodeList::traverseToFirstElement(const ContainerNode& root) const |
{ |
- ASSERT(isLiveNodeListType(type())); |
- switch (type()) { |
- case ChildNodeListType: |
- return root.firstChild(); |
- default: |
- return firstMatchingElement(static_cast<const LiveNodeList&>(*this), root); |
- } |
+ return firstMatchingElement(*this, root); |
} |
// FIXME: This should be in LiveNodeList.cpp but it needs to stay here until traverseMatchingElementsForwardToOffset() |
// and others are moved to a separate header. |
-Node* LiveNodeList::traverseForwardToOffset(unsigned offset, Node& currentNode, unsigned& currentOffset, const ContainerNode& root) const |
+Element* LiveNodeList::traverseForwardToOffset(unsigned offset, Element& currentNode, unsigned& currentOffset, const ContainerNode& root) const |
{ |
- switch (type()) { |
- case ChildNodeListType: |
- return traverseSiblingsForwardToOffset(offset, currentNode, currentOffset); |
- default: |
- return traverseMatchingElementsForwardToOffset(*this, offset, toElement(currentNode), currentOffset, root); |
- } |
+ return traverseMatchingElementsForwardToOffset(*this, offset, currentNode, currentOffset, root); |
} |
Element* HTMLCollection::virtualItemAfter(Element*) const |