Make childShouldCreateRenderer() take a Node reference
authorweinig@apple.com <weinig@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 11 Nov 2013 04:02:09 +0000 (04:02 +0000)
committerweinig@apple.com <weinig@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 11 Nov 2013 04:02:09 +0000 (04:02 +0000)
https://bugs.webkit.org/show_bug.cgi?id=124132

Reviewed by Andreas Kling.

The Node passed to childShouldCreateRenderer() is never null.

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

53 files changed:
Source/WebCore/ChangeLog
Source/WebCore/css/StyleResolver.cpp
Source/WebCore/dom/ContainerNode.h
Source/WebCore/dom/Element.cpp
Source/WebCore/dom/Element.h
Source/WebCore/dom/ShadowRoot.h
Source/WebCore/html/HTMLDetailsElement.cpp
Source/WebCore/html/HTMLDetailsElement.h
Source/WebCore/html/HTMLFormControlElement.cpp
Source/WebCore/html/HTMLFormControlElement.h
Source/WebCore/html/HTMLMediaElement.cpp
Source/WebCore/html/HTMLMediaElement.h
Source/WebCore/html/HTMLMeterElement.cpp
Source/WebCore/html/HTMLMeterElement.h
Source/WebCore/html/HTMLProgressElement.cpp
Source/WebCore/html/HTMLProgressElement.h
Source/WebCore/html/HTMLSelectElement.cpp
Source/WebCore/html/HTMLSelectElement.h
Source/WebCore/html/HTMLSummaryElement.cpp
Source/WebCore/html/HTMLSummaryElement.h
Source/WebCore/html/HTMLTextFormControlElement.cpp
Source/WebCore/html/HTMLTextFormControlElement.h
Source/WebCore/html/ValidationMessage.cpp
Source/WebCore/html/ValidationMessage.h
Source/WebCore/html/shadow/InsertionPoint.h
Source/WebCore/mathml/MathMLElement.cpp
Source/WebCore/mathml/MathMLElement.h
Source/WebCore/mathml/MathMLTextElement.cpp
Source/WebCore/mathml/MathMLTextElement.h
Source/WebCore/style/StyleResolveTree.cpp
Source/WebCore/svg/SVGAElement.cpp
Source/WebCore/svg/SVGAElement.h
Source/WebCore/svg/SVGAltGlyphElement.cpp
Source/WebCore/svg/SVGAltGlyphElement.h
Source/WebCore/svg/SVGDocument.cpp
Source/WebCore/svg/SVGDocument.h
Source/WebCore/svg/SVGElement.cpp
Source/WebCore/svg/SVGElement.h
Source/WebCore/svg/SVGFilterElement.cpp
Source/WebCore/svg/SVGFilterElement.h
Source/WebCore/svg/SVGFilterPrimitiveStandardAttributes.h
Source/WebCore/svg/SVGForeignObjectElement.cpp
Source/WebCore/svg/SVGForeignObjectElement.h
Source/WebCore/svg/SVGSwitchElement.cpp
Source/WebCore/svg/SVGSwitchElement.h
Source/WebCore/svg/SVGTRefElement.cpp
Source/WebCore/svg/SVGTRefElement.h
Source/WebCore/svg/SVGTSpanElement.cpp
Source/WebCore/svg/SVGTSpanElement.h
Source/WebCore/svg/SVGTextElement.cpp
Source/WebCore/svg/SVGTextElement.h
Source/WebCore/svg/SVGTextPathElement.cpp
Source/WebCore/svg/SVGTextPathElement.h

index 0117fff..b574c1b 100644 (file)
@@ -1,3 +1,12 @@
+2013-11-10  Sam Weinig  <sam@webkit.org>
+
+        Make childShouldCreateRenderer() take a Node reference
+        https://bugs.webkit.org/show_bug.cgi?id=124132
+
+        Reviewed by Andreas Kling.
+
+        The Node passed to childShouldCreateRenderer() is never null.
+
 2013-11-10  Frédéric Wang  <fred.wang@free.fr>
 
         CSS direction must be reset to ltr on <math> element.
