| Index: Source/core/html/HTMLCollection.cpp
|
| diff --git a/Source/core/html/HTMLCollection.cpp b/Source/core/html/HTMLCollection.cpp
|
| index 42f5c65f8be8be9ae8f8a78990043b065f57cb05..79bb5313c1683fd942be761d22b421a8b4c591e2 100644
|
| --- a/Source/core/html/HTMLCollection.cpp
|
| +++ b/Source/core/html/HTMLCollection.cpp
|
| @@ -166,18 +166,20 @@ HTMLCollection::HTMLCollection(ContainerNode& ownerNode, CollectionType type, It
|
| ScriptWrappable::init(this);
|
| }
|
|
|
| -PassRefPtr<HTMLCollection> HTMLCollection::create(ContainerNode& base, CollectionType type)
|
| +PassRefPtrWillBeRawPtr<HTMLCollection> HTMLCollection::create(ContainerNode& base, CollectionType type)
|
| {
|
| - return adoptRef(new HTMLCollection(base, type, DoesNotOverrideItemAfter));
|
| + return adoptRefWillBeNoop(new HTMLCollection(base, type, DoesNotOverrideItemAfter));
|
| }
|
|
|
| HTMLCollection::~HTMLCollection()
|
| {
|
| +#if !ENABLE(OILPAN)
|
| if (hasValidIdNameCache())
|
| unregisterIdNameCacheFromDocument(document());
|
| // Named HTMLCollection types remove cache by themselves.
|
| if (isUnnamedHTMLCollectionType(type()))
|
| ownerNode().nodeLists()->removeCache(this, type());
|
| +#endif
|
| }
|
|
|
| void HTMLCollection::invalidateCache(Document* oldDocument) const
|
| @@ -420,11 +422,11 @@ Element* HTMLCollection::namedItem(const AtomicString& name) const
|
| updateIdNameCache();
|
|
|
| const NamedItemCache& cache = namedItemCache();
|
| - Vector<Element*>* idResults = cache.getElementsById(name);
|
| + WillBeHeapVector<RawPtrWillBeMember<Element> >* idResults = cache.getElementsById(name);
|
| if (idResults && !idResults->isEmpty())
|
| return idResults->first();
|
|
|
| - Vector<Element*>* nameResults = cache.getElementsByName(name);
|
| + WillBeHeapVector<RawPtrWillBeMember<Element> >* nameResults = cache.getElementsByName(name);
|
| if (nameResults && !nameResults->isEmpty())
|
| return nameResults->first();
|
|
|
| @@ -475,7 +477,7 @@ void HTMLCollection::updateIdNameCache() const
|
| if (hasValidIdNameCache())
|
| return;
|
|
|
| - OwnPtr<NamedItemCache> cache = NamedItemCache::create();
|
| + OwnPtrWillBeRawPtr<NamedItemCache> cache = NamedItemCache::create();
|
| for (Element* element = traverseToFirstElement(); element; element = traverseNextElement(*element)) {
|
| const AtomicString& idAttrVal = element->getIdAttribute();
|
| if (!idAttrVal.isEmpty())
|
| @@ -490,7 +492,7 @@ void HTMLCollection::updateIdNameCache() const
|
| setNamedItemCache(cache.release());
|
| }
|
|
|
| -void HTMLCollection::namedItems(const AtomicString& name, Vector<RefPtr<Element> >& result) const
|
| +void HTMLCollection::namedItems(const AtomicString& name, WillBeHeapVector<RefPtrWillBeMember<Element> >& result) const
|
| {
|
| ASSERT(result.isEmpty());
|
| if (name.isEmpty())
|
| @@ -499,8 +501,8 @@ void HTMLCollection::namedItems(const AtomicString& name, Vector<RefPtr<Element>
|
| updateIdNameCache();
|
|
|
| const NamedItemCache& cache = namedItemCache();
|
| - Vector<Element*>* idResults = cache.getElementsById(name);
|
| - Vector<Element*>* nameResults = cache.getElementsByName(name);
|
| + WillBeHeapVector<RawPtrWillBeMember<Element> >* idResults = cache.getElementsById(name);
|
| + WillBeHeapVector<RawPtrWillBeMember<Element> >* nameResults = cache.getElementsByName(name);
|
|
|
| for (unsigned i = 0; idResults && i < idResults->size(); ++i)
|
| result.append(idResults->at(i));
|
| @@ -513,4 +515,11 @@ HTMLCollection::NamedItemCache::NamedItemCache()
|
| {
|
| }
|
|
|
| +void HTMLCollection::trace(Visitor* visitor)
|
| +{
|
| + visitor->trace(m_namedItemCache);
|
| + visitor->trace(m_collectionIndexCache);
|
| + LiveNodeListBase::trace(visitor);
|
| +}
|
| +
|
| } // namespace WebCore
|
|
|