Have LiveNodeLists / HTMLCollections's elementMatches() take a reference
authorcdumez@apple.com <cdumez@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 18 Sep 2014 16:32:41 +0000 (16:32 +0000)
committercdumez@apple.com <cdumez@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 18 Sep 2014 16:32:41 +0000 (16:32 +0000)
https://bugs.webkit.org/show_bug.cgi?id=136902

Reviewed by Darin Adler.

Have LiveNodeLists / HTMLCollections's elementMatches() take a reference
in argument instead of a pointer as the Element can never be null.

No new tests, no behavior change.

* dom/ClassNodeList.h:
(WebCore::ClassNodeList::elementMatches):
* dom/DocumentOrderedMap.cpp:
(WebCore::keyMatchesWindowNamedItem):
(WebCore::keyMatchesDocumentNamedItem):
* dom/Element.cpp:
(WebCore::Element::updateNameForDocument):
(WebCore::Element::updateIdForDocument):
* dom/LiveNodeList.cpp:
(WebCore::LiveNodeList::namedItem):
* dom/LiveNodeList.h:
(WebCore::CachedLiveNodeList<NodeListType>::collectionBegin):
(WebCore::CachedLiveNodeList<NodeListType>::collectionLast):
(WebCore::CachedLiveNodeList<NodeListType>::collectionTraverseForward):
(WebCore::CachedLiveNodeList<NodeListType>::collectionTraverseBackward):
* dom/NameNodeList.h:
(WebCore::NameNodeList::elementMatches):
* dom/TagNodeList.h:
(WebCore::TagNodeList::elementMatches):
(WebCore::HTMLTagNodeList::elementMatches):
* html/HTMLCollection.cpp:
(WebCore::isMatchingElement):
* html/HTMLNameCollection.cpp:
(WebCore::WindowNameCollection::elementMatchesIfNameAttributeMatch):
(WebCore::WindowNameCollection::elementMatches):
(WebCore::DocumentNameCollection::elementMatchesIfIdAttributeMatch):
(WebCore::DocumentNameCollection::elementMatchesIfNameAttributeMatch):
(WebCore::DocumentNameCollection::elementMatches):
* html/HTMLNameCollection.h:
* html/LabelsNodeList.cpp:
(WebCore::LabelsNodeList::elementMatches):
* html/LabelsNodeList.h:
* html/RadioNodeList.cpp:
(WebCore::RadioNodeList::checkElementMatchesRadioNodeListFilter):
(WebCore::RadioNodeList::elementMatches):
* html/RadioNodeList.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@173723 268f45cc-cd09-0410-ab3c-d52691b4dbfc

15 files changed:
Source/WebCore/ChangeLog
Source/WebCore/dom/ClassNodeList.h
Source/WebCore/dom/DocumentOrderedMap.cpp
Source/WebCore/dom/Element.cpp
Source/WebCore/dom/LiveNodeList.cpp
Source/WebCore/dom/LiveNodeList.h
Source/WebCore/dom/NameNodeList.h
Source/WebCore/dom/TagNodeList.h
Source/WebCore/html/HTMLCollection.cpp
Source/WebCore/html/HTMLNameCollection.cpp
Source/WebCore/html/HTMLNameCollection.h
Source/WebCore/html/LabelsNodeList.cpp
Source/WebCore/html/LabelsNodeList.h
Source/WebCore/html/RadioNodeList.cpp
Source/WebCore/html/RadioNodeList.h