index 51c8e18..ba106ae 100644 (file)
@@ -431,7 +431,7 @@ inline void StyleResolver::State::initForStyleResolve(Document& document, Elemen
 
     if (e) {
         m_parentNode = NodeRenderingTraversal::parent(e);
-        bool resetStyleInheritance = hasShadowRootParent(e) && toShadowRoot(e->parentNode())->resetStyleInheritance();
+        bool resetStyleInheritance = hasShadowRootParent(*e) && toShadowRoot(e->parentNode())->resetStyleInheritance();
         m_parentStyle = resetStyleInheritance ? 0 :
             parentStyle ? parentStyle :
             m_parentNode ? m_parentNode->renderStyle() : 0;
index fa1b697..205cc06 100644 (file)
@@ -122,7 +122,7 @@ public:
 
     void disconnectDescendantFrames();
 
-    virtual bool childShouldCreateRenderer(const Node*) const { return true; }
+    virtual bool childShouldCreateRenderer(const Node&) const { return true; }
 
     using Node::setAttributeEventListener;
     void setAttributeEventListener(const AtomicString& eventType, const QualifiedName& attributeName, const AtomicString& value);
index 0f53724..ca2915b 100644 (file)
@@ -2603,12 +2603,12 @@ const AtomicString& Element::UIActions() const
 }
 #endif
 
-bool Element::childShouldCreateRenderer(const Node* child) const
+bool Element::childShouldCreateRenderer(const Node& child) const
 {
 #if ENABLE(SVG)
     // Only create renderers for SVG elements whose parents are SVG elements, or for proper <svg xmlns="svgNS"> subdocuments.
-    if (child->isSVGElement())
-        return child->hasTagName(SVGNames::svgTag) || isSVGElement();
+    if (child.isSVGElement())
+        return child.hasTagName(SVGNames::svgTag) || isSVGElement();
 #endif
     return ContainerNode::childShouldCreateRenderer(child);
 }
index d773e8b..d5eb9f1 100644 (file)
@@ -479,7 +479,7 @@ public:
     // to event listeners, and prevents DOMActivate events from being sent at all.
     virtual bool isDisabledFormControl() const { return false; }
 
-    virtual bool childShouldCreateRenderer(const Node*) const OVERRIDE;
+    virtual bool childShouldCreateRenderer(const Node&) const OVERRIDE;
 
 #if ENABLE(SVG)
     bool hasPendingResources() const;
index 16259c1..8838f6a 100644 (file)
@@ -131,9 +131,9 @@ inline ContainerNode* Node::parentOrShadowHostNode() const
     return parentNode();
 }
 
-inline bool hasShadowRootParent(const Node* node)
+inline bool hasShadowRootParent(const Node& node)
 {
-    return node->parentNode() && node->parentNode()->isShadowRoot();
+    return node.parentNode() && node.parentNode()->isShadowRoot();
 }
 
 } // namespace
index 15a55b1..3073271 100644 (file)
@@ -142,9 +142,9 @@ void HTMLDetailsElement::parseAttribute(const QualifiedName& name, const AtomicS
         HTMLElement::parseAttribute(name, value);
 }
 
-bool HTMLDetailsElement::childShouldCreateRenderer(const Node* child) const
+bool HTMLDetailsElement::childShouldCreateRenderer(const Node& child) const
 {
-    if (child->isPseudoElement())
+    if (child.isPseudoElement())
         return HTMLElement::childShouldCreateRenderer(child);
 
     if (!hasShadowRootOrActiveInsertionPointParent(child))
@@ -153,10 +153,10 @@ bool HTMLDetailsElement::childShouldCreateRenderer(const Node* child) const
     if (m_isOpen)
         return HTMLElement::childShouldCreateRenderer(child);
 
-    if (!child->hasTagName(summaryTag))
+    if (!child.hasTagName(summaryTag))
         return false;
 
-    return child == findMainSummary() && HTMLElement::childShouldCreateRenderer(child);
+    return &child == findMainSummary() && HTMLElement::childShouldCreateRenderer(child);
 }
 
 void HTMLDetailsElement::toggleOpen()
index 853c446..61b03d4 100644 (file)
@@ -36,7 +36,7 @@ private:
     HTMLDetailsElement(const QualifiedName&, Document&);
 
     virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
-    virtual bool childShouldCreateRenderer(const Node*) const OVERRIDE;
+    virtual bool childShouldCreateRenderer(const Node&) const OVERRIDE;
     virtual void parseAttribute(const QualifiedName&, const AtomicString&) OVERRIDE;
 
     virtual void didAddUserAgentShadowRoot(ShadowRoot*) OVERRIDE;
index 7d4ce8d..4ccc541 100644 (file)
@@ -448,7 +448,7 @@ void HTMLFormControlElement::setCustomValidity(const String& error)
     setNeedsValidityCheck();
 }
 
-bool HTMLFormControlElement::validationMessageShadowTreeContains(const Node* node) const
+bool HTMLFormControlElement::validationMessageShadowTreeContains(const Node& node) const
 {
     return m_validationMessage && m_validationMessage->shadowTreeContains(node);
 }
index 99f09e0..28e6790 100644 (file)
@@ -127,7 +127,7 @@ protected:
     void setNeedsWillValidateCheck();
     virtual bool recalcWillValidate() const;
 
-    bool validationMessageShadowTreeContains(const Node*) const;
+    bool validationMessageShadowTreeContains(const Node&) const;
 
 private:
     virtual void refFormAssociatedElement() OVERRIDE { ref(); }
