Remove elementChildren/elementDescendants shorthands
authorantti@apple.com <antti@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 1 Jan 2014 21:48:13 +0000 (21:48 +0000)
committerantti@apple.com <antti@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 1 Jan 2014 21:48:13 +0000 (21:48 +0000)
https://bugs.webkit.org/show_bug.cgi?id=126363

Reviewed by Anders Carlsson.

Just use childrenOfType<Element>/descendantsOfType<Element> instead. They are not that much longer
and consistency is valuable.

* accessibility/AccessibilityNodeObject.cpp:
(WebCore::AccessibilityNodeObject::canvasHasFallbackContent):
(WebCore::siblingWithAriaRole):
* accessibility/AccessibilityTable.cpp:
(WebCore::AccessibilityTable::isDataTable):
* css/StyleInvalidationAnalysis.cpp:
(WebCore::StyleInvalidationAnalysis::invalidateStyle):
* dom/ChildNodeList.cpp:
(WebCore::ChildNodeList::namedItem):
* dom/Document.cpp:
(WebCore::Document::buildAccessKeyMap):
(WebCore::Document::childrenChanged):
* dom/Element.cpp:
(WebCore::Element::resetComputedStyle):
* dom/ElementChildIterator.h:
* dom/ElementDescendantIterator.h:
* dom/SelectorQuery.cpp:
(WebCore::elementsForLocalName):
(WebCore::anyElement):
(WebCore::SelectorDataList::executeSingleTagNameSelectorData):
(WebCore::SelectorDataList::executeSingleClassNameSelectorData):
(WebCore::SelectorDataList::executeSingleSelectorData):
(WebCore::SelectorDataList::executeSingleMultiSelectorData):
* editing/ApplyStyleCommand.cpp:
(WebCore::ApplyStyleCommand::cleanupUnstyledAppleStyleSpans):
* editing/ReplaceSelectionCommand.cpp:
(WebCore::removeHeadContents):
* editing/markup.cpp:
(WebCore::completeURLs):
* html/HTMLFieldSetElement.cpp:
(WebCore::HTMLFieldSetElement::refreshElementsIfNeeded):
* html/HTMLObjectElement.cpp:
(WebCore::HTMLObjectElement::containsJavaApplet):
* loader/PlaceholderDocument.cpp:
(WebCore::PlaceholderDocument::createRenderTree):
* rendering/RenderChildIterator.h:
* svg/SVGSVGElement.cpp:
(WebCore::SVGSVGElement::getElementById):
* svg/SVGUseElement.cpp:
(WebCore::subtreeContainsDisallowedElement):
(WebCore::removeDisallowedElementsFromSubtree):

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

19 files changed:
Source/WebCore/ChangeLog
Source/WebCore/accessibility/AccessibilityNodeObject.cpp
Source/WebCore/accessibility/AccessibilityTable.cpp
Source/WebCore/css/StyleInvalidationAnalysis.cpp
Source/WebCore/dom/ChildNodeList.cpp
Source/WebCore/dom/Document.cpp
Source/WebCore/dom/Element.cpp
Source/WebCore/dom/ElementChildIterator.h
Source/WebCore/dom/ElementDescendantIterator.h
Source/WebCore/dom/SelectorQuery.cpp
Source/WebCore/editing/ApplyStyleCommand.cpp
Source/WebCore/editing/ReplaceSelectionCommand.cpp
Source/WebCore/editing/markup.cpp
Source/WebCore/html/HTMLFieldSetElement.cpp
Source/WebCore/html/HTMLObjectElement.cpp
Source/WebCore/loader/PlaceholderDocument.cpp
Source/WebCore/rendering/RenderChildIterator.h
Source/WebCore/svg/SVGSVGElement.cpp
Source/WebCore/svg/SVGUseElement.cpp

index 1332d11..c08eac4 100644 (file)
@@ -1,5 +1,57 @@
 2014-01-01  Antti Koivisto  <antti@apple.com>
 