index 8dc30fc..0de442a 100644 (file)
@@ -1,3 +1,52 @@
+2014-09-18  Chris Dumez  <cdumez@apple.com>
+
+        Have LiveNodeLists / HTMLCollections's elementMatches() take a reference
+        https://bugs.webkit.org/show_bug.cgi?id=136902
+
+        Reviewed by Darin Adler.
+
+        Have LiveNodeLists / HTMLCollections's elementMatches() take a reference
+        in argument instead of a pointer as the Element can never be null.
+
+        No new tests, no behavior change.
+
+        * dom/ClassNodeList.h:
+        (WebCore::ClassNodeList::elementMatches):
+        * dom/DocumentOrderedMap.cpp:
+        (WebCore::keyMatchesWindowNamedItem):
+        (WebCore::keyMatchesDocumentNamedItem):
+        * dom/Element.cpp:
+        (WebCore::Element::updateNameForDocument):
+        (WebCore::Element::updateIdForDocument):
+        * dom/LiveNodeList.cpp:
+        (WebCore::LiveNodeList::namedItem):
+        * dom/LiveNodeList.h:
+        (WebCore::CachedLiveNodeList<NodeListType>::collectionBegin):
+        (WebCore::CachedLiveNodeList<NodeListType>::collectionLast):
+        (WebCore::CachedLiveNodeList<NodeListType>::collectionTraverseForward):
+        (WebCore::CachedLiveNodeList<NodeListType>::collectionTraverseBackward):
+        * dom/NameNodeList.h:
+        (WebCore::NameNodeList::elementMatches):
+        * dom/TagNodeList.h:
+        (WebCore::TagNodeList::elementMatches):
+        (WebCore::HTMLTagNodeList::elementMatches):
+        * html/HTMLCollection.cpp:
+        (WebCore::isMatchingElement):
+        * html/HTMLNameCollection.cpp:
+        (WebCore::WindowNameCollection::elementMatchesIfNameAttributeMatch):
+        (WebCore::WindowNameCollection::elementMatches):
+        (WebCore::DocumentNameCollection::elementMatchesIfIdAttributeMatch):
+        (WebCore::DocumentNameCollection::elementMatchesIfNameAttributeMatch):
+        (WebCore::DocumentNameCollection::elementMatches):
+        * html/HTMLNameCollection.h:
+        * html/LabelsNodeList.cpp:
+        (WebCore::LabelsNodeList::elementMatches):
+        * html/LabelsNodeList.h:
+        * html/RadioNodeList.cpp:
+        (WebCore::RadioNodeList::checkElementMatchesRadioNodeListFilter):
+        (WebCore::RadioNodeList::elementMatches):
+        * html/RadioNodeList.h:
+
 2014-09-18  Carlos Garcia Campos  <cgarcia@igalia.com>
 
         Remove unused methods from MediaPlayerClient
index df9e900..9332623 100644 (file)
@@ -43,7 +43,7 @@ public:
 
     virtual ~ClassNodeList();
 
-    virtual bool elementMatches(Element*) const override;
+    virtual bool elementMatches(Element&) const override;
     virtual bool isRootedAtDocument() const override { return false; }
 
 private:
@@ -60,17 +60,17 @@ inline ClassNodeList::ClassNodeList(ContainerNode& rootNode, const AtomicString&
 {
 }
 
-inline bool ClassNodeList::elementMatches(Element* element) const
+inline bool ClassNodeList::elementMatches(Element& element) const
 {
-    if (!element->hasClass())
+    if (!element.hasClass())
         return false;
     if (!m_classNames.size())
         return false;
     // FIXME: DOM4 allows getElementsByClassName to return non StyledElement.
     // https://bugs.webkit.org/show_bug.cgi?id=94718
-    if (!element->isStyledElement())
+    if (!element.isStyledElement())
         return false;
-    return element->classNames().containsAll(m_classNames);
+    return element.classNames().containsAll(m_classNames);
 }
 
 } // namespace WebCore