index 1785774..6db38b8 100644 (file)
@@ -576,7 +576,7 @@ RenderElement* HTMLMediaElement::createRenderer(PassRef<RenderStyle> style)
     return new RenderMedia(*this, std::move(style));
 }
 
-bool HTMLMediaElement::childShouldCreateRenderer(const Node* child) const
+bool HTMLMediaElement::childShouldCreateRenderer(const Node& child) const
 {
 #if ENABLE(MEDIA_CONTROLS_SCRIPT)
     return hasShadowRootParent(child) && HTMLElement::childShouldCreateRenderer(child);
@@ -587,7 +587,7 @@ bool HTMLMediaElement::childShouldCreateRenderer(const Node* child) const
     // be rendered. So this should return false for most of the children.
     // One exception is a shadow tree built for rendering controls which should be visible.
     // So we let them go here by comparing its subtree root with one of the controls.
-    return &mediaControls()->treeScope() == &child->treeScope()
+    return &mediaControls()->treeScope() == &child.treeScope()
         && hasShadowRootParent(child)
         && HTMLElement::childShouldCreateRenderer(child);
 #endif
index 1aeac45..219321e 100644 (file)
@@ -441,7 +441,7 @@ private:
     virtual bool supportsFocus() const OVERRIDE;
     virtual bool isMouseFocusable() const OVERRIDE;
     virtual bool rendererIsNeeded(const RenderStyle&) OVERRIDE;
-    virtual bool childShouldCreateRenderer(const Node*) const OVERRIDE;
+    virtual bool childShouldCreateRenderer(const Node&) const OVERRIDE;
     virtual InsertionNotificationRequest insertedInto(ContainerNode&) OVERRIDE;
     virtual void removedFrom(ContainerNode&) OVERRIDE;
     virtual void didRecalcStyle(Style::Change) OVERRIDE;
index f6be4ba..fc61b29 100644 (file)
@@ -65,7 +65,7 @@ RenderElement* HTMLMeterElement::createRenderer(PassRef<RenderStyle> style)
     return new RenderMeter(*this, std::move(style));
 }
 
-bool HTMLMeterElement::childShouldCreateRenderer(const Node* child) const
+bool HTMLMeterElement::childShouldCreateRenderer(const Node& child) const
 {
     return hasShadowRootParent(child) && HTMLElement::childShouldCreateRenderer(child);
 }
index afa84ff..22d919b 100644 (file)
@@ -73,7 +73,7 @@ private:
 
     virtual bool recalcWillValidate() const { return false; }
     virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
-    virtual bool childShouldCreateRenderer(const Node*) const OVERRIDE;
+    virtual bool childShouldCreateRenderer(const Node&) const OVERRIDE;
     virtual void parseAttribute(const QualifiedName&, const AtomicString&) OVERRIDE;
 
     void didElementStateChange();
index ff1bf6e..45f62b1 100644 (file)
@@ -66,7 +66,7 @@ RenderElement* HTMLProgressElement::createRenderer(PassRef<RenderStyle> style)
     return new RenderProgress(*this, std::move(style));
 }
 
-bool HTMLProgressElement::childShouldCreateRenderer(const Node* child) const
+bool HTMLProgressElement::childShouldCreateRenderer(const Node& child) const
 {
     return hasShadowRootParent(child) && HTMLElement::childShouldCreateRenderer(child);
 }
index 1c5e653..5c306bf 100644 (file)
@@ -55,7 +55,7 @@ private:
     virtual bool supportLabels() const OVERRIDE { return true; }
 
     virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
-    virtual bool childShouldCreateRenderer(const Node*) const OVERRIDE;
+    virtual bool childShouldCreateRenderer(const Node&) const OVERRIDE;
     RenderProgress* renderProgress() const;
 
     virtual void parseAttribute(const QualifiedName&, const AtomicString&) OVERRIDE;
index eed28b4..2f34810 100644 (file)
@@ -350,7 +350,7 @@ RenderElement* HTMLSelectElement::createRenderer(PassRef<RenderStyle> style)
     return new RenderListBox(*this, std::move(style));
 }
 
-bool HTMLSelectElement::childShouldCreateRenderer(const Node* child) const
+bool HTMLSelectElement::childShouldCreateRenderer(const Node& child) const
 {
     if (!HTMLFormControlElementWithState::childShouldCreateRenderer(child))
         return false;
index c02d1eb..dd18c16 100644 (file)
@@ -131,7 +131,7 @@ private:
     virtual void parseAttribute(const QualifiedName&, const AtomicString&) OVERRIDE;
     virtual bool isPresentationAttribute(const QualifiedName&) const OVERRIDE;
 
-    virtual bool childShouldCreateRenderer(const Node*) const OVERRIDE;
+    virtual bool childShouldCreateRenderer(const Node&) const OVERRIDE;
     virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
     virtual bool appendFormData(FormDataList&, bool) OVERRIDE;
 
index 7a73138..de8598e 100644 (file)
@@ -69,9 +69,9 @@ RenderElement* HTMLSummaryElement::createRenderer(PassRef<RenderStyle> style)
     return new RenderBlockFlow(*this, std::move(style));
 }
 
