Index: Source/core/dom/LiveNodeList.h |
diff --git a/Source/core/dom/LiveNodeList.h b/Source/core/dom/LiveNodeList.h |
index cd1f9d1065d0f041dd93d97b9a98d483e19cb5c8..bb1f91f77e575d978207fc7347cfcddf95280f9b 100644 |
--- a/Source/core/dom/LiveNodeList.h |
+++ b/Source/core/dom/LiveNodeList.h |
@@ -48,7 +48,7 @@ public: |
DoesNotOverrideItemAfter, |
}; |
- LiveNodeListBase(Node* ownerNode, NodeListRootType rootType, NodeListInvalidationType invalidationType, |
+ LiveNodeListBase(ContainerNode* ownerNode, NodeListRootType rootType, NodeListInvalidationType invalidationType, |
bool shouldOnlyIncludeDirectChildren, CollectionType collectionType, ItemAfterOverrideType itemAfterOverrideType) |
: m_ownerNode(ownerNode) |
, m_cachedItem(0) |
@@ -60,6 +60,7 @@ public: |
, m_collectionType(collectionType) |
, m_overridesItemAfter(itemAfterOverrideType == OverridesItemAfter) |
{ |
+ ASSERT(m_ownerNode); |
ASSERT(m_rootType == static_cast<unsigned>(rootType)); |
ASSERT(m_invalidationType == static_cast<unsigned>(invalidationType)); |
ASSERT(m_collectionType == static_cast<unsigned>(collectionType)); |
@@ -82,7 +83,7 @@ public: |
ALWAYS_INLINE bool isRootedAtDocument() const { return m_rootType == NodeListIsRootedAtDocument || m_rootType == NodeListIsRootedAtDocumentIfOwnerHasItemrefAttr; } |
ALWAYS_INLINE NodeListInvalidationType invalidationType() const { return static_cast<NodeListInvalidationType>(m_invalidationType); } |
ALWAYS_INLINE CollectionType type() const { return static_cast<CollectionType>(m_collectionType); } |
- Node* ownerNode() const { return m_ownerNode.get(); } |
+ ContainerNode* ownerNode() const { return m_ownerNode.get(); } |
ALWAYS_INLINE void invalidateCache(const QualifiedName* attrName) const |
{ |
if (!attrName || shouldInvalidateTypeOnAttributeChange(invalidationType(), *attrName)) |
@@ -96,8 +97,7 @@ public: |
protected: |
Document& document() const { return m_ownerNode->document(); } |
- Node& rootNode() const; |
- ContainerNode* rootContainerNode() const; |
+ ContainerNode& rootNode() const; |
bool overridesItemAfter() const { return m_overridesItemAfter; } |
ALWAYS_INLINE bool isItemCacheValid() const { return m_isItemCacheValid; } |
@@ -123,14 +123,14 @@ protected: |
bool shouldOnlyIncludeDirectChildren() const { return m_shouldOnlyIncludeDirectChildren; } |
private: |
- Node* itemBeforeOrAfterCachedItem(unsigned offset, ContainerNode* root) const; |
+ Node* itemBeforeOrAfterCachedItem(unsigned offset, ContainerNode& root) const; |
bool isLastItemCloserThanLastOrCachedItem(unsigned offset) const; |
bool isFirstItemCloserThanCachedItem(unsigned offset) const; |
Node* iterateForPreviousNode(Node* current) const; |
Node* itemBefore(Node* previousItem) const; |
void invalidateIdNameCacheMaps() const; |
- RefPtr<Node> m_ownerNode; |
+ RefPtr<ContainerNode> m_ownerNode; // Cannot be null. |
mutable Node* m_cachedItem; |
mutable unsigned m_cachedLength; |
mutable unsigned m_cachedItemOffset; |
@@ -172,7 +172,7 @@ ALWAYS_INLINE bool LiveNodeListBase::shouldInvalidateTypeOnAttributeChange(NodeL |
class LiveNodeList : public NodeList, public LiveNodeListBase { |
public: |
- LiveNodeList(PassRefPtr<Node> ownerNode, CollectionType collectionType, NodeListInvalidationType invalidationType, NodeListRootType rootType = NodeListIsRootedAtNode) |
+ LiveNodeList(PassRefPtr<ContainerNode> ownerNode, CollectionType collectionType, NodeListInvalidationType invalidationType, NodeListRootType rootType = NodeListIsRootedAtNode) |
: LiveNodeListBase(ownerNode.get(), rootType, invalidationType, collectionType == ChildNodeListType, |
collectionType, DoesNotOverrideItemAfter) |
{ } |
@@ -185,7 +185,7 @@ public: |
using LiveNodeListBase::ownerNode; |
Node* traverseToFirstElement(ContainerNode& root) const; |
- Node* traverseForwardToOffset(unsigned offset, Node& currentNode, unsigned& currentOffset, ContainerNode* root) const; |
+ Node* traverseForwardToOffset(unsigned offset, Node& currentNode, unsigned& currentOffset, ContainerNode& root) const; |
private: |
virtual bool isLiveNodeList() const OVERRIDE FINAL { return true; } |