| Index: Source/core/html/HTMLCollection.h
 | 
| diff --git a/Source/core/html/HTMLCollection.h b/Source/core/html/HTMLCollection.h
 | 
| index 16b57382f8e5be98a31994a0ccd104b91dfb8436..4f6d52a467a501c0402f0784c8d0a8aa38677569 100644
 | 
| --- a/Source/core/html/HTMLCollection.h
 | 
| +++ b/Source/core/html/HTMLCollection.h
 | 
| @@ -43,6 +43,7 @@ public:
 | 
|      static PassRefPtr<HTMLCollection> create(ContainerNode& base, CollectionType);
 | 
|      virtual ~HTMLCollection();
 | 
|      virtual void invalidateCache(Document* oldDocument = 0) const OVERRIDE;
 | 
| +    void invalidateCacheForAttribute(const QualifiedName*) const;
 | 
|  
 | 
|      // DOM API
 | 
|      unsigned length() const { return m_collectionIndexCache.nodeCount(*this); }
 | 
| @@ -140,10 +141,18 @@ private:
 | 
|      const unsigned m_shouldOnlyIncludeDirectChildren : 1;
 | 
|      mutable OwnPtr<NamedItemCache> m_namedItemCache;
 | 
|      mutable CollectionIndexCache<HTMLCollection, Element> m_collectionIndexCache;
 | 
| -
 | 
| -    friend class LiveNodeListBase;
 | 
|  };
 | 
|  
 | 
| +DEFINE_TYPE_CASTS(HTMLCollection, LiveNodeListBase, collection, isHTMLCollectionType(collection->type()), isHTMLCollectionType(collection.type()));
 | 
| +
 | 
| +inline void HTMLCollection::invalidateCacheForAttribute(const QualifiedName* attrName) const
 | 
| +{
 | 
| +    if (!attrName || shouldInvalidateTypeOnAttributeChange(invalidationType(), *attrName))
 | 
| +        invalidateCache();
 | 
| +    else if (*attrName == HTMLNames::idAttr || *attrName == HTMLNames::nameAttr)
 | 
| +        invalidateIdNameCacheMaps();
 | 
| +}
 | 
| +
 | 
|  } // namespace
 | 
|  
 | 
|  #endif
 | 
| 
 |