-bool HTMLSummaryElement::childShouldCreateRenderer(const Node* child) const
+bool HTMLSummaryElement::childShouldCreateRenderer(const Node& child) const
 {
-    if (child->isPseudoElement())
+    if (child.isPseudoElement())
         return HTMLElement::childShouldCreateRenderer(child);
 
     return hasShadowRootOrActiveInsertionPointParent(child) && HTMLElement::childShouldCreateRenderer(child);
index 17d8c79..26a11d8 100644 (file)
@@ -37,7 +37,7 @@ private:
     HTMLSummaryElement(const QualifiedName&, Document&);
 
     virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
-    virtual bool childShouldCreateRenderer(const Node*) const OVERRIDE;
+    virtual bool childShouldCreateRenderer(const Node&) const OVERRIDE;
     virtual void defaultEventHandler(Event*);
 
     virtual void didAddUserAgentShadowRoot(ShadowRoot*) OVERRIDE;
index 9957109..7b4ebbb 100644 (file)
@@ -65,11 +65,11 @@ HTMLTextFormControlElement::~HTMLTextFormControlElement()
 {
 }
 
-bool HTMLTextFormControlElement::childShouldCreateRenderer(const Node* child) const
+bool HTMLTextFormControlElement::childShouldCreateRenderer(const Node& child) const
 {
     // FIXME: We shouldn't force the pseudo elements down into the shadow, but
     // this perserves the current behavior of WebKit.
-    if (child->isPseudoElement())
+    if (child.isPseudoElement())
         return HTMLFormControlElementWithState::childShouldCreateRenderer(child);
     return hasShadowRootParent(child) && HTMLFormControlElementWithState::childShouldCreateRenderer(child);
 }
@@ -612,7 +612,7 @@ HTMLTextFormControlElement* enclosingTextFormControl(const Position& position)
 {
     ASSERT(position.isNull() || position.anchorType() == Position::PositionIsOffsetInAnchor
         || position.containerNode() || !position.anchorNode()->shadowHost()
-        || hasShadowRootParent(position.anchorNode()));
+        || hasShadowRootParent(*position.anchorNode()));
         
     Node* container = position.containerNode();
     if (!container)
index 83d86bc..3dbb4dd 100644 (file)
@@ -118,7 +118,7 @@ private:
 
     virtual void dispatchFocusEvent(PassRefPtr<Element> oldFocusedElement, FocusDirection) OVERRIDE FINAL;
     virtual void dispatchBlurEvent(PassRefPtr<Element> newFocusedElement) OVERRIDE FINAL;
-    virtual bool childShouldCreateRenderer(const Node*) const OVERRIDE;
+    virtual bool childShouldCreateRenderer(const Node&) const OVERRIDE;
 
     // Returns true if user-editable value is empty. Used to check placeholder visibility.
     virtual bool isEmptyValue() const = 0;
index 6719cb5..e00b195 100644 (file)
@@ -226,11 +226,11 @@ void ValidationMessage::requestToHideMessage()
     m_timer->startOneShot(0);
 }
 
-bool ValidationMessage::shadowTreeContains(const Node* node) const
+bool ValidationMessage::shadowTreeContains(const Node& node) const
 {
     if (validationMessageClient() || !m_bubble)
         return false;
-    return &m_bubble->treeScope() == &node->treeScope();
+    return &m_bubble->treeScope() == &node.treeScope();
 }
 
 void ValidationMessage::deleteBubbleTree(Timer<ValidationMessage>*)
index c40fdc3..6aec40d 100644 (file)
@@ -54,7 +54,7 @@ public:
     void updateValidationMessage(const String&);
     void requestToHideMessage();
     bool isVisible() const;
-    bool shadowTreeContains(const Node*) const;
+    bool shadowTreeContains(const Node&) const;
 
 private:
     explicit ValidationMessage(HTMLFormControlElement*);
index c4d6d10..f299aa9 100644 (file)
@@ -129,11 +129,11 @@ inline ShadowRoot* shadowRootOfParentForDistribution(const Node* node)
 
 InsertionPoint* findInsertionPointOf(const Node*);
 
-inline bool hasShadowRootOrActiveInsertionPointParent(const Node* node)
+inline bool hasShadowRootOrActiveInsertionPointParent(const Node& node)
 {
     return hasShadowRootParent(node)
-        || isActiveInsertionPoint(findInsertionPointOf(node))
-        || isActiveInsertionPoint(node->parentNode());
+        || isActiveInsertionPoint(findInsertionPointOf(&node))
+        || isActiveInsertionPoint(node.parentNode());
 }
 
 } // namespace WebCore