index 9874361..8448f94 100644 (file)
@@ -74,12 +74,12 @@ inline bool keyMatchesLabelForAttribute(const AtomicStringImpl& key, const Eleme
 
 inline bool keyMatchesWindowNamedItem(const AtomicStringImpl& key, const Element& element)
 {
-    return WindowNameCollection::elementMatches(const_cast<Element*>(&element), &key);
+    return WindowNameCollection::elementMatches(element, &key);
 }
 
 inline bool keyMatchesDocumentNamedItem(const AtomicStringImpl& key, const Element& element)
 {
-    return DocumentNameCollection::elementMatches(const_cast<Element*>(&element), &key);
+    return DocumentNameCollection::elementMatches(element, &key);
 }
 
 void DocumentOrderedMap::clear()
index b51d086..83acc93 100644 (file)
@@ -2606,16 +2606,16 @@ void Element::updateNameForDocument(HTMLDocument& document, const AtomicString&
 {
     ASSERT(oldName != newName);
 
-    if (WindowNameCollection::elementMatchesIfNameAttributeMatch(this)) {
-        const AtomicString& id = WindowNameCollection::elementMatchesIfIdAttributeMatch(this) ? getIdAttribute() : nullAtom;
+    if (WindowNameCollection::elementMatchesIfNameAttributeMatch(*this)) {
+        const AtomicString& id = WindowNameCollection::elementMatchesIfIdAttributeMatch(*this) ? getIdAttribute() : nullAtom;
         if (!oldName.isEmpty() && oldName != id)
             document.removeWindowNamedItem(*oldName.impl(), *this);
         if (!newName.isEmpty() && newName != id)
             document.addWindowNamedItem(*newName.impl(), *this);
     }
 
-    if (DocumentNameCollection::elementMatchesIfNameAttributeMatch(this)) {
-        const AtomicString& id = DocumentNameCollection::elementMatchesIfIdAttributeMatch(this) ? getIdAttribute() : nullAtom;
+    if (DocumentNameCollection::elementMatchesIfNameAttributeMatch(*this)) {
+        const AtomicString& id = DocumentNameCollection::elementMatchesIfIdAttributeMatch(*this) ? getIdAttribute() : nullAtom;
         if (!oldName.isEmpty() && oldName != id)
             document.removeDocumentNamedItem(*oldName.impl(), *this);
         if (!newName.isEmpty() && newName != id)
@@ -2656,16 +2656,16 @@ void Element::updateIdForDocument(HTMLDocument& document, const AtomicString& ol
     ASSERT(inDocument());
     ASSERT(oldId != newId);
 
-    if (WindowNameCollection::elementMatchesIfIdAttributeMatch(this)) {
-        const AtomicString& name = condition == UpdateHTMLDocumentNamedItemMapsOnlyIfDiffersFromNameAttribute && WindowNameCollection::elementMatchesIfNameAttributeMatch(this) ? getNameAttribute() : nullAtom;
+    if (WindowNameCollection::elementMatchesIfIdAttributeMatch(*this)) {
+        const AtomicString& name = condition == UpdateHTMLDocumentNamedItemMapsOnlyIfDiffersFromNameAttribute && WindowNameCollection::elementMatchesIfNameAttributeMatch(*this) ? getNameAttribute() : nullAtom;
         if (!oldId.isEmpty() && oldId != name)
             document.removeWindowNamedItem(*oldId.impl(), *this);
         if (!newId.isEmpty() && newId != name)
             document.addWindowNamedItem(*newId.impl(), *this);
     }
 
-    if (DocumentNameCollection::elementMatchesIfIdAttributeMatch(this)) {
-        const AtomicString& name = condition == UpdateHTMLDocumentNamedItemMapsOnlyIfDiffersFromNameAttribute && DocumentNameCollection::elementMatchesIfNameAttributeMatch(this) ? getNameAttribute() : nullAtom;
+    if (DocumentNameCollection::elementMatchesIfIdAttributeMatch(*this)) {
+        const AtomicString& name = condition == UpdateHTMLDocumentNamedItemMapsOnlyIfDiffersFromNameAttribute && DocumentNameCollection::elementMatchesIfNameAttributeMatch(*this) ? getNameAttribute() : nullAtom;
         if (!oldId.isEmpty() && oldId != name)
             document.removeDocumentNamedItem(*oldId.impl(), *this);
         if (!newId.isEmpty() && newId != name)
index f931d11..4f8a45c 100644 (file)
@@ -58,7 +58,7 @@ Node* LiveNodeList::namedItem(const AtomicString& elementId) const
 
     if (rootNode.inDocument()) {
         Element* element = rootNode.treeScope().getElementById(elementId);
-        if (element && elementMatches(element) && element->isDescendantOf(&rootNode))
+        if (element && elementMatches(*element) && element->isDescendantOf(&rootNode))
             return element;
         if (!element)
             return nullptr;
index fd3a07f..bc52987 100644 (file)
@@ -46,7 +46,7 @@ public:
 
     virtual Node* namedItem(const AtomicString&) const override final;
 
-    virtual bool elementMatches(Element*) const = 0;
+    virtual bool elementMatches(Element&) const = 0;
     virtual bool isRootedAtDocument() const = 0;
 
     ALWAYS_INLINE NodeListInvalidationType invalidationType() const { return static_cast<NodeListInvalidationType>(m_invalidationType); }
@@ -159,7 +159,7 @@ ElementDescendantIterator CachedLiveNodeList<NodeListType>::collectionBegin() co
     auto descendants = elementDescendants(rootNode());
     auto end = descendants.end();
     for (auto it = descendants.begin(); it != end; ++it) {
-        if (nodeList.elementMatches(&*it))
+        if (nodeList.elementMatches(*it))
             return it;
     }
     return end;
@@ -172,7 +172,7 @@ ElementDescendantIterator CachedLiveNodeList<NodeListType>::collectionLast() con
     auto descendants = elementDescendants(rootNode());
     auto end = descendants.end();
     for (auto it = descendants.last(); it != end; --it) {
-        if (nodeList.elementMatches(&*it))
+        if (nodeList.elementMatches(*it))
             return it;
     }
     return end;
@@ -182,14 +182,14 @@ template <class NodeListType>
 void CachedLiveNodeList<NodeListType>::collectionTraverseForward(ElementDescendantIterator& current, unsigned count, unsigned& traversedCount) const
 {
     auto& nodeList = static_cast<const NodeListType&>(*this);
-    ASSERT(nodeList.elementMatches(&*current));
+    ASSERT(nodeList.elementMatches(*current));
     auto end = collectionEnd();
     for (traversedCount = 0; traversedCount < count; ++traversedCount) {
         do {
             ++current;
             if (current == end)
                 return;
-        } while (!nodeList.elementMatches(&*current));
+        } while (!nodeList.elementMatches(*current));
     }
 }
 
@@ -197,14 +197,14 @@ template <class NodeListType>
 void CachedLiveNodeList<NodeListType>::collectionTraverseBackward(ElementDescendantIterator& current, unsigned count) const
 {
     auto& nodeList = static_cast<const NodeListType&>(*this);
-    ASSERT(nodeList.elementMatches(&*current));
+    ASSERT(nodeList.elementMatches(*current));
     auto end = collectionEnd();
     for (; count; --count) {
         do {
             --current;
             if (current == end)
                 return;
-        } while (!nodeList.elementMatches(&*current));
+        } while (!nodeList.elementMatches(*current));
     }
 }
 
index fb7e372..20df22a 100644 (file)
@@ -40,7 +40,7 @@ public:
 
     virtual ~NameNodeList();
 
-    virtual bool elementMatches(Element*) const override;
+    virtual bool elementMatches(Element&) const override;
     virtual bool isRootedAtDocument() const override { return false; }
 
 private:
@@ -49,9 +49,9 @@ private:
     AtomicString m_name;
 };
 
-inline bool NameNodeList::elementMatches(Element* element) const
+inline bool NameNodeList::elementMatches(Element& element) const
 {
-    return element->getNameAttribute() == m_name;
+    return element.getNameAttribute() == m_name;
 }
 
 } // namespace WebCore
index 997b0d7..b918516 100644 (file)
@@ -46,7 +46,7 @@ public:
 
     virtual ~TagNodeList();
 
-    virtual bool elementMatches(Element*) const override;
+    virtual bool elementMatches(Element&) const override;
     virtual bool isRootedAtDocument() const override { return false; }
 
 protected:
@@ -56,13 +56,13 @@ protected:
     AtomicString m_localName;
 };
 
-inline bool TagNodeList::elementMatches(Element* element) const
+inline bool TagNodeList::elementMatches(Element& element) const
 {
     // Implements http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#concept-getelementsbytagnamens
-    if (m_localName != starAtom && m_localName != element->localName())
+    if (m_localName != starAtom && m_localName != element.localName())
         return false;
 
-    return m_namespaceURI == starAtom || m_namespaceURI == element->namespaceURI();
+    return m_namespaceURI == starAtom || m_namespaceURI == element.namespaceURI();
 }
 
 class HTMLTagNodeList final : public CachedLiveNodeList<HTMLTagNodeList> {
@@ -74,7 +74,7 @@ public:
 
     virtual ~HTMLTagNodeList();
 
-    virtual bool elementMatches(Element*) const override;
+    virtual bool elementMatches(Element&) const override;
     virtual bool isRootedAtDocument() const override { return false; }
 
 private:
@@ -84,13 +84,13 @@ private:
     AtomicString m_loweredLocalName;
 };
 
-inline bool HTMLTagNodeList::elementMatches(Element* element) const
+inline bool HTMLTagNodeList::elementMatches(Element& element) const
 {
     // Implements http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#concept-getelementsbytagname
     if (m_localName == starAtom)
         return true;
-    const AtomicString& localName = element->isHTMLElement() ? m_loweredLocalName : m_localName;
-    return localName == element->localName();
+    const AtomicString& localName = element.isHTMLElement() ? m_loweredLocalName : m_localName;
+    return localName == element.localName();
 }
 
 } // namespace WebCore
index 2511ea4..3327abb 100644 (file)
@@ -213,9 +213,9 @@ inline bool isMatchingElement(const HTMLCollection& htmlCollection, Element& ele
     case NodeChildren:
         return true;
     case DocumentNamedItems:
-        return static_cast<const DocumentNameCollection&>(htmlCollection).elementMatches(&element);
+        return static_cast<const DocumentNameCollection&>(htmlCollection).elementMatches(element);
     case WindowNamedItems:
-        return static_cast<const WindowNameCollection&>(htmlCollection).elementMatches(&element);
+        return static_cast<const WindowNameCollection&>(htmlCollection).elementMatches(element);
     case FormControls:
     case TableRows:
         break;
index 044fdeb..6601746 100644 (file)
@@ -49,46 +49,46 @@ HTMLNameCollection::~HTMLNameCollection()
     document().nodeLists()->removeCachedCollection(this, m_name);
 }
 
-bool WindowNameCollection::elementMatchesIfNameAttributeMatch(Element* element)
+bool WindowNameCollection::elementMatchesIfNameAttributeMatch(const Element& element)
 {
-    return isHTMLImageElement(element) || isHTMLFormElement(element) || element->hasTagName(appletTag)
-        || element->hasTagName(embedTag) || element->hasTagName(objectTag);
+    return isHTMLImageElement(element) || isHTMLFormElement(element) || element.hasTagName(appletTag)
+        || element.hasTagName(embedTag) || element.hasTagName(objectTag);
 }
 
-bool WindowNameCollection::elementMatches(Element* element, const AtomicStringImpl* name)
+bool WindowNameCollection::elementMatches(const Element& element, const AtomicStringImpl* name)
 {
     // Find only images, forms, applets, embeds and objects by name, but anything by id
-    if (elementMatchesIfNameAttributeMatch(element) && element->getNameAttribute().impl() == name)
+    if (elementMatchesIfNameAttributeMatch(element) && element.getNameAttribute().impl() == name)
         return true;
-    return element->getIdAttribute().impl() == name;
+    return element.getIdAttribute().impl() == name;
 }
 
-bool DocumentNameCollection::elementMatchesIfIdAttributeMatch(Element* element)
+bool DocumentNameCollection::elementMatchesIfIdAttributeMatch(const Element& element)
 {
     // FIXME: we need to fix HTMLImageElement to update the hash map for us when name attribute has been removed.
-    return element->hasTagName(appletTag) || (element->hasTagName(objectTag) && toHTMLObjectElement(element)->isDocNamedItem())
-        || (isHTMLImageElement(element) && element->hasName());
+    return element.hasTagName(appletTag) || (element.hasTagName(objectTag) && toHTMLObjectElement(element).isDocNamedItem())
+        || (isHTMLImageElement(element) && element.hasName());
 }
 
-bool DocumentNameCollection::elementMatchesIfNameAttributeMatch(Element* element)
+bool DocumentNameCollection::elementMatchesIfNameAttributeMatch(const Element& element)
 {
-    return isHTMLFormElement(element) || element->hasTagName(embedTag) || element->hasTagName(iframeTag)
-        || element->hasTagName(appletTag) || (element->hasTagName(objectTag) && toHTMLObjectElement(element)->isDocNamedItem())
+    return isHTMLFormElement(element) || element.hasTagName(embedTag) || element.hasTagName(iframeTag)
+        || element.hasTagName(appletTag) || (element.hasTagName(objectTag) && toHTMLObjectElement(element).isDocNamedItem())
         || isHTMLImageElement(element);
 }
 
-bool DocumentNameCollection::elementMatches(Element* element, const AtomicStringImpl* name)
+bool DocumentNameCollection::elementMatches(const Element& element, const AtomicStringImpl* name)
 {
     // Find images, forms, applets, embeds, objects and iframes by name, applets and object by id, and images by id
     // but only if they have a name attribute (this very strange rule matches IE)
-    if (isHTMLFormElement(element) || element->hasTagName(embedTag) || element->hasTagName(iframeTag))
-        return element->getNameAttribute().impl() == name;
-    if (element->hasTagName(appletTag))
-        return element->getNameAttribute().impl() == name || element->getIdAttribute().impl() == name;
-    if (element->hasTagName(objectTag))
-        return (element->getNameAttribute().impl() == name || element->getIdAttribute().impl() == name) && toHTMLObjectElement(element)->isDocNamedItem();
+    if (isHTMLFormElement(element) || element.hasTagName(embedTag) || element.hasTagName(iframeTag))
+        return element.getNameAttribute().impl() == name;
+    if (element.hasTagName(appletTag))
+        return element.getNameAttribute().impl() == name || element.getIdAttribute().impl() == name;
+    if (element.hasTagName(objectTag))
+        return (element.getNameAttribute().impl() == name || element.getIdAttribute().impl() == name) && toHTMLObjectElement(element).isDocNamedItem();
     if (isHTMLImageElement(element))
-        return element->getNameAttribute().impl() == name || (element->getIdAttribute().impl() == name && element->hasName());
+        return element.getNameAttribute().impl() == name || (element.getIdAttribute().impl() == name && element.hasName());
     return false;
 }
 
index 1c71301..80100f6 100644 (file)
@@ -50,11 +50,11 @@ public:
         return adoptRef(*new WindowNameCollection(document, type, name));
     }
 
-    bool elementMatches(Element* element) const { return elementMatches(element, m_name.impl()); }
+    bool elementMatches(const Element& element) const { return elementMatches(element, m_name.impl()); }
 
-    static bool elementMatchesIfIdAttributeMatch(Element*) { return true; }
-    static bool elementMatchesIfNameAttributeMatch(Element*);
-    static bool elementMatches(Element*, const AtomicStringImpl*);
+    static bool elementMatchesIfIdAttributeMatch(const Element&) { return true; }
+    static bool elementMatchesIfNameAttributeMatch(const Element&);
+    static bool elementMatches(const Element&, const AtomicStringImpl*);
 
 private:
     WindowNameCollection(Document& document, CollectionType type, const AtomicString& name)
@@ -71,11 +71,11 @@ public:
         return adoptRef(*new DocumentNameCollection(document, type, name));
     }
 
-    static bool elementMatchesIfIdAttributeMatch(Element*);
-    static bool elementMatchesIfNameAttributeMatch(Element*);
-    bool elementMatches(Element* element) const { return elementMatches(element, m_name.impl()); }
+    static bool elementMatchesIfIdAttributeMatch(const Element&);
+    static bool elementMatchesIfNameAttributeMatch(const Element&);
+    bool elementMatches(const Element& element) const { return elementMatches(element, m_name.impl()); }
 
-    static bool elementMatches(Element*, const AtomicStringImpl*);
+    static bool elementMatches(const Element&, const AtomicStringImpl*);
 
 private:
     DocumentNameCollection(Document& document, CollectionType type, const AtomicString& name)
index ec11d12..31f675e 100644 (file)
@@ -43,9 +43,9 @@ LabelsNodeList::~LabelsNodeList()
     ownerNode().nodeLists()->removeCacheWithAtomicName(this, starAtom);
 } 
     
-bool LabelsNodeList::elementMatches(Element* testNode) const
+bool LabelsNodeList::elementMatches(Element& testNode) const
 {
-    return isHTMLLabelElement(testNode) && toHTMLLabelElement(testNode)->control() == &ownerNode();
+    return isHTMLLabelElement(testNode) && toHTMLLabelElement(testNode).control() == &ownerNode();
 }
 
 } // namespace WebCore
index 2040838..b851a31 100644 (file)
@@ -38,7 +38,7 @@ public:
     }
     ~LabelsNodeList();
 