+        Remove elementChildren/elementDescendants shorthands
+        https://bugs.webkit.org/show_bug.cgi?id=126363
+
+        Reviewed by Anders Carlsson.
+
+        Just use childrenOfType<Element>/descendantsOfType<Element> instead. They are not that much longer
+        and consistency is valuable.
+
+        * accessibility/AccessibilityNodeObject.cpp:
+        (WebCore::AccessibilityNodeObject::canvasHasFallbackContent):
+        (WebCore::siblingWithAriaRole):
+        * accessibility/AccessibilityTable.cpp:
+        (WebCore::AccessibilityTable::isDataTable):
+        * css/StyleInvalidationAnalysis.cpp:
+        (WebCore::StyleInvalidationAnalysis::invalidateStyle):
+        * dom/ChildNodeList.cpp:
+        (WebCore::ChildNodeList::namedItem):
+        * dom/Document.cpp:
+        (WebCore::Document::buildAccessKeyMap):
+        (WebCore::Document::childrenChanged):
+        * dom/Element.cpp:
+        (WebCore::Element::resetComputedStyle):
+        * dom/ElementChildIterator.h:
+        * dom/ElementDescendantIterator.h:
+        * dom/SelectorQuery.cpp:
+        (WebCore::elementsForLocalName):
+        (WebCore::anyElement):
+        (WebCore::SelectorDataList::executeSingleTagNameSelectorData):
+        (WebCore::SelectorDataList::executeSingleClassNameSelectorData):
+        (WebCore::SelectorDataList::executeSingleSelectorData):
+        (WebCore::SelectorDataList::executeSingleMultiSelectorData):
+        * editing/ApplyStyleCommand.cpp:
+        (WebCore::ApplyStyleCommand::cleanupUnstyledAppleStyleSpans):
+        * editing/ReplaceSelectionCommand.cpp:
+        (WebCore::removeHeadContents):
+        * editing/markup.cpp:
+        (WebCore::completeURLs):
+        * html/HTMLFieldSetElement.cpp:
+        (WebCore::HTMLFieldSetElement::refreshElementsIfNeeded):
+        * html/HTMLObjectElement.cpp:
+        (WebCore::HTMLObjectElement::containsJavaApplet):
+        * loader/PlaceholderDocument.cpp:
+        (WebCore::PlaceholderDocument::createRenderTree):
+        * rendering/RenderChildIterator.h:
+        * svg/SVGSVGElement.cpp:
+        (WebCore::SVGSVGElement::getElementById):
+        * svg/SVGUseElement.cpp:
+        (WebCore::subtreeContainsDisallowedElement):
+        (WebCore::removeDisallowedElementsFromSubtree):
+
+2014-01-01  Antti Koivisto  <antti@apple.com>
+
         Do less synchronous render tree construction
         https://bugs.webkit.org/show_bug.cgi?id=126359
 
index 9a0b32e..6ac82e5 100644 (file)
@@ -439,7 +439,7 @@ bool AccessibilityNodeObject::canvasHasFallbackContent() const
     // If it has any children that are elements, we'll assume it might be fallback
     // content. If it has no children or its only children are not elements
     // (e.g. just text nodes), it doesn't have fallback content.
-    return elementChildren(canvasElement).first();
+    return childrenOfType<Element>(canvasElement).first();
 }
 
 bool AccessibilityNodeObject::isImageButton() const
@@ -1183,7 +1183,7 @@ static Element* siblingWithAriaRole(String role, Node* node)
     if (!parent)
         return nullptr;
 