index b7599bc..b3b3ad3 100644 (file)
@@ -113,10 +113,10 @@ void MathMLElement::collectStyleForPresentationAttribute(const QualifiedName& na
     }
 }
 
-bool MathMLElement::childShouldCreateRenderer(const Node* child) const
+bool MathMLElement::childShouldCreateRenderer(const Node& child) const
 {
     // Only create renderers for MathML elements or text. MathML prohibits non-MathML markup inside a <math> element.
-    return child->isTextNode() || child->isMathMLElement();
+    return child.isTextNode() || child.isMathMLElement();
 }
 
 }
index 5012143..f59d4be 100644 (file)
@@ -41,8 +41,6 @@ public:
     int colSpan() const;
     int rowSpan() const;
 
-    virtual bool childShouldCreateRenderer(const Node*) const OVERRIDE;
-
 protected:
     MathMLElement(const QualifiedName& tagName, Document&);
 
@@ -51,6 +49,8 @@ protected:
 private:    
     virtual bool isPresentationAttribute(const QualifiedName&) const OVERRIDE;
     virtual void collectStyleForPresentationAttribute(const QualifiedName&, const AtomicString&, MutableStylePropertySet&) OVERRIDE;
+
+    virtual bool childShouldCreateRenderer(const Node&) const OVERRIDE;
 };
 
 void isMathMLElement(const MathMLElement&); // Catch unnecessary runtime check of type known at compile time.
index 9e3f7ee..2e43d68 100644 (file)
@@ -73,9 +73,9 @@ RenderElement* MathMLTextElement::createRenderer(PassRef<RenderStyle> style)
     return MathMLElement::createRenderer(std::move(style));
 }
 
-bool MathMLTextElement::childShouldCreateRenderer(const Node* child) const
+bool MathMLTextElement::childShouldCreateRenderer(const Node& child) const
 {
-    return child->isTextNode();
+    return child.isTextNode();
 }
 
 }
index c8327ea..3e3075e 100644 (file)
@@ -37,12 +37,12 @@ public:
     static PassRefPtr<MathMLTextElement> create(const QualifiedName& tagName, Document&);
     virtual void didAttachRenderers() OVERRIDE;
 
-    virtual bool childShouldCreateRenderer(const Node*) const OVERRIDE;
-
 private:
     MathMLTextElement(const QualifiedName& tagName, Document&);
 
     virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
+    virtual bool childShouldCreateRenderer(const Node&) const OVERRIDE;
+
     virtual void childrenChanged(const ChildChange&) OVERRIDE;
 };
     
index e077058..d019e2c 100644 (file)
@@ -156,7 +156,7 @@ static bool shouldCreateRenderer(const Element& element, const ContainerNode* re
         return false;
     if (!parentRenderer->canHaveChildren() && !(element.isPseudoElement() && parentRenderer->canHaveGeneratedChildren()))
         return false;
-    if (!renderingParent->childShouldCreateRenderer(&element))
+    if (!renderingParent->childShouldCreateRenderer(element))
         return false;
     return true;
 }
@@ -375,7 +375,7 @@ static void createTextRendererIfNeeded(Text& textNode)
     RenderElement* parentRenderer = renderingParentNode->renderer();
     if (!parentRenderer || !parentRenderer->canHaveChildren())
         return;
-    if (!renderingParentNode->childShouldCreateRenderer(&textNode))
+    if (!renderingParentNode->childShouldCreateRenderer(textNode))
         return;
 
     // FIXME: constify this RenderStyle&.
index bc4157c..cbd3fb7 100644 (file)
@@ -223,11 +223,11 @@ bool SVGAElement::isKeyboardFocusable(KeyboardEvent* event) const
     return document().frame()->eventHandler().tabsToLinks(event);
 }
 
-bool SVGAElement::childShouldCreateRenderer(const Node* child) const
+bool SVGAElement::childShouldCreateRenderer(const Node& child) const
 {
     // http://www.w3.org/2003/01/REC-SVG11-20030114-errata#linking-text-environment
     // The 'a' element may contain any element that its parent may contain, except itself.
-    if (child->hasTagName(SVGNames::aTag))
+    if (child.hasTagName(SVGNames::aTag))
         return false;
     if (parentNode() && parentNode()->isSVGElement())
         return parentNode()->childShouldCreateRenderer(child);
index 32eae03..97109cb 100644 (file)
@@ -49,6 +49,7 @@ private:
     virtual void svgAttributeChanged(const QualifiedName&);
 
     virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
+    virtual bool childShouldCreateRenderer(const Node&) const OVERRIDE;
 
     virtual void defaultEventHandler(Event*);
     
@@ -58,8 +59,6 @@ private:
     virtual bool isFocusable() const OVERRIDE;
     virtual bool isURLAttribute(const Attribute&) const;
 
-    virtual bool childShouldCreateRenderer(const Node*) const;
-
     BEGIN_DECLARE_ANIMATED_PROPERTIES(SVGAElement)
         // This declaration used to define a non-virtual "String& target() const" method, that clashes with "virtual String Element::target() const".
         // That's why it has been renamed to "svgTarget", the CodeGenerators take care of calling svgTargetAnimated() instead of targetAnimated(), see CodeGenerator.pm.
index c83e438..e1b1950 100644 (file)
@@ -75,9 +75,9 @@ const AtomicString& SVGAltGlyphElement::format() const
     return fastGetAttribute(SVGNames::formatAttr);
 }
 