-    virtual bool elementMatches(Element*) const override;
+    virtual bool elementMatches(Element&) const override;
     virtual bool isRootedAtDocument() const override { return true; }
 
 private:
index 5a1f221..b2044f6 100644 (file)
@@ -83,28 +83,28 @@ void RadioNodeList::setValue(const String& value)
     }
 }
 
-bool RadioNodeList::checkElementMatchesRadioNodeListFilter(Element* testElement) const
+bool RadioNodeList::checkElementMatchesRadioNodeListFilter(const Element& testElement) const
 {
-    ASSERT(testElement->hasTagName(objectTag) || testElement->isFormControlElement());
+    ASSERT(testElement.hasTagName(objectTag) || testElement.isFormControlElement());
     if (isHTMLFormElement(ownerNode())) {
         HTMLFormElement* formElement = 0;
-        if (testElement->hasTagName(objectTag))
-            formElement = toHTMLObjectElement(testElement)->form();
+        if (testElement.hasTagName(objectTag))
+            formElement = toHTMLObjectElement(testElement).form();
         else
-            formElement = toHTMLFormControlElement(testElement)->form();
+            formElement = toHTMLFormControlElement(testElement).form();
         if (!formElement || formElement != &ownerNode())
             return false;
     }
 
-    return testElement->getIdAttribute() == m_name || testElement->getNameAttribute() == m_name;
+    return testElement.getIdAttribute() == m_name || testElement.getNameAttribute() == m_name;
 }
 
-bool RadioNodeList::elementMatches(Element* testElement) const
+bool RadioNodeList::elementMatches(Element& testElement) const
 {
-    if (!testElement->hasTagName(objectTag) && !testElement->isFormControlElement())
+    if (!testElement.hasTagName(objectTag) && !testElement.isFormControlElement())
         return false;
 
-    if (HTMLInputElement* inputElement = testElement->toInputElement()) {
+    if (HTMLInputElement* inputElement = testElement.toInputElement()) {
         if (inputElement->isImageButton())
             return false;
     }
index f3c4845..8bcf02b 100644 (file)
@@ -45,12 +45,12 @@ public:
     String value() const;
     void setValue(const String&);
 
-    virtual bool elementMatches(Element*) const override;
+    virtual bool elementMatches(Element&) const override;
     virtual bool isRootedAtDocument() const override { return m_isRootedAtDocument; }
 
 private:
     RadioNodeList(ContainerNode&, const AtomicString& name);
-    bool checkElementMatchesRadioNodeListFilter(Element*) const;
+    bool checkElementMatchesRadioNodeListFilter(const Element&) const;
 
     AtomicString m_name;
     bool m_isRootedAtDocument;