-    for (auto& sibling : elementChildren(*parent)) {
+    for (auto& sibling : childrenOfType<Element>(*parent)) {
         const AtomicString& siblingAriaRole = sibling.fastGetAttribute(roleAttr);
         if (equalIgnoringCase(siblingAriaRole, role))
             return &sibling;
index 7f432da..42c7de7 100644 (file)
@@ -124,7 +124,7 @@ bool AccessibilityTable::isDataTable() const
         return true;    
 
     // if there's a colgroup or col element, it's probably a data table.
-    for (auto& child : elementChildren(*tableElement)) {
+    for (auto& child : childrenOfType<Element>(*tableElement)) {
         if (child.hasTagName(colTag) || child.hasTagName(colgroupTag))
             return true;
     }
index d9e5810..48383ed 100644 (file)
@@ -118,8 +118,8 @@ void StyleInvalidationAnalysis::invalidateStyle(Document& document)
     if (m_idScopes.isEmpty() && m_classScopes.isEmpty())
         return;
 
-    auto it = elementDescendants(document).begin();
-    auto end = elementDescendants(document).end();
+    auto it = descendantsOfType<Element>(document).begin();
+    auto end = descendantsOfType<Element>(document).end();
     while (it != end) {
         if (elementMatchesSelectorScopes(*it, m_idScopes, m_classScopes)) {
             it->setNeedsStyleRecalc();
index 61c4cee..c8fff4e 100644 (file)
@@ -94,7 +94,7 @@ Node* ChildNodeList::namedItem(const AtomicString& name) const
         if (!element || !m_parent.get().treeScope().containsMultipleElementsWithId(name))
             return nullptr;
     }
-    for (auto& element : elementChildren(m_parent.get())) {
+    for (auto& element : childrenOfType<Element>(m_parent.get())) {
         if (element.hasID() && element.idForStyleResolution() == name)
             return const_cast<Element*>(&element);
     }
index 1cf5922..2809773 100644 (file)
@@ -686,7 +686,7 @@ void Document::buildAccessKeyMap(TreeScope* scope)
 {
     ASSERT(scope);
     ContainerNode* rootNode = scope->rootNode();
-    for (auto& element : elementDescendants(*rootNode)) {
+    for (auto& element : descendantsOfType<Element>(*rootNode)) {
         const AtomicString& accessKey = element.fastGetAttribute(accesskeyAttr);
         if (!accessKey.isEmpty())
             m_elementsByAccessKey.set(accessKey.impl(), &element);
@@ -806,7 +806,7 @@ void Document::childrenChanged(const ChildChange& change)
     }
 #endif
 
-    Element* newDocumentElement = elementChildren(*this).first();
+    Element* newDocumentElement = childrenOfType<Element>(*this).first();
 
     if (newDocumentElement == m_documentElement)
         return;
index d9dd6bf..c7b1bc0 100644 (file)
@@ -2930,7 +2930,7 @@ void Element::resetComputedStyle()
     if (!hasRareData() || !elementRareData()->computedStyle())
         return;
     elementRareData()->resetComputedStyle();
-    for (auto& child : elementDescendants(*this)) {
+    for (auto& child : descendantsOfType<Element>(*this)) {
         if (child.hasRareData())
             child.elementRareData()->resetComputedStyle();
     }
index c10f278..0d9cd6e 100644 (file)
@@ -72,8 +72,6 @@ private:
     const ContainerNode& m_parent;
 };
 
-ElementChildIteratorAdapter<Element> elementChildren(ContainerNode&);
-ElementChildConstIteratorAdapter<Element> elementChildren(const ContainerNode&);
 template <typename ElementType> ElementChildIteratorAdapter<ElementType> childrenOfType(ContainerNode&);
 template <typename ElementType> ElementChildConstIteratorAdapter<ElementType> childrenOfType(const ContainerNode&);
 
@@ -183,22 +181,12 @@ inline const ElementType* ElementChildConstIteratorAdapter<ElementType>::last()
 
 // Standalone functions
 
-inline ElementChildIteratorAdapter<Element> elementChildren(ContainerNode& parent)
-{
-    return ElementChildIteratorAdapter<Element>(parent);
-}
-
 template <typename ElementType>
 inline ElementChildIteratorAdapter<ElementType> childrenOfType(ContainerNode& parent)
 {
     return ElementChildIteratorAdapter<ElementType>(parent);
 }
 
-inline ElementChildConstIteratorAdapter<Element> elementChildren(const ContainerNode& parent)
-{
-    return ElementChildConstIteratorAdapter<Element>(parent);
-}
-
 template <typename ElementType>
 inline ElementChildConstIteratorAdapter<ElementType> childrenOfType(const ContainerNode& parent)
 {
index d48e41a..1de1378 100644 (file)
@@ -78,8 +78,6 @@ private:
     const ContainerNode& m_root;
 };
 
-ElementDescendantIteratorAdapter<Element> elementDescendants(ContainerNode&);
-ElementDescendantConstIteratorAdapter<Element> elementDescendants(const ContainerNode&);
 template <typename ElementType> ElementDescendantIteratorAdapter<ElementType> descendantsOfType(ContainerNode&);
 template <typename ElementType> ElementDescendantConstIteratorAdapter<ElementType> descendantsOfType(const ContainerNode&);
 
@@ -230,22 +228,12 @@ inline const ElementType* ElementDescendantConstIteratorAdapter<ElementType>::la
 
 // Standalone functions
 
-inline ElementDescendantIteratorAdapter<Element> elementDescendants(ContainerNode& root)
-{
-    return ElementDescendantIteratorAdapter<Element>(root);
-}
-
 template <typename ElementType>
 inline ElementDescendantIteratorAdapter<ElementType> descendantsOfType(ContainerNode& root)
 {
     return ElementDescendantIteratorAdapter<ElementType>(root);
 }
 
-inline ElementDescendantConstIteratorAdapter<Element> elementDescendants(const ContainerNode& root)
-{
-    return ElementDescendantConstIteratorAdapter<Element>(root);
-}
-
 template <typename ElementType>
 inline ElementDescendantConstIteratorAdapter<ElementType> descendantsOfType(const ContainerNode& root)
 {
index 938b374..849b47f 100644 (file)
@@ -165,7 +165,7 @@ static bool isSingleTagNameSelector(const CSSSelector& selector)
 template <typename SelectorQueryTrait>
 static inline void elementsForLocalName(const ContainerNode& rootNode, const AtomicString& localName, typename SelectorQueryTrait::OutputType& output)
 {
-    for (auto& element : elementDescendants(const_cast<ContainerNode&>(rootNode))) {
+    for (auto& element : descendantsOfType<Element>(const_cast<ContainerNode&>(rootNode))) {
         if (element.tagQName().localName() == localName) {
             SelectorQueryTrait::appendOutputForElement(output, &element);
             if (SelectorQueryTrait::shouldOnlyMatchFirstElement)
@@ -177,7 +177,7 @@ static inline void elementsForLocalName(const ContainerNode& rootNode, const Ato
 template <typename SelectorQueryTrait>
 static inline void anyElement(const ContainerNode& rootNode, typename SelectorQueryTrait::OutputType& output)
 {
-    for (auto& element : elementDescendants(const_cast<ContainerNode&>(rootNode))) {
+    for (auto& element : descendantsOfType<Element>(const_cast<ContainerNode&>(rootNode))) {
         SelectorQueryTrait::appendOutputForElement(output, &element);
         if (SelectorQueryTrait::shouldOnlyMatchFirstElement)
             return;
@@ -205,7 +205,7 @@ ALWAYS_INLINE void SelectorDataList::executeSingleTagNameSelectorData(const Cont
         }
     } else {
         // Fallback: NamespaceURI is set, selectorLocalName may be starAtom.
-        for (auto& element : elementDescendants(const_cast<ContainerNode&>(rootNode))) {
+        for (auto& element : descendantsOfType<Element>(const_cast<ContainerNode&>(rootNode))) {
             if (element.namespaceURI() == selectorNamespaceURI && (selectorLocalName == starAtom || element.tagQName().localName() == selectorLocalName)) {
                 SelectorQueryTrait::appendOutputForElement(output, &element);
                 if (SelectorQueryTrait::shouldOnlyMatchFirstElement)
@@ -227,7 +227,7 @@ ALWAYS_INLINE void SelectorDataList::executeSingleClassNameSelectorData(const Co
     ASSERT(isSingleClassNameSelector(*selectorData.selector));
 
     const AtomicString& className = selectorData.selector->value();
-    for (auto& element : elementDescendants(const_cast<ContainerNode&>(rootNode))) {
+    for (auto& element : descendantsOfType<Element>(const_cast<ContainerNode&>(rootNode))) {
         if (element.hasClass() && element.classNames().contains(className)) {
             SelectorQueryTrait::appendOutputForElement(output, &element);
             if (SelectorQueryTrait::shouldOnlyMatchFirstElement)
@@ -241,7 +241,7 @@ ALWAYS_INLINE void SelectorDataList::executeSingleSelectorData(const ContainerNo
 {
     ASSERT(m_selectors.size() == 1);
 
-    for (auto& element : elementDescendants(const_cast<ContainerNode&>(rootNode))) {
+    for (auto& element : descendantsOfType<Element>(const_cast<ContainerNode&>(rootNode))) {
         if (selectorMatches(selectorData, element, rootNode)) {
             SelectorQueryTrait::appendOutputForElement(output, &element);
             if (SelectorQueryTrait::shouldOnlyMatchFirstElement)
@@ -254,7 +254,7 @@ template <typename SelectorQueryTrait>
 ALWAYS_INLINE void SelectorDataList::executeSingleMultiSelectorData(const ContainerNode& rootNode, typename SelectorQueryTrait::OutputType& output) const
 {
     unsigned selectorCount = m_selectors.size();
-    for (auto& element : elementDescendants(const_cast<ContainerNode&>(rootNode))) {
+    for (auto& element : descendantsOfType<Element>(const_cast<ContainerNode&>(rootNode))) {
         for (unsigned i = 0; i < selectorCount; ++i) {
             if (selectorMatches(m_selectors[i], element, rootNode)) {
                 SelectorQueryTrait::appendOutputForElement(output, &element);
index a9f152c..d307af0 100644 (file)
@@ -439,7 +439,7 @@ void ApplyStyleCommand::cleanupUnstyledAppleStyleSpans(ContainerNode* dummySpanA
     // all the children of the dummy's parent
 
     Vector<Element*> toRemove;
-    for (auto& child : elementChildren(*dummySpanAncestor)) {
+    for (auto& child : childrenOfType<Element>(*dummySpanAncestor)) {
         if (isSpanWithoutAttributesOrUnstyledStyleSpan(&child))
             toRemove.append(&child);
     }
index ef2d4f4..16e3ff4 100644 (file)
@@ -706,8 +706,8 @@ static void removeHeadContents(ReplacementFragment& fragment)
 
     Vector<Element*> toRemove;
 
-    auto it = elementDescendants(*fragment.fragment()).begin();
-    auto end = elementDescendants(*fragment.fragment()).end();
+    auto it = descendantsOfType<Element>(*fragment.fragment()).begin();
+    auto end = descendantsOfType<Element>(*fragment.fragment()).end();
     while (it != end) {
         if (it->hasTagName(baseTag) || it->hasTagName(linkTag) || it->hasTagName(metaTag) || it->hasTagName(styleTag) || isHTMLTitleElement(*it)) {
             toRemove.append(&*it);
index a93615a..9fd0348 100644 (file)
@@ -99,7 +99,7 @@ static void completeURLs(DocumentFragment* fragment, const String& baseURL)
 
     URL parsedBaseURL(ParsedURLString, baseURL);
 
-    for (auto& element : elementDescendants(*fragment)) {
+    for (auto& element : descendantsOfType<Element>(*fragment)) {
         if (!element.hasAttributes())
             continue;
         unsigned length = element.attributeCount();
index d6edf9a..0dab60d 100644 (file)
@@ -106,7 +106,7 @@ void HTMLFieldSetElement::refreshElementsIfNeeded() const
 
     m_associatedElements.clear();
 
-    for (auto& element : elementDescendants(const_cast<HTMLFieldSetElement&>(*this))) {
+    for (auto& element : descendantsOfType<Element>(const_cast<HTMLFieldSetElement&>(*this))) {
         if (element.hasTagName(objectTag))
             m_associatedElements.append(&toHTMLObjectElement(element));
         else if (element.isFormControlElement())
index cf9a618..6fee11f 100644 (file)
@@ -461,7 +461,7 @@ bool HTMLObjectElement::containsJavaApplet() const
     if (MIMETypeRegistry::isJavaAppletMIMEType(getAttribute(typeAttr)))
         return true;
 
-    for (auto& child : elementChildren(*this)) {
+    for (auto& child : childrenOfType<Element>(*this)) {
         if (child.hasTagName(paramTag) && equalIgnoringCase(child.getNameAttribute(), "type")
             && MIMETypeRegistry::isJavaAppletMIMEType(child.getAttribute(valueAttr).string()))
             return true;
index 401905e..00d2cc7 100644 (file)
@@ -34,7 +34,7 @@ void PlaceholderDocument::createRenderTree()
 {
     ASSERT(!renderView());
 
-    for (auto& child : elementChildren(*this))
+    for (auto& child : childrenOfType<Element>(*this))
         Style::attachRenderTree(child);
 }
 
index b5fcd0f..268f28a 100644 (file)
@@ -72,8 +72,6 @@ private:
     const RenderElement& m_parent;
 };
 
-RenderChildIteratorAdapter<RenderObject> elementChildren(RenderElement&);
-RenderChildConstIteratorAdapter<RenderObject> elementChildren(const RenderElement&);
 template <typename T> RenderChildIteratorAdapter<T> childrenOfType(RenderElement&);
 template <typename T> RenderChildConstIteratorAdapter<T> childrenOfType(const RenderElement&);
 
index d2ea1b5..5a9fe0c 100644 (file)
@@ -775,7 +775,7 @@ Element* SVGSVGElement::getElementById(const AtomicString& id)
 
     // Fall back to traversing our subtree. Duplicate ids are allowed, the first found will
     // be returned.
-    for (auto& element : elementDescendants(*this)) {
+    for (auto& element : descendantsOfType<Element>(*this)) {
         if (element.getIdAttribute() == id)
             return &element;
     }
index bf25579..a459106 100644 (file)
@@ -365,7 +365,7 @@ static bool isDisallowedElement(const Element& element)
 
 static bool subtreeContainsDisallowedElement(SVGElement& start)
 {
-    for (auto& element : elementDescendants(start)) {
+    for (auto& element : descendantsOfType<Element>(start)) {
         if (isDisallowedElement(element))
             return true;
     }
@@ -658,8 +658,8 @@ static inline void removeDisallowedElementsFromSubtree(SVGElement& subtree)
 {
     ASSERT(!subtree.inDocument());
     Vector<Element*> toRemove;
-    auto it = elementDescendants(subtree).begin();
-    auto end = elementDescendants(subtree).end();
+    auto it = descendantsOfType<Element>(subtree).begin();
+    auto end = descendantsOfType<Element>(subtree).end();
     while (it != end) {
         if (isDisallowedElement(*it)) {
             toRemove.append(&*it);