-bool SVGAltGlyphElement::childShouldCreateRenderer(const Node* child) const
+bool SVGAltGlyphElement::childShouldCreateRenderer(const Node& child) const
 {
-    if (child->isTextNode())
+    if (child.isTextNode())
         return true;
     return false;
 }
index c7d787f..b6154e2 100644 (file)
@@ -47,7 +47,7 @@ private:
     SVGAltGlyphElement(const QualifiedName&, Document&);
 
     virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
-    virtual bool childShouldCreateRenderer(const Node*) const;
+    virtual bool childShouldCreateRenderer(const Node&) const OVERRIDE;
 
     BEGIN_DECLARE_ANIMATED_PROPERTIES(SVGAltGlyphElement)
         DECLARE_ANIMATED_STRING(Href, href)
index 62a56d9..cbaa2e7 100644 (file)
@@ -93,10 +93,10 @@ void SVGDocument::updatePan(const FloatPoint& pos) const
     }
 }
 
-bool SVGDocument::childShouldCreateRenderer(const Node* child) const
+bool SVGDocument::childShouldCreateRenderer(const Node& child) const
 {
     if (isSVGSVGElement(child))
-        return toSVGSVGElement(child)->isValid();
+        return toSVGSVGElement(child).isValid();
     return true;
 }
 
index 186b44e..04b228c 100644 (file)
@@ -51,7 +51,7 @@ public:
 private:
     SVGDocument(Frame*, const URL&);
 
-    virtual bool childShouldCreateRenderer(const Node*) const OVERRIDE;
+    virtual bool childShouldCreateRenderer(const Node&) const OVERRIDE;
 
     FloatPoint m_translate;
 };
index 3ee4ff8..3271b17 100644 (file)
@@ -679,7 +679,7 @@ void SVGElement::finishParsingChildren()
     sendSVGLoadEventIfPossible();
 }
 
-bool SVGElement::childShouldCreateRenderer(const Node* child) const
+bool SVGElement::childShouldCreateRenderer(const Node& child) const
 {
     DEFINE_STATIC_LOCAL(HashSet<QualifiedName>, invalidTextContent, ());
 
@@ -691,12 +691,12 @@ bool SVGElement::childShouldCreateRenderer(const Node* child) const
         invalidTextContent.add(SVGNames::trefTag);
         invalidTextContent.add(SVGNames::tspanTag);
     }
-    if (child->isSVGElement()) {
-        const SVGElement* svgChild = toSVGElement(child);
-        if (invalidTextContent.contains(svgChild->tagQName()))
+    if (child.isSVGElement()) {
+        const SVGElement& svgChild = toSVGElement(child);
+        if (invalidTextContent.contains(svgChild.tagQName()))
             return false;
 
-        return svgChild->isValid();
+        return svgChild.isValid();
     }
     return false;
 }
index 34dcb36..2bb8101 100644 (file)
@@ -148,7 +148,7 @@ protected:
 
     virtual void finishParsingChildren() OVERRIDE;
     virtual void attributeChanged(const QualifiedName&, const AtomicString&, AttributeModificationReason = ModifiedDirectly) OVERRIDE;
-    virtual bool childShouldCreateRenderer(const Node*) const OVERRIDE;
+    virtual bool childShouldCreateRenderer(const Node&) const OVERRIDE;
 
     SVGElementRareData& ensureSVGRareData();
 
index 4cfae03..353e479 100644 (file)
@@ -193,12 +193,12 @@ RenderElement* SVGFilterElement::createRenderer(PassRef<RenderStyle> style)
     return new RenderSVGResourceFilter(*this, std::move(style));
 }
 
-bool SVGFilterElement::childShouldCreateRenderer(const Node* child) const
+bool SVGFilterElement::childShouldCreateRenderer(const Node& child) const
 {
-    if (!child->isSVGElement())
+    if (!child.isSVGElement())
         return false;
 
-    const SVGElement* svgElement = toSVGElement(child);
+    const SVGElement& svgElement = toSVGElement(child);
 
     DEFINE_STATIC_LOCAL(HashSet<QualifiedName>, allowedChildElementTags, ());
     if (allowedChildElementTags.isEmpty()) {
@@ -229,7 +229,7 @@ bool SVGFilterElement::childShouldCreateRenderer(const Node* child) const
         allowedChildElementTags.add(SVGNames::feTurbulenceTag);
     }
 
-    return allowedChildElementTags.contains<SVGAttributeHashTranslator>(svgElement->tagQName());
+    return allowedChildElementTags.contains<SVGAttributeHashTranslator>(svgElement.tagQName());
 }
 
 bool SVGFilterElement::selfHasRelativeLengths() const
