| Index: Source/core/html/HTMLCollection.h
|
| diff --git a/Source/core/html/HTMLCollection.h b/Source/core/html/HTMLCollection.h
|
| index 6cf8122752a482d7174e32e10907c49dffb56064..26aff438926a2c8925f931130e8822e4ed6ec42a 100644
|
| --- a/Source/core/html/HTMLCollection.h
|
| +++ b/Source/core/html/HTMLCollection.h
|
| @@ -38,31 +38,20 @@ public:
|
| virtual void invalidateCache() const OVERRIDE;
|
|
|
| // DOM API
|
| + unsigned length() const { return m_collectionIndexCache.nodeCount(*this); }
|
| + Node* item(unsigned offset) const { return m_collectionIndexCache.nodeAt(*this, offset); }
|
| virtual Element* namedItem(const AtomicString& name) const;
|
|
|
| // Non-DOM API
|
| void namedItems(const AtomicString& name, Vector<RefPtr<Element> >&) const;
|
| - bool isEmpty() const
|
| - {
|
| - if (isLengthCacheValid())
|
| - return !cachedLength();
|
| - if (cachedItem())
|
| - return false;
|
| - return !item(0);
|
| - }
|
| - bool hasExactlyOneItem() const
|
| - {
|
| - if (isLengthCacheValid())
|
| - return cachedLength() == 1;
|
| - if (cachedItem())
|
| - return !cachedItemOffset() && !item(1);
|
| - return item(0) && !item(1);
|
| - }
|
| + bool isEmpty() const { return m_collectionIndexCache.isEmpty(*this); }
|
| + bool hasExactlyOneItem() const { return m_collectionIndexCache.hasExactlyOneNode(*this); }
|
|
|
| virtual Element* virtualItemAfter(Element*) const;
|
|
|
| + // CollectionIndexCache API.
|
| Element* traverseToFirstElement(const ContainerNode& root) const;
|
| - Element* traverseForwardToOffset(unsigned offset, Element& currentElement, unsigned& currentOffset, const ContainerNode& root) const;
|
| + Element* traverseForwardToOffset(unsigned offset, Node& currentElement, unsigned& currentOffset, const ContainerNode& root) const;
|
|
|
| protected:
|
| HTMLCollection(ContainerNode* base, CollectionType, ItemAfterOverrideType);
|
| @@ -92,6 +81,7 @@ private:
|
| mutable unsigned m_isNameCacheValid : 1;
|
| mutable NodeCacheMap m_idCache;
|
| mutable NodeCacheMap m_nameCache;
|
| + mutable CollectionIndexCache<HTMLCollection> m_collectionIndexCache;
|
|
|
| friend class LiveNodeListBase;
|
| };
|
|
|