[webkit-reviews] review denied: [Bug 137137] Stop using legacy NODE_TYPE_CASTS() macro for HTML Elements : [Attachment 238731] Patch

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Fri Sep 26 14:59:01 PDT 2014


Benjamin Poulain <benjamin at webkit.org> has denied Chris Dumez
<cdumez at apple.com>'s request for review:
Bug 137137: Stop using legacy NODE_TYPE_CASTS() macro for HTML Elements
https://bugs.webkit.org/show_bug.cgi?id=137137

Attachment 238731: Patch
https://bugs.webkit.org/attachment.cgi?id=238731&action=review

------- Additional Comments from Benjamin Poulain <benjamin at webkit.org>
View in context: https://bugs.webkit.org/attachment.cgi?id=238731&action=review


> Source/WebCore/bindings/js/JSPluginElementFunctions.cpp:130
> -	   return 0;
> +	   return false;

Uh!

> Source/WebCore/css/StyleResolver.cpp:454
>	   return 0;

nullptr!

> Source/WebCore/css/StyleResolver.cpp:456
>	   return 0;

nullptr!

> Source/WebCore/html/HTMLElement.cpp:871
> +    return is<HTMLElement>(node) &&
(downcast<HTMLElement>(node).hasTagName(bdiTag) ||
downcast<HTMLElement>(node).fastHasAttribute(dirAttr));

Why not is<HTMLBDIElement>?

> Source/WebCore/html/HTMLPlugInImageElement.cpp:-419
> -	   if (node->isPluginElement()) {
> -	       HTMLPlugInElement* plugInElement = toHTMLPlugInElement(node);
> -	       if (plugInElement->isPlugInImageElement()) {

This code was weird.

> Source/WebCore/html/HTMLSelectElement.cpp:452
> +	   before = downcast<HTMLElement>(options()->item(index+1));

index + 1

> Source/WebCore/html/HTMLSelectElement.cpp:474
> +	       add(downcast<HTMLElement>(option.get()), 0, ec);

0 -> nullptr

> Source/WebCore/html/LabelableElement.h:55
> +inline bool isLabelableElement(const Node& node) { return
node.isHTMLElement() && downcast<HTMLElement>(node).isLabelable(); }

node.isHTMLElement() -> is<HTMLElement>(node)

> Source/WebCore/html/RangeInputType.cpp:271
> -    return
&toHTMLElement(*element().userAgentShadowRoot()->firstChild()->firstChild());
> +    return
&downcast<HTMLElement>(*element().userAgentShadowRoot()->firstChild()->firstChi
ld());

Uh, what.

> Source/WebCore/html/shadow/MediaControlElementTypes.cpp:64
>      ASSERT_WITH_SECURITY_IMPLICATION(node->isMediaControlElement());
> -    HTMLElement* element = toHTMLElement(node);
> +    HTMLElement* element = downcast<HTMLElement>(node);

Hum, this looks fragile.

> Source/WebCore/html/shadow/TextControlInnerElements.h:74
> +inline bool isTextControlInnerTextElement(const Node& node) { return
node.isHTMLElement() &&
isTextControlInnerTextElement(downcast<HTMLElement>(node)); }

node.isHTMLElement() -> is<HTMLElement>(node)

> Source/WebCore/loader/archive/cf/LegacyWebArchive.cpp:520
> +	   if ((is<HTMLFrameElementBase>(node) || is<HTMLObjectElement>(node))

Isn't this is<HTMLFrameOwnerElement>(node)?

> Source/WebCore/mathml/MathMLElement.cpp:87
> -    if (node.isMathMLElement()) {
> -	   auto& mathmlElement = downcast<MathMLElement>(node);
> -	   return mathmlElement.hasTagName(MathMLNames::mathTag);
> -    }
> +    if (is<MathMLMathElement>(node))
> +	   return true;

This isn't strictly equivalent.

Previously, the remaining of the function would not be evaluated if node is a
mathMLElement.

> Source/WebCore/mathml/MathMLElement.cpp:90
> -    if (node.isSVGElement()) {
> -	   auto& svgElement = downcast<SVGElement>(node);
> -	   return svgElement.hasTagName(SVGNames::svgTag);
> -    }
> +    if (is<SVGSVGElement>(node))
> +	   return true;

ditto.

> Source/WebCore/mathml/MathMLElement.cpp:276
> -	   if (child.isMathMLElement() &&
(MathMLSelectElement::isMathMLEncoding(value) ||
MathMLSelectElement::isHTMLEncoding(value))) {
> -	       auto& mathmlElement = downcast<MathMLElement>(child);
> -	       return mathmlElement.hasTagName(MathMLNames::mathTag);
> -	   }
> +	   if (is<MathMLMathElement>(child) &&
(MathMLSelectElement::isMathMLEncoding(value) ||
MathMLSelectElement::isHTMLEncoding(value)))
> +	       return true;
>  
> -	   if (child.isSVGElement() &&
(MathMLSelectElement::isSVGEncoding(value) ||
MathMLSelectElement::isHTMLEncoding(value))) {
> -	       auto& svgElement = downcast<SVGElement>(child);
> -	       return svgElement.hasTagName(SVGNames::svgTag);
> -	   }
> +	   if (is<SVGSVGElement>(child) &&
(MathMLSelectElement::isSVGEncoding(value) ||
MathMLSelectElement::isHTMLEncoding(value)))
> +	       return true;
>  
> -	   if (child.isHTMLElement() &&
MathMLSelectElement::isHTMLEncoding(value)) {
> -	       auto& htmlElement = toHTMLElement(child);
> -	       return htmlElement.hasTagName(HTMLNames::htmlTag) ||
(isFlowContent(htmlElement) &&
StyledElement::childShouldCreateRenderer(child));
> +	   if (is<HTMLElement>(child) &&
MathMLSelectElement::isHTMLEncoding(value)) {
> +	       auto& htmlElement = downcast<HTMLElement>(child);
> +	       return is<HTMLHtmlElement>(htmlElement) ||
(isFlowContent(htmlElement) &&
StyledElement::childShouldCreateRenderer(child));
>	   }

etc


More information about the webkit-reviews mailing list