index 3d1821b..152f299 100644 (file)
@@ -55,7 +55,7 @@ private:
     virtual void childrenChanged(const ChildChange&) OVERRIDE;
 
     virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
-    virtual bool childShouldCreateRenderer(const Node*) const OVERRIDE;
+    virtual bool childShouldCreateRenderer(const Node&) const OVERRIDE;
 
     virtual bool selfHasRelativeLengths() const;
 
index 2484fd2..1da30cd 100644 (file)
@@ -70,7 +70,7 @@ private:
 
     virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
     virtual bool rendererIsNeeded(const RenderStyle&) OVERRIDE;
-    virtual bool childShouldCreateRenderer(const Node*) const OVERRIDE { return false; }
+    virtual bool childShouldCreateRenderer(const Node&) const OVERRIDE { return false; }
 
     BEGIN_DECLARE_ANIMATED_PROPERTIES(SVGFilterPrimitiveStandardAttributes)
         DECLARE_ANIMATED_LENGTH(X, x)
index 656adec..f3dd53b 100644 (file)
@@ -131,11 +131,11 @@ RenderElement* SVGForeignObjectElement::createRenderer(PassRef<RenderStyle> styl
     return new RenderSVGForeignObject(*this, std::move(style));
 }
 
-bool SVGForeignObjectElement::childShouldCreateRenderer(const Node* child) const
+bool SVGForeignObjectElement::childShouldCreateRenderer(const Node& child) const
 {
     // Disallow arbitary SVG content. Only allow proper <svg xmlns="svgNS"> subdocuments.
-    if (child->isSVGElement())
-        return child->hasTagName(SVGNames::svgTag);
+    if (child.isSVGElement())
+        return child.hasTagName(SVGNames::svgTag);
 
     // Skip over SVG rules which disallow non-SVG kids
     return StyledElement::childShouldCreateRenderer(child);
index 70be471..7f3efd4 100644 (file)
@@ -44,7 +44,7 @@ private:
     virtual void svgAttributeChanged(const QualifiedName&);
 
     virtual bool rendererIsNeeded(const RenderStyle&) OVERRIDE;
-    virtual bool childShouldCreateRenderer(const Node*) const;
+    virtual bool childShouldCreateRenderer(const Node&) const OVERRIDE;
     virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
 
     virtual bool selfHasRelativeLengths() const;
index 9eced7e..4f473ab 100644 (file)
@@ -49,7 +49,7 @@ PassRefPtr<SVGSwitchElement> SVGSwitchElement::create(const QualifiedName& tagNa
     return adoptRef(new SVGSwitchElement(tagName, document));
 }
 
-bool SVGSwitchElement::childShouldCreateRenderer(const Node* child) const
+bool SVGSwitchElement::childShouldCreateRenderer(const Node& child) const
 {
     // FIXME: This function does not do what the comment below implies it does.
     // It will create a renderer for any valid SVG element children, not just the first one.
@@ -57,7 +57,7 @@ bool SVGSwitchElement::childShouldCreateRenderer(const Node* child) const
     for (auto element = svgChildren.begin(), end = svgChildren.end(); element != end; ++element) {
         if (!element->isValid())
             continue;
-        return &*element == child; // Only allow this child if it's the first valid child
+        return &*element == &child; // Only allow this child if it's the first valid child
     }
 
     return false;
index 7fa8900..70d7519 100644 (file)
@@ -39,8 +39,7 @@ private:
     virtual bool isValid() const { return SVGTests::isValid(); }
     virtual bool supportsFocus() const OVERRIDE { return true; }
 
-    virtual bool childShouldCreateRenderer(const Node*) const;
-
+    virtual bool childShouldCreateRenderer(const Node&) const OVERRIDE;
     virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
 
     BEGIN_DECLARE_ANIMATED_PROPERTIES(SVGSwitchElement)
index a6348ed..777703c 100644 (file)
@@ -225,9 +225,9 @@ RenderElement* SVGTRefElement::createRenderer(PassRef<RenderStyle> style)
     return new RenderSVGInline(*this, std::move(style));
 }
 
-bool SVGTRefElement::childShouldCreateRenderer(const Node* child) const
+bool SVGTRefElement::childShouldCreateRenderer(const Node& child) const
 {
-    return child->isInShadowTree();
+    return child.isInShadowTree();
 }
 
 bool SVGTRefElement::rendererIsNeeded(const RenderStyle& style)
index 8889039..70d8acd 100644 (file)
@@ -45,7 +45,7 @@ private:
     virtual void svgAttributeChanged(const QualifiedName&);
 
     virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
-    virtual bool childShouldCreateRenderer(const Node*) const;
+    virtual bool childShouldCreateRenderer(const Node&) const OVERRIDE;
     virtual bool rendererIsNeeded(const RenderStyle&);
 
     virtual InsertionNotificationRequest insertedInto(ContainerNode&) OVERRIDE;
index 833e315..85ffa6d 100644 (file)
@@ -45,15 +45,15 @@ RenderElement* SVGTSpanElement::createRenderer(PassRef<RenderStyle> style)
     return new RenderSVGTSpan(*this, std::move(style));
 }
 
-bool SVGTSpanElement::childShouldCreateRenderer(const Node* child) const
+bool SVGTSpanElement::childShouldCreateRenderer(const Node& child) const
 {
-    if (child->isTextNode()
-        || child->hasTagName(SVGNames::aTag)
+    if (child.isTextNode()
+        || child.hasTagName(SVGNames::aTag)
 #if ENABLE(SVG_FONTS)
-        || child->hasTagName(SVGNames::altGlyphTag)
+        || child.hasTagName(SVGNames::altGlyphTag)
 #endif
-        || child->hasTagName(SVGNames::trefTag)
-        || child->hasTagName(SVGNames::tspanTag))
+        || child.hasTagName(SVGNames::trefTag)
+        || child.hasTagName(SVGNames::tspanTag))
         return true;
 
     return false;
index 0340208..d680917 100644 (file)
@@ -34,7 +34,7 @@ private:
     SVGTSpanElement(const QualifiedName&, Document&);
             
     virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
-    virtual bool childShouldCreateRenderer(const Node*) const;
+    virtual bool childShouldCreateRenderer(const Node&) const OVERRIDE;
     virtual bool rendererIsNeeded(const RenderStyle&);
 };
 
index cd9d0df..ddf7e4a 100644 (file)
@@ -73,16 +73,16 @@ RenderElement* SVGTextElement::createRenderer(PassRef<RenderStyle> style)
     return new RenderSVGText(*this, std::move(style));
 }
 
-bool SVGTextElement::childShouldCreateRenderer(const Node* child) const
+bool SVGTextElement::childShouldCreateRenderer(const Node& child) const
 {
-    if (child->isTextNode()
-        || child->hasTagName(SVGNames::aTag)
+    if (child.isTextNode()
+        || child.hasTagName(SVGNames::aTag)
 #if ENABLE(SVG_FONTS)
-        || child->hasTagName(SVGNames::altGlyphTag)
+        || child.hasTagName(SVGNames::altGlyphTag)
 #endif
-        || child->hasTagName(SVGNames::textPathTag)
-        || child->hasTagName(SVGNames::trefTag)
-        || child->hasTagName(SVGNames::tspanTag))
+        || child.hasTagName(SVGNames::textPathTag)
+        || child.hasTagName(SVGNames::trefTag)
+        || child.hasTagName(SVGNames::tspanTag))
         return true;
 
     return false;
index 3d93101..0a28b04 100644 (file)
@@ -38,7 +38,7 @@ private:
     virtual bool supportsFocus() const OVERRIDE { return true; }
 
     virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
-    virtual bool childShouldCreateRenderer(const Node*) const;
+    virtual bool childShouldCreateRenderer(const Node&) const OVERRIDE;
 };
 
 NODE_TYPE_CASTS(SVGTextElement)
index 62e4afc..40d2b57 100644 (file)
@@ -132,12 +132,12 @@ RenderElement* SVGTextPathElement::createRenderer(PassRef<RenderStyle> style)
     return new RenderSVGTextPath(*this, std::move(style));
 }
 
-bool SVGTextPathElement::childShouldCreateRenderer(const Node* child) const
+bool SVGTextPathElement::childShouldCreateRenderer(const Node& child) const
 {
-    if (child->isTextNode()
-        || child->hasTagName(SVGNames::aTag)
-        || child->hasTagName(SVGNames::trefTag)
-        || child->hasTagName(SVGNames::tspanTag))
+    if (child.isTextNode()
+        || child.hasTagName(SVGNames::aTag)
+        || child.hasTagName(SVGNames::trefTag)
+        || child.hasTagName(SVGNames::tspanTag))
         return true;
 
     return false;
index 860319c..aec89be 100644 (file)
@@ -128,7 +128,7 @@ private:
     virtual void svgAttributeChanged(const QualifiedName&);
 
     virtual RenderElement* createRenderer(PassRef<RenderStyle>) OVERRIDE;
-    virtual bool childShouldCreateRenderer(const Node*) const;
+    virtual bool childShouldCreateRenderer(const Node&) const OVERRIDE;
     virtual bool rendererIsNeeded(const RenderStyle&);
 
     virtual bool selfHasRelativeLengths() const;