<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[182121] trunk/Source/WebCore</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/182121">182121</a></dd>
<dt>Author</dt> <dd>darin@apple.com</dd>
<dt>Date</dt> <dd>2015-03-29 13:40:15 -0700 (Sun, 29 Mar 2015)</dd>
</dl>

<h3>Log Message</h3>
<pre>Remove unneeded SVG code, including most isSupportedAttribute functions
https://bugs.webkit.org/show_bug.cgi?id=143194

Reviewed by Antti Koivisto.

- Removed most implementations of isSupportedAttribute. Others can be removed in
  future patches. The ones left behind are now all private static member functions.
  It's dangerous for them to be public because they tend to indicate which attributes
  are supported at a particular level in the class hierarchy and they are not virtual
  functions; might want to rethink the function name if we keep any of these long term.

- Removed unneeded includes, especially of Attr.h and Attribute.h.

- Changed most parseAttribute and svgAttributeChanged functions so they no longer
  rely on checking attribute names against a set. Also removed lots of unneeded calls
  to SVGLangSpace::parseAttribute, which is called by SVGElement::parseAttribute and
  need not be called by derived classes.

- Removed return values from parseAttribute functions. Skipping other parseAttribute
  logic is not an important optimization and makes functions needlessly complex.

- Moved use of InstanceInvalidationGuard closer to where they are needed. Eventually
  we may be able to remove many of these.

- Used auto in a few places where the same type is repeated twice on the same line of
  code, and auto makes it a bit smaller.

- Got rid of protected sections in some final classes; doesn't make sense to combine
  these two. Also moved a few functions from protected to private in other classes.

- Made a number of functions into static member functions in the base classes such
  as SVGLangSpace; they were not making any use of the object, and so it was wasteful
  to compile them as non-static member functions.

* rendering/svg/RenderSVGImage.cpp: Removed unneeded includes.
* svg/SVGAElement.cpp: Removed unneeded includes.
(WebCore::SVGAElement::isSupportedAttribute): Deleted.
(WebCore::SVGAElement::parseAttribute): Don't use isSupportedAttribute.
(WebCore::SVGAElement::svgAttributeChanged): Don't use isSupportedAttribute.
* svg/SVGAElement.h: Removed isSupportedAttribute.
* svg/SVGAnimateMotionElement.cpp: Removed unneeded includes.
(WebCore::SVGAnimateMotionElement::isSupportedAttribute): Deleted.
(WebCore::SVGAnimateMotionElement::parseAttribute): Don't use isSupportedAttribute.
* svg/SVGAnimateMotionElement.h: Removed isSupportedAttribute.
* svg/SVGAnimateTransformElement.cpp:
(WebCore::SVGAnimateTransformElement::isSupportedAttribute): Deleted.
(WebCore::SVGAnimateTransformElement::parseAttribute): Don't use isSupportedAttribute.
* svg/SVGAnimateTransformElement.h: Removed isSupportedAttribute.
* svg/SVGAnimationElement.cpp:
(WebCore::SVGAnimationElement::parseAttribute): Don't use isSupportedAttribute.
* svg/SVGCircleElement.cpp:
(WebCore::SVGCircleElement::isSupportedAttribute): Deleted.
(WebCore::SVGCircleElement::parseAttribute): Don't use isSupportedAttribute.
(WebCore::SVGCircleElement::svgAttributeChanged): Don't use isSupportedAttribute.
* svg/SVGCircleElement.h: Removed isSupportedAttribute.
* svg/SVGClipPathElement.cpp: Removed unneeded includes.
(WebCore::SVGClipPathElement::parseAttribute): Don't use isSupportedAttribute.
* svg/SVGComponentTransferFunctionElement.cpp:
(WebCore::SVGComponentTransferFunctionElement::parseAttribute): Don't use isSupportedAttribute.
* svg/SVGCursorElement.cpp: Removed unneeded includes.
(WebCore::SVGCursorElement::parseAttribute): Don't use isSupportedAttribute.
(WebCore::SVGCursorElement::svgAttributeChanged): Don't use isSupportedAttribute.
* svg/SVGElement.cpp: Removed unneeded includes.
* svg/SVGEllipseElement.cpp: Removed unneeded includes.
(WebCore::SVGEllipseElement::isSupportedAttribute): Deleted.
(WebCore::SVGEllipseElement::parseAttribute): Don't use isSupportedAttribute.
(WebCore::SVGEllipseElement::svgAttributeChanged): Don't use isSupportedAttribute.
* svg/SVGEllipseElement.h: Removed isSupportedAttribute.
* svg/SVGExternalResourcesRequired.cpp: Removed unneeded includes.
(WebCore::SVGExternalResourcesRequired::parseAttribute): Don't return a boolean.
* svg/SVGExternalResourcesRequired.h: Don't return a boolean.
* svg/SVGFEBlendElement.cpp: Removed unneeded includes.
(WebCore::SVGFEBlendElement::isSupportedAttribute): Deleted.
(WebCore::SVGFEBlendElement::parseAttribute): Don't use isSupportedAttribute.
(WebCore::SVGFEBlendElement::svgAttributeChanged): Don't use isSupportedAttribute.
* svg/SVGFEBlendElement.h: Removed isSupportedAttribute.
* svg/SVGFEColorMatrixElement.cpp: Removed unneeded includes.
(WebCore::SVGFEColorMatrixElement::isSupportedAttribute): Deleted.
(WebCore::SVGFEColorMatrixElement::parseAttribute): Don't use isSupportedAttribute.
(WebCore::SVGFEColorMatrixElement::svgAttributeChanged): Don't use isSupportedAttribute.
* svg/SVGFEColorMatrixElement.h: Removed isSupportedAttribute.
* svg/SVGFEComponentTransferElement.cpp: Removed unneeded includes.
(WebCore::SVGFEComponentTransferElement::isSupportedAttribute): Deleted.
(WebCore::SVGFEComponentTransferElement::parseAttribute): Don't use isSupportedAttribute.
* svg/SVGFEComponentTransferElement.h: Removed unneeded includes.
* svg/SVGFECompositeElement.cpp: Removed unneeded includes.
(WebCore::SVGFECompositeElement::isSupportedAttribute): Deleted.
(WebCore::SVGFECompositeElement::parseAttribute): Don't use isSupportedAttribute.
(WebCore::SVGFECompositeElement::svgAttributeChanged): Don't use isSupportedAttribute.
* svg/SVGFECompositeElement.h:
* svg/SVGFEConvolveMatrixElement.cpp: Removed unneeded includes.
(WebCore::SVGFEConvolveMatrixElement::isSupportedAttribute): Deleted.
(WebCore::SVGFEConvolveMatrixElement::parseAttribute): Don't use isSupportedAttribute.
(WebCore::SVGFEConvolveMatrixElement::svgAttributeChanged): Don't use isSupportedAttribute.
* svg/SVGFEConvolveMatrixElement.h:
* svg/SVGFEDiffuseLightingElement.cpp: Removed unneeded includes.
(WebCore::SVGFEDiffuseLightingElement::isSupportedAttribute): Deleted.
(WebCore::SVGFEDiffuseLightingElement::parseAttribute): Don't use isSupportedAttribute.
(WebCore::SVGFEDiffuseLightingElement::svgAttributeChanged): Don't use isSupportedAttribute.
* svg/SVGFEDiffuseLightingElement.h:
* svg/SVGFEDisplacementMapElement.cpp: Removed unneeded includes.
(WebCore::SVGFEDisplacementMapElement::isSupportedAttribute): Deleted.
(WebCore::SVGFEDisplacementMapElement::parseAttribute): Don't use isSupportedAttribute.
(WebCore::SVGFEDisplacementMapElement::svgAttributeChanged): Don't use isSupportedAttribute.
* svg/SVGFEDisplacementMapElement.h:
* svg/SVGFEDropShadowElement.cpp: Removed unneeded includes.
(WebCore::SVGFEDropShadowElement::isSupportedAttribute): Deleted.
(WebCore::SVGFEDropShadowElement::parseAttribute): Don't use isSupportedAttribute.
(WebCore::SVGFEDropShadowElement::svgAttributeChanged): Don't use isSupportedAttribute.
* svg/SVGFEDropShadowElement.h:
* svg/SVGFEFloodElement.cpp: Removed unneeded includes.
* svg/SVGFEGaussianBlurElement.cpp: Removed unneeded includes.
(WebCore::SVGFEGaussianBlurElement::isSupportedAttribute): Deleted.
(WebCore::SVGFEGaussianBlurElement::parseAttribute): Don't use isSupportedAttribute.
(WebCore::SVGFEGaussianBlurElement::svgAttributeChanged): Don't use isSupportedAttribute.
* svg/SVGFEGaussianBlurElement.h:
* svg/SVGFEImageElement.cpp: Removed unneeded includes.
(WebCore::SVGFEImageElement::isSupportedAttribute): Deleted.
(WebCore::SVGFEImageElement::parseAttribute): Don't use isSupportedAttribute.
(WebCore::SVGFEImageElement::svgAttributeChanged): Don't use isSupportedAttribute.
* svg/SVGFEImageElement.h:
* svg/SVGFELightElement.cpp: Removed unneeded includes.
(WebCore::SVGFELightElement::isSupportedAttribute): Deleted.
(WebCore::SVGFELightElement::parseAttribute): Don't use isSupportedAttribute.
(WebCore::SVGFELightElement::svgAttributeChanged): Don't use isSupportedAttribute.
* svg/SVGFELightElement.h:
* svg/SVGFEMergeNodeElement.cpp: Removed unneeded includes.
(WebCore::SVGFEMergeNodeElement::isSupportedAttribute): Deleted.
(WebCore::SVGFEMergeNodeElement::parseAttribute): Don't use isSupportedAttribute.
(WebCore::SVGFEMergeNodeElement::svgAttributeChanged): Don't use isSupportedAttribute.
* svg/SVGFEMergeNodeElement.h:
* svg/SVGFEMorphologyElement.cpp: Removed unneeded includes.
(WebCore::SVGFEMorphologyElement::isSupportedAttribute): Deleted.
(WebCore::SVGFEMorphologyElement::parseAttribute): Don't use isSupportedAttribute.
(WebCore::SVGFEMorphologyElement::svgAttributeChanged): Don't use isSupportedAttribute.
* svg/SVGFEMorphologyElement.h:
* svg/SVGFEOffsetElement.cpp: Removed unneeded includes.
(WebCore::SVGFEOffsetElement::isSupportedAttribute): Deleted.
(WebCore::SVGFEOffsetElement::parseAttribute): Don't use isSupportedAttribute.
(WebCore::SVGFEOffsetElement::svgAttributeChanged): Don't use isSupportedAttribute.
* svg/SVGFEOffsetElement.h:
* svg/SVGFESpecularLightingElement.cpp: Removed unneeded includes.
(WebCore::SVGFESpecularLightingElement::isSupportedAttribute): Deleted.
(WebCore::SVGFESpecularLightingElement::parseAttribute): Don't use isSupportedAttribute.
(WebCore::SVGFESpecularLightingElement::svgAttributeChanged): Don't use isSupportedAttribute.
* svg/SVGFESpecularLightingElement.h:
* svg/SVGFETileElement.cpp: Removed unneeded includes.
(WebCore::SVGFETileElement::isSupportedAttribute): Deleted.
(WebCore::SVGFETileElement::parseAttribute): Don't use isSupportedAttribute.
(WebCore::SVGFETileElement::svgAttributeChanged): Don't use isSupportedAttribute.
* svg/SVGFETileElement.h:
* svg/SVGFETurbulenceElement.cpp: Removed unneeded includes.
(WebCore::SVGFETurbulenceElement::isSupportedAttribute): Deleted.
(WebCore::SVGFETurbulenceElement::parseAttribute): Don't use isSupportedAttribute.
(WebCore::SVGFETurbulenceElement::svgAttributeChanged): Don't use isSupportedAttribute.
* svg/SVGFETurbulenceElement.h:
* svg/SVGFilterElement.cpp: Removed unneeded includes.
(WebCore::SVGFilterElement::parseAttribute): Don't use isSupportedAttribute.
* svg/SVGFilterPrimitiveStandardAttributes.cpp: Removed unneeded includes.
(WebCore::SVGFilterPrimitiveStandardAttributes::parseAttribute): Don't use isSupportedAttribute.
* svg/SVGFilterPrimitiveStandardAttributes.h: Removed isSupportedAttribute and also moved a
couple functions out of the class definition.
* svg/SVGFitToViewBox.cpp: Removed unneeded includes.
* svg/SVGFontFaceElement.cpp: Removed unneeded includes.
* svg/SVGFontFaceUriElement.cpp: Removed unneeded includes.
* svg/SVGForeignObjectElement.cpp: Removed unneeded includes.
(WebCore::SVGForeignObjectElement::parseAttribute): Don't use isSupportedAttribute.
* svg/SVGGElement.cpp: Removed unneeded includes.
(WebCore::SVGGElement::parseAttribute): Don't use isSupportedAttribute.
* svg/SVGGlyphElement.cpp: Removed unneeded includes.
* svg/SVGGlyphRefElement.cpp: Removed unneeded includes.
(WebCore::SVGGlyphRefElement::hasValidGlyphElement): Rewrote to use is&lt;&gt; instead of hasTagName.
(WebCore::SVGGlyphRefElement::parseAttribute): Don't use return value from SVGURIReference::parseAttribute.
* svg/SVGGradientElement.cpp: Removed unneeded includes.
(WebCore::SVGGradientElement::parseAttribute): Don't use isSupportedAttribute.
* svg/SVGGraphicsElement.cpp: Removed unneeded includes.
(WebCore::SVGGraphicsElement::parseAttribute): Don't use isSupportedAttribute.
* svg/SVGImageElement.cpp: Removed unneeded includes.
(WebCore::SVGImageElement::parseAttribute): Don't use isSupportedAttribute.
* svg/SVGLangSpace.cpp: Removed unneeded includes.
(WebCore::SVGLangSpace::parseAttribute): Removed the return value.
* svg/SVGLangSpace.h: Converted functions to static member functions and removed the
return value from parseAttribute.
* svg/SVGLineElement.cpp: Removed unneeded includes.
(WebCore::SVGLineElement::parseAttribute): Don't use isSupportedAttribute.
* svg/SVGLinearGradientElement.cpp: Removed unneeded includes.
(WebCore::SVGLinearGradientElement::parseAttribute): Don't use isSupportedAttribute.
* svg/SVGMPathElement.cpp: Removed unneeded includes.
(WebCore::SVGMPathElement::isSupportedAttribute): Deleted.
(WebCore::SVGMPathElement::parseAttribute): Don't use isSupportedAttribute.
(WebCore::SVGMPathElement::svgAttributeChanged): Don't use isSupportedAttribute.
* svg/SVGMPathElement.h: Removed isSupportedAttribute and made didNotifySubtreeInsertions
private instead of protected.
* svg/SVGMarkerElement.cpp: Removed unneeded includes.
(WebCore::SVGMarkerElement::parseAttribute): Don't use isSupportedAttribute.
* svg/SVGMaskElement.cpp: Removed unneeded includes.
(WebCore::SVGMaskElement::parseAttribute): Don't use isSupportedAttribute.
* svg/SVGPathElement.cpp: Removed unneeded includes.
(WebCore::SVGPathElement::parseAttribute): Don't use isSupportedAttribute.
* svg/SVGPatternElement.cpp: Removed unneeded includes.
(WebCore::SVGPatternElement::parseAttribute): Don't use isSupportedAttribute.
* svg/SVGPolyElement.cpp: Removed unneeded includes.
(WebCore::SVGPolyElement::isSupportedAttribute): Deleted.
(WebCore::SVGPolyElement::parseAttribute): Don't use isSupportedAttribute.
(WebCore::SVGPolyElement::svgAttributeChanged): Don't use isSupportedAttribute.
* svg/SVGPolyElement.h:
* svg/SVGRadialGradientElement.cpp: Removed unneeded includes.
(WebCore::SVGRadialGradientElement::parseAttribute): Don't use isSupportedAttribute.
* svg/SVGRectElement.cpp: Removed unneeded includes.
(WebCore::SVGRectElement::isSupportedAttribute): Deleted.
(WebCore::SVGRectElement::parseAttribute): Don't use isSupportedAttribute.
(WebCore::SVGRectElement::svgAttributeChanged): Don't use isSupportedAttribute.
* svg/SVGRectElement.h:
* svg/SVGSVGElement.cpp: Removed unneeded includes.
(WebCore::SVGSVGElement::parseAttribute): Don't use isSupportedAttribute.
* svg/SVGScriptElement.cpp: Removed unneeded includes.
* svg/SVGStopElement.cpp: Removed unneeded includes.
(WebCore::SVGStopElement::isSupportedAttribute): Deleted.
(WebCore::SVGStopElement::parseAttribute): Don't use isSupportedAttribute.
(WebCore::SVGStopElement::svgAttributeChanged): Don't use isSupportedAttribute.
* svg/SVGStopElement.h: Removed isSupportedAttribute.
* svg/SVGStyleElement.cpp: Removed unneeded includes.
(WebCore::SVGStyleElement::isSupportedAttribute): Deleted.
(WebCore::SVGStyleElement::parseAttribute): Don't use isSupportedAttribute.
* svg/SVGStyleElement.h: Removed isSupportedAttribute.
* svg/SVGSymbolElement.cpp: Removed unneeded includes.
(WebCore::SVGSymbolElement::isSupportedAttribute): Deleted.
(WebCore::SVGSymbolElement::parseAttribute): Don't use isSupportedAttribute.
(WebCore::SVGSymbolElement::svgAttributeChanged): Don't use isSupportedAttribute.
* svg/SVGSymbolElement.h: Removed isSupportedAttribute.
* svg/SVGTRefElement.cpp: Removed unneeded includes.
(WebCore::SVGTRefElement::isSupportedAttribute): Deleted.
(WebCore::SVGTRefElement::parseAttribute): Don't use isSupportedAttribute.
(WebCore::SVGTRefElement::svgAttributeChanged): Don't use isSupportedAttribute.
* svg/SVGTRefElement.h: Removed isSupportedAttribute and made didNotifySubtreeInsertions
private instead of protected.
* svg/SVGTests.cpp: Removed unneeded includes.
(WebCore::SVGTests::parseAttribute): Removed return value.
* svg/SVGTests.h: Removed return value of parseAttribute.
* svg/SVGTextContentElement.cpp: Removed unneeded includes.
(WebCore::SVGTextContentElement::collectStyleForPresentationAttribute): Don't use
isSupportedAttribute. Also removed global to optimize comparing attribute value against
the string &quot;preserve&quot;.
(WebCore::SVGTextContentElement::parseAttribute): Don't use isSupportedAttribute.
(WebCore::SVGTextContentElement::svgAttributeChanged): Don't use isSupportedAttribute.
* svg/SVGTextContentElement.h: Made isSupportedAttribute private instead of protected.
* svg/SVGTextElement.cpp: Removed unneeded includes.
* svg/SVGTextPathElement.cpp: Removed unneeded includes.
(WebCore::SVGTextPathElement::parseAttribute): Don't use isSupportedAttribute.
* svg/SVGTextPositioningElement.cpp: Removed unneeded includes.
(WebCore::SVGTextPositioningElement::isSupportedAttribute): Deleted.
(WebCore::SVGTextPositioningElement::parseAttribute): Don't use isSupportedAttribute.
(WebCore::SVGTextPositioningElement::svgAttributeChanged): Don't use isSupportedAttribute.
* svg/SVGTextPositioningElement.h: Removed isSupportedAttribute and made some functions
private insetad of protected.
* svg/SVGURIReference.cpp: Removed unneeded includes.
(WebCore::SVGURIReference::parseAttribute): Don't use isSupportedAttribute.
* svg/SVGURIReference.h:
(WebCore::SVGURIReference::isExternalURIReference):
* svg/SVGUseElement.cpp: Removed unneeded includes.
(WebCore::SVGUseElement::parseAttribute): Don't use isSupportedAttribute.
* svg/SVGViewElement.h: Removed isSupportedAttribute.
* svg/animation/SVGSMILElement.cpp: Removed unneeded includes.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorerenderingsvgRenderSVGImagecpp">trunk/Source/WebCore/rendering/svg/RenderSVGImage.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGAElementcpp">trunk/Source/WebCore/svg/SVGAElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGAElementh">trunk/Source/WebCore/svg/SVGAElement.h</a></li>
<li><a href="#trunkSourceWebCoresvgSVGAnimateMotionElementcpp">trunk/Source/WebCore/svg/SVGAnimateMotionElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGAnimateMotionElementh">trunk/Source/WebCore/svg/SVGAnimateMotionElement.h</a></li>
<li><a href="#trunkSourceWebCoresvgSVGAnimateTransformElementcpp">trunk/Source/WebCore/svg/SVGAnimateTransformElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGAnimateTransformElementh">trunk/Source/WebCore/svg/SVGAnimateTransformElement.h</a></li>
<li><a href="#trunkSourceWebCoresvgSVGAnimationElementcpp">trunk/Source/WebCore/svg/SVGAnimationElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGAnimationElementh">trunk/Source/WebCore/svg/SVGAnimationElement.h</a></li>
<li><a href="#trunkSourceWebCoresvgSVGCircleElementcpp">trunk/Source/WebCore/svg/SVGCircleElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGCircleElementh">trunk/Source/WebCore/svg/SVGCircleElement.h</a></li>
<li><a href="#trunkSourceWebCoresvgSVGClipPathElementcpp">trunk/Source/WebCore/svg/SVGClipPathElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGClipPathElementh">trunk/Source/WebCore/svg/SVGClipPathElement.h</a></li>
<li><a href="#trunkSourceWebCoresvgSVGComponentTransferFunctionElementcpp">trunk/Source/WebCore/svg/SVGComponentTransferFunctionElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGComponentTransferFunctionElementh">trunk/Source/WebCore/svg/SVGComponentTransferFunctionElement.h</a></li>
<li><a href="#trunkSourceWebCoresvgSVGCursorElementcpp">trunk/Source/WebCore/svg/SVGCursorElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGCursorElementh">trunk/Source/WebCore/svg/SVGCursorElement.h</a></li>
<li><a href="#trunkSourceWebCoresvgSVGElementcpp">trunk/Source/WebCore/svg/SVGElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGEllipseElementcpp">trunk/Source/WebCore/svg/SVGEllipseElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGEllipseElementh">trunk/Source/WebCore/svg/SVGEllipseElement.h</a></li>
<li><a href="#trunkSourceWebCoresvgSVGExternalResourcesRequiredcpp">trunk/Source/WebCore/svg/SVGExternalResourcesRequired.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGExternalResourcesRequiredh">trunk/Source/WebCore/svg/SVGExternalResourcesRequired.h</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFEBlendElementcpp">trunk/Source/WebCore/svg/SVGFEBlendElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFEBlendElementh">trunk/Source/WebCore/svg/SVGFEBlendElement.h</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFEColorMatrixElementcpp">trunk/Source/WebCore/svg/SVGFEColorMatrixElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFEColorMatrixElementh">trunk/Source/WebCore/svg/SVGFEColorMatrixElement.h</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFEComponentTransferElementcpp">trunk/Source/WebCore/svg/SVGFEComponentTransferElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFEComponentTransferElementh">trunk/Source/WebCore/svg/SVGFEComponentTransferElement.h</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFECompositeElementcpp">trunk/Source/WebCore/svg/SVGFECompositeElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFECompositeElementh">trunk/Source/WebCore/svg/SVGFECompositeElement.h</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFEConvolveMatrixElementcpp">trunk/Source/WebCore/svg/SVGFEConvolveMatrixElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFEConvolveMatrixElementh">trunk/Source/WebCore/svg/SVGFEConvolveMatrixElement.h</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFEDiffuseLightingElementcpp">trunk/Source/WebCore/svg/SVGFEDiffuseLightingElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFEDiffuseLightingElementh">trunk/Source/WebCore/svg/SVGFEDiffuseLightingElement.h</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFEDisplacementMapElementcpp">trunk/Source/WebCore/svg/SVGFEDisplacementMapElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFEDisplacementMapElementh">trunk/Source/WebCore/svg/SVGFEDisplacementMapElement.h</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFEDropShadowElementcpp">trunk/Source/WebCore/svg/SVGFEDropShadowElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFEDropShadowElementh">trunk/Source/WebCore/svg/SVGFEDropShadowElement.h</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFEFloodElementcpp">trunk/Source/WebCore/svg/SVGFEFloodElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFEGaussianBlurElementcpp">trunk/Source/WebCore/svg/SVGFEGaussianBlurElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFEGaussianBlurElementh">trunk/Source/WebCore/svg/SVGFEGaussianBlurElement.h</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFEImageElementcpp">trunk/Source/WebCore/svg/SVGFEImageElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFEImageElementh">trunk/Source/WebCore/svg/SVGFEImageElement.h</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFELightElementcpp">trunk/Source/WebCore/svg/SVGFELightElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFELightElementh">trunk/Source/WebCore/svg/SVGFELightElement.h</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFEMergeNodeElementcpp">trunk/Source/WebCore/svg/SVGFEMergeNodeElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFEMergeNodeElementh">trunk/Source/WebCore/svg/SVGFEMergeNodeElement.h</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFEMorphologyElementcpp">trunk/Source/WebCore/svg/SVGFEMorphologyElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFEMorphologyElementh">trunk/Source/WebCore/svg/SVGFEMorphologyElement.h</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFEOffsetElementcpp">trunk/Source/WebCore/svg/SVGFEOffsetElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFEOffsetElementh">trunk/Source/WebCore/svg/SVGFEOffsetElement.h</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFESpecularLightingElementcpp">trunk/Source/WebCore/svg/SVGFESpecularLightingElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFESpecularLightingElementh">trunk/Source/WebCore/svg/SVGFESpecularLightingElement.h</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFETileElementcpp">trunk/Source/WebCore/svg/SVGFETileElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFETileElementh">trunk/Source/WebCore/svg/SVGFETileElement.h</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFETurbulenceElementcpp">trunk/Source/WebCore/svg/SVGFETurbulenceElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFETurbulenceElementh">trunk/Source/WebCore/svg/SVGFETurbulenceElement.h</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFilterElementcpp">trunk/Source/WebCore/svg/SVGFilterElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFilterElementh">trunk/Source/WebCore/svg/SVGFilterElement.h</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFilterPrimitiveStandardAttributescpp">trunk/Source/WebCore/svg/SVGFilterPrimitiveStandardAttributes.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFilterPrimitiveStandardAttributesh">trunk/Source/WebCore/svg/SVGFilterPrimitiveStandardAttributes.h</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFitToViewBoxcpp">trunk/Source/WebCore/svg/SVGFitToViewBox.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFontFaceElementcpp">trunk/Source/WebCore/svg/SVGFontFaceElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGFontFaceUriElementcpp">trunk/Source/WebCore/svg/SVGFontFaceUriElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGForeignObjectElementcpp">trunk/Source/WebCore/svg/SVGForeignObjectElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGForeignObjectElementh">trunk/Source/WebCore/svg/SVGForeignObjectElement.h</a></li>
<li><a href="#trunkSourceWebCoresvgSVGGElementcpp">trunk/Source/WebCore/svg/SVGGElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGGElementh">trunk/Source/WebCore/svg/SVGGElement.h</a></li>
<li><a href="#trunkSourceWebCoresvgSVGGlyphElementcpp">trunk/Source/WebCore/svg/SVGGlyphElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGGlyphRefElementcpp">trunk/Source/WebCore/svg/SVGGlyphRefElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGGradientElementcpp">trunk/Source/WebCore/svg/SVGGradientElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGGradientElementh">trunk/Source/WebCore/svg/SVGGradientElement.h</a></li>
<li><a href="#trunkSourceWebCoresvgSVGGraphicsElementcpp">trunk/Source/WebCore/svg/SVGGraphicsElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGGraphicsElementh">trunk/Source/WebCore/svg/SVGGraphicsElement.h</a></li>
<li><a href="#trunkSourceWebCoresvgSVGImageElementcpp">trunk/Source/WebCore/svg/SVGImageElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGImageElementh">trunk/Source/WebCore/svg/SVGImageElement.h</a></li>
<li><a href="#trunkSourceWebCoresvgSVGLangSpacecpp">trunk/Source/WebCore/svg/SVGLangSpace.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGLangSpaceh">trunk/Source/WebCore/svg/SVGLangSpace.h</a></li>
<li><a href="#trunkSourceWebCoresvgSVGLineElementcpp">trunk/Source/WebCore/svg/SVGLineElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGLineElementh">trunk/Source/WebCore/svg/SVGLineElement.h</a></li>
<li><a href="#trunkSourceWebCoresvgSVGLinearGradientElementcpp">trunk/Source/WebCore/svg/SVGLinearGradientElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGLinearGradientElementh">trunk/Source/WebCore/svg/SVGLinearGradientElement.h</a></li>
<li><a href="#trunkSourceWebCoresvgSVGMPathElementcpp">trunk/Source/WebCore/svg/SVGMPathElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGMPathElementh">trunk/Source/WebCore/svg/SVGMPathElement.h</a></li>
<li><a href="#trunkSourceWebCoresvgSVGMarkerElementcpp">trunk/Source/WebCore/svg/SVGMarkerElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGMarkerElementh">trunk/Source/WebCore/svg/SVGMarkerElement.h</a></li>
<li><a href="#trunkSourceWebCoresvgSVGMaskElementcpp">trunk/Source/WebCore/svg/SVGMaskElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGMaskElementh">trunk/Source/WebCore/svg/SVGMaskElement.h</a></li>
<li><a href="#trunkSourceWebCoresvgSVGPathElementcpp">trunk/Source/WebCore/svg/SVGPathElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGPathElementh">trunk/Source/WebCore/svg/SVGPathElement.h</a></li>
<li><a href="#trunkSourceWebCoresvgSVGPatternElementcpp">trunk/Source/WebCore/svg/SVGPatternElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGPatternElementh">trunk/Source/WebCore/svg/SVGPatternElement.h</a></li>
<li><a href="#trunkSourceWebCoresvgSVGPolyElementcpp">trunk/Source/WebCore/svg/SVGPolyElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGPolyElementh">trunk/Source/WebCore/svg/SVGPolyElement.h</a></li>
<li><a href="#trunkSourceWebCoresvgSVGRadialGradientElementcpp">trunk/Source/WebCore/svg/SVGRadialGradientElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGRadialGradientElementh">trunk/Source/WebCore/svg/SVGRadialGradientElement.h</a></li>
<li><a href="#trunkSourceWebCoresvgSVGRectElementcpp">trunk/Source/WebCore/svg/SVGRectElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGRectElementh">trunk/Source/WebCore/svg/SVGRectElement.h</a></li>
<li><a href="#trunkSourceWebCoresvgSVGSVGElementcpp">trunk/Source/WebCore/svg/SVGSVGElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGScriptElementcpp">trunk/Source/WebCore/svg/SVGScriptElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGStopElementcpp">trunk/Source/WebCore/svg/SVGStopElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGStopElementh">trunk/Source/WebCore/svg/SVGStopElement.h</a></li>
<li><a href="#trunkSourceWebCoresvgSVGStyleElementcpp">trunk/Source/WebCore/svg/SVGStyleElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGStyleElementh">trunk/Source/WebCore/svg/SVGStyleElement.h</a></li>
<li><a href="#trunkSourceWebCoresvgSVGSymbolElementcpp">trunk/Source/WebCore/svg/SVGSymbolElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGSymbolElementh">trunk/Source/WebCore/svg/SVGSymbolElement.h</a></li>
<li><a href="#trunkSourceWebCoresvgSVGTRefElementcpp">trunk/Source/WebCore/svg/SVGTRefElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGTRefElementh">trunk/Source/WebCore/svg/SVGTRefElement.h</a></li>
<li><a href="#trunkSourceWebCoresvgSVGTestscpp">trunk/Source/WebCore/svg/SVGTests.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGTestsh">trunk/Source/WebCore/svg/SVGTests.h</a></li>
<li><a href="#trunkSourceWebCoresvgSVGTextContentElementcpp">trunk/Source/WebCore/svg/SVGTextContentElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGTextContentElementh">trunk/Source/WebCore/svg/SVGTextContentElement.h</a></li>
<li><a href="#trunkSourceWebCoresvgSVGTextElementcpp">trunk/Source/WebCore/svg/SVGTextElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGTextPathElementcpp">trunk/Source/WebCore/svg/SVGTextPathElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGTextPathElementh">trunk/Source/WebCore/svg/SVGTextPathElement.h</a></li>
<li><a href="#trunkSourceWebCoresvgSVGTextPositioningElementcpp">trunk/Source/WebCore/svg/SVGTextPositioningElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGTextPositioningElementh">trunk/Source/WebCore/svg/SVGTextPositioningElement.h</a></li>
<li><a href="#trunkSourceWebCoresvgSVGURIReferencecpp">trunk/Source/WebCore/svg/SVGURIReference.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGURIReferenceh">trunk/Source/WebCore/svg/SVGURIReference.h</a></li>
<li><a href="#trunkSourceWebCoresvgSVGUseElementcpp">trunk/Source/WebCore/svg/SVGUseElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGViewElementh">trunk/Source/WebCore/svg/SVGViewElement.h</a></li>
<li><a href="#trunkSourceWebCoresvganimationSVGSMILElementcpp">trunk/Source/WebCore/svg/animation/SVGSMILElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvganimationSVGSMILElementh">trunk/Source/WebCore/svg/animation/SVGSMILElement.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/ChangeLog        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -1,5 +1,271 @@
</span><span class="cx"> 2015-03-29  Darin Adler  &lt;darin@apple.com&gt;
</span><span class="cx"> 
</span><ins>+        Remove unneeded SVG code, including most isSupportedAttribute functions
+        https://bugs.webkit.org/show_bug.cgi?id=143194
+
+        Reviewed by Antti Koivisto.
+
+        - Removed most implementations of isSupportedAttribute. Others can be removed in
+          future patches. The ones left behind are now all private static member functions.
+          It's dangerous for them to be public because they tend to indicate which attributes
+          are supported at a particular level in the class hierarchy and they are not virtual
+          functions; might want to rethink the function name if we keep any of these long term.
+
+        - Removed unneeded includes, especially of Attr.h and Attribute.h.
+
+        - Changed most parseAttribute and svgAttributeChanged functions so they no longer
+          rely on checking attribute names against a set. Also removed lots of unneeded calls
+          to SVGLangSpace::parseAttribute, which is called by SVGElement::parseAttribute and
+          need not be called by derived classes.
+
+        - Removed return values from parseAttribute functions. Skipping other parseAttribute
+          logic is not an important optimization and makes functions needlessly complex.
+
+        - Moved use of InstanceInvalidationGuard closer to where they are needed. Eventually
+          we may be able to remove many of these.
+
+        - Used auto in a few places where the same type is repeated twice on the same line of
+          code, and auto makes it a bit smaller.
+
+        - Got rid of protected sections in some final classes; doesn't make sense to combine
+          these two. Also moved a few functions from protected to private in other classes.
+
+        - Made a number of functions into static member functions in the base classes such
+          as SVGLangSpace; they were not making any use of the object, and so it was wasteful
+          to compile them as non-static member functions.
+
+        * rendering/svg/RenderSVGImage.cpp: Removed unneeded includes.
+        * svg/SVGAElement.cpp: Removed unneeded includes.
+        (WebCore::SVGAElement::isSupportedAttribute): Deleted.
+        (WebCore::SVGAElement::parseAttribute): Don't use isSupportedAttribute.
+        (WebCore::SVGAElement::svgAttributeChanged): Don't use isSupportedAttribute.
+        * svg/SVGAElement.h: Removed isSupportedAttribute.
+        * svg/SVGAnimateMotionElement.cpp: Removed unneeded includes.
+        (WebCore::SVGAnimateMotionElement::isSupportedAttribute): Deleted.
+        (WebCore::SVGAnimateMotionElement::parseAttribute): Don't use isSupportedAttribute.
+        * svg/SVGAnimateMotionElement.h: Removed isSupportedAttribute.
+        * svg/SVGAnimateTransformElement.cpp:
+        (WebCore::SVGAnimateTransformElement::isSupportedAttribute): Deleted.
+        (WebCore::SVGAnimateTransformElement::parseAttribute): Don't use isSupportedAttribute.
+        * svg/SVGAnimateTransformElement.h: Removed isSupportedAttribute.
+        * svg/SVGAnimationElement.cpp:
+        (WebCore::SVGAnimationElement::parseAttribute): Don't use isSupportedAttribute.
+        * svg/SVGCircleElement.cpp:
+        (WebCore::SVGCircleElement::isSupportedAttribute): Deleted.
+        (WebCore::SVGCircleElement::parseAttribute): Don't use isSupportedAttribute.
+        (WebCore::SVGCircleElement::svgAttributeChanged): Don't use isSupportedAttribute.
+        * svg/SVGCircleElement.h: Removed isSupportedAttribute.
+        * svg/SVGClipPathElement.cpp: Removed unneeded includes.
+        (WebCore::SVGClipPathElement::parseAttribute): Don't use isSupportedAttribute.
+        * svg/SVGComponentTransferFunctionElement.cpp:
+        (WebCore::SVGComponentTransferFunctionElement::parseAttribute): Don't use isSupportedAttribute.
+        * svg/SVGCursorElement.cpp: Removed unneeded includes.
+        (WebCore::SVGCursorElement::parseAttribute): Don't use isSupportedAttribute.
+        (WebCore::SVGCursorElement::svgAttributeChanged): Don't use isSupportedAttribute.
+        * svg/SVGElement.cpp: Removed unneeded includes.
+        * svg/SVGEllipseElement.cpp: Removed unneeded includes.
+        (WebCore::SVGEllipseElement::isSupportedAttribute): Deleted.
+        (WebCore::SVGEllipseElement::parseAttribute): Don't use isSupportedAttribute.
+        (WebCore::SVGEllipseElement::svgAttributeChanged): Don't use isSupportedAttribute.
+        * svg/SVGEllipseElement.h: Removed isSupportedAttribute.
+        * svg/SVGExternalResourcesRequired.cpp: Removed unneeded includes.
+        (WebCore::SVGExternalResourcesRequired::parseAttribute): Don't return a boolean.
+        * svg/SVGExternalResourcesRequired.h: Don't return a boolean.
+        * svg/SVGFEBlendElement.cpp: Removed unneeded includes.
+        (WebCore::SVGFEBlendElement::isSupportedAttribute): Deleted.
+        (WebCore::SVGFEBlendElement::parseAttribute): Don't use isSupportedAttribute.
+        (WebCore::SVGFEBlendElement::svgAttributeChanged): Don't use isSupportedAttribute.
+        * svg/SVGFEBlendElement.h: Removed isSupportedAttribute.
+        * svg/SVGFEColorMatrixElement.cpp: Removed unneeded includes.
+        (WebCore::SVGFEColorMatrixElement::isSupportedAttribute): Deleted.
+        (WebCore::SVGFEColorMatrixElement::parseAttribute): Don't use isSupportedAttribute.
+        (WebCore::SVGFEColorMatrixElement::svgAttributeChanged): Don't use isSupportedAttribute.
+        * svg/SVGFEColorMatrixElement.h: Removed isSupportedAttribute.
+        * svg/SVGFEComponentTransferElement.cpp: Removed unneeded includes.
+        (WebCore::SVGFEComponentTransferElement::isSupportedAttribute): Deleted.
+        (WebCore::SVGFEComponentTransferElement::parseAttribute): Don't use isSupportedAttribute.
+        * svg/SVGFEComponentTransferElement.h: Removed unneeded includes.
+        * svg/SVGFECompositeElement.cpp: Removed unneeded includes.
+        (WebCore::SVGFECompositeElement::isSupportedAttribute): Deleted.
+        (WebCore::SVGFECompositeElement::parseAttribute): Don't use isSupportedAttribute.
+        (WebCore::SVGFECompositeElement::svgAttributeChanged): Don't use isSupportedAttribute.
+        * svg/SVGFECompositeElement.h:
+        * svg/SVGFEConvolveMatrixElement.cpp: Removed unneeded includes.
+        (WebCore::SVGFEConvolveMatrixElement::isSupportedAttribute): Deleted.
+        (WebCore::SVGFEConvolveMatrixElement::parseAttribute): Don't use isSupportedAttribute.
+        (WebCore::SVGFEConvolveMatrixElement::svgAttributeChanged): Don't use isSupportedAttribute.
+        * svg/SVGFEConvolveMatrixElement.h:
+        * svg/SVGFEDiffuseLightingElement.cpp: Removed unneeded includes.
+        (WebCore::SVGFEDiffuseLightingElement::isSupportedAttribute): Deleted.
+        (WebCore::SVGFEDiffuseLightingElement::parseAttribute): Don't use isSupportedAttribute.
+        (WebCore::SVGFEDiffuseLightingElement::svgAttributeChanged): Don't use isSupportedAttribute.
+        * svg/SVGFEDiffuseLightingElement.h:
+        * svg/SVGFEDisplacementMapElement.cpp: Removed unneeded includes.
+        (WebCore::SVGFEDisplacementMapElement::isSupportedAttribute): Deleted.
+        (WebCore::SVGFEDisplacementMapElement::parseAttribute): Don't use isSupportedAttribute.
+        (WebCore::SVGFEDisplacementMapElement::svgAttributeChanged): Don't use isSupportedAttribute.
+        * svg/SVGFEDisplacementMapElement.h:
+        * svg/SVGFEDropShadowElement.cpp: Removed unneeded includes.
+        (WebCore::SVGFEDropShadowElement::isSupportedAttribute): Deleted.
+        (WebCore::SVGFEDropShadowElement::parseAttribute): Don't use isSupportedAttribute.
+        (WebCore::SVGFEDropShadowElement::svgAttributeChanged): Don't use isSupportedAttribute.
+        * svg/SVGFEDropShadowElement.h:
+        * svg/SVGFEFloodElement.cpp: Removed unneeded includes.
+        * svg/SVGFEGaussianBlurElement.cpp: Removed unneeded includes.
+        (WebCore::SVGFEGaussianBlurElement::isSupportedAttribute): Deleted.
+        (WebCore::SVGFEGaussianBlurElement::parseAttribute): Don't use isSupportedAttribute.
+        (WebCore::SVGFEGaussianBlurElement::svgAttributeChanged): Don't use isSupportedAttribute.
+        * svg/SVGFEGaussianBlurElement.h:
+        * svg/SVGFEImageElement.cpp: Removed unneeded includes.
+        (WebCore::SVGFEImageElement::isSupportedAttribute): Deleted.
+        (WebCore::SVGFEImageElement::parseAttribute): Don't use isSupportedAttribute.
+        (WebCore::SVGFEImageElement::svgAttributeChanged): Don't use isSupportedAttribute.
+        * svg/SVGFEImageElement.h:
+        * svg/SVGFELightElement.cpp: Removed unneeded includes.
+        (WebCore::SVGFELightElement::isSupportedAttribute): Deleted.
+        (WebCore::SVGFELightElement::parseAttribute): Don't use isSupportedAttribute.
+        (WebCore::SVGFELightElement::svgAttributeChanged): Don't use isSupportedAttribute.
+        * svg/SVGFELightElement.h:
+        * svg/SVGFEMergeNodeElement.cpp: Removed unneeded includes.
+        (WebCore::SVGFEMergeNodeElement::isSupportedAttribute): Deleted.
+        (WebCore::SVGFEMergeNodeElement::parseAttribute): Don't use isSupportedAttribute.
+        (WebCore::SVGFEMergeNodeElement::svgAttributeChanged): Don't use isSupportedAttribute.
+        * svg/SVGFEMergeNodeElement.h:
+        * svg/SVGFEMorphologyElement.cpp: Removed unneeded includes.
+        (WebCore::SVGFEMorphologyElement::isSupportedAttribute): Deleted.
+        (WebCore::SVGFEMorphologyElement::parseAttribute): Don't use isSupportedAttribute.
+        (WebCore::SVGFEMorphologyElement::svgAttributeChanged): Don't use isSupportedAttribute.
+        * svg/SVGFEMorphologyElement.h:
+        * svg/SVGFEOffsetElement.cpp: Removed unneeded includes.
+        (WebCore::SVGFEOffsetElement::isSupportedAttribute): Deleted.
+        (WebCore::SVGFEOffsetElement::parseAttribute): Don't use isSupportedAttribute.
+        (WebCore::SVGFEOffsetElement::svgAttributeChanged): Don't use isSupportedAttribute.
+        * svg/SVGFEOffsetElement.h:
+        * svg/SVGFESpecularLightingElement.cpp: Removed unneeded includes.
+        (WebCore::SVGFESpecularLightingElement::isSupportedAttribute): Deleted.
+        (WebCore::SVGFESpecularLightingElement::parseAttribute): Don't use isSupportedAttribute.
+        (WebCore::SVGFESpecularLightingElement::svgAttributeChanged): Don't use isSupportedAttribute.
+        * svg/SVGFESpecularLightingElement.h:
+        * svg/SVGFETileElement.cpp: Removed unneeded includes.
+        (WebCore::SVGFETileElement::isSupportedAttribute): Deleted.
+        (WebCore::SVGFETileElement::parseAttribute): Don't use isSupportedAttribute.
+        (WebCore::SVGFETileElement::svgAttributeChanged): Don't use isSupportedAttribute.
+        * svg/SVGFETileElement.h:
+        * svg/SVGFETurbulenceElement.cpp: Removed unneeded includes.
+        (WebCore::SVGFETurbulenceElement::isSupportedAttribute): Deleted.
+        (WebCore::SVGFETurbulenceElement::parseAttribute): Don't use isSupportedAttribute.
+        (WebCore::SVGFETurbulenceElement::svgAttributeChanged): Don't use isSupportedAttribute.
+        * svg/SVGFETurbulenceElement.h:
+        * svg/SVGFilterElement.cpp: Removed unneeded includes.
+        (WebCore::SVGFilterElement::parseAttribute): Don't use isSupportedAttribute.
+        * svg/SVGFilterPrimitiveStandardAttributes.cpp: Removed unneeded includes.
+        (WebCore::SVGFilterPrimitiveStandardAttributes::parseAttribute): Don't use isSupportedAttribute.
+        * svg/SVGFilterPrimitiveStandardAttributes.h: Removed isSupportedAttribute and also moved a
+        couple functions out of the class definition.
+        * svg/SVGFitToViewBox.cpp: Removed unneeded includes.
+        * svg/SVGFontFaceElement.cpp: Removed unneeded includes.
+        * svg/SVGFontFaceUriElement.cpp: Removed unneeded includes.
+        * svg/SVGForeignObjectElement.cpp: Removed unneeded includes.
+        (WebCore::SVGForeignObjectElement::parseAttribute): Don't use isSupportedAttribute.
+        * svg/SVGGElement.cpp: Removed unneeded includes.
+        (WebCore::SVGGElement::parseAttribute): Don't use isSupportedAttribute.
+        * svg/SVGGlyphElement.cpp: Removed unneeded includes.
+        * svg/SVGGlyphRefElement.cpp: Removed unneeded includes.
+        (WebCore::SVGGlyphRefElement::hasValidGlyphElement): Rewrote to use is&lt;&gt; instead of hasTagName.
+        (WebCore::SVGGlyphRefElement::parseAttribute): Don't use return value from SVGURIReference::parseAttribute.
+        * svg/SVGGradientElement.cpp: Removed unneeded includes.
+        (WebCore::SVGGradientElement::parseAttribute): Don't use isSupportedAttribute.
+        * svg/SVGGraphicsElement.cpp: Removed unneeded includes.
+        (WebCore::SVGGraphicsElement::parseAttribute): Don't use isSupportedAttribute.
+        * svg/SVGImageElement.cpp: Removed unneeded includes.
+        (WebCore::SVGImageElement::parseAttribute): Don't use isSupportedAttribute.
+        * svg/SVGLangSpace.cpp: Removed unneeded includes.
+        (WebCore::SVGLangSpace::parseAttribute): Removed the return value.
+        * svg/SVGLangSpace.h: Converted functions to static member functions and removed the
+        return value from parseAttribute.
+        * svg/SVGLineElement.cpp: Removed unneeded includes.
+        (WebCore::SVGLineElement::parseAttribute): Don't use isSupportedAttribute.
+        * svg/SVGLinearGradientElement.cpp: Removed unneeded includes.
+        (WebCore::SVGLinearGradientElement::parseAttribute): Don't use isSupportedAttribute.
+        * svg/SVGMPathElement.cpp: Removed unneeded includes.
+        (WebCore::SVGMPathElement::isSupportedAttribute): Deleted.
+        (WebCore::SVGMPathElement::parseAttribute): Don't use isSupportedAttribute.
+        (WebCore::SVGMPathElement::svgAttributeChanged): Don't use isSupportedAttribute.
+        * svg/SVGMPathElement.h: Removed isSupportedAttribute and made didNotifySubtreeInsertions
+        private instead of protected.
+        * svg/SVGMarkerElement.cpp: Removed unneeded includes.
+        (WebCore::SVGMarkerElement::parseAttribute): Don't use isSupportedAttribute.
+        * svg/SVGMaskElement.cpp: Removed unneeded includes.
+        (WebCore::SVGMaskElement::parseAttribute): Don't use isSupportedAttribute.
+        * svg/SVGPathElement.cpp: Removed unneeded includes.
+        (WebCore::SVGPathElement::parseAttribute): Don't use isSupportedAttribute.
+        * svg/SVGPatternElement.cpp: Removed unneeded includes.
+        (WebCore::SVGPatternElement::parseAttribute): Don't use isSupportedAttribute.
+        * svg/SVGPolyElement.cpp: Removed unneeded includes.
+        (WebCore::SVGPolyElement::isSupportedAttribute): Deleted.
+        (WebCore::SVGPolyElement::parseAttribute): Don't use isSupportedAttribute.
+        (WebCore::SVGPolyElement::svgAttributeChanged): Don't use isSupportedAttribute.
+        * svg/SVGPolyElement.h:
+        * svg/SVGRadialGradientElement.cpp: Removed unneeded includes.
+        (WebCore::SVGRadialGradientElement::parseAttribute): Don't use isSupportedAttribute.
+        * svg/SVGRectElement.cpp: Removed unneeded includes.
+        (WebCore::SVGRectElement::isSupportedAttribute): Deleted.
+        (WebCore::SVGRectElement::parseAttribute): Don't use isSupportedAttribute.
+        (WebCore::SVGRectElement::svgAttributeChanged): Don't use isSupportedAttribute.
+        * svg/SVGRectElement.h:
+        * svg/SVGSVGElement.cpp: Removed unneeded includes.
+        (WebCore::SVGSVGElement::parseAttribute): Don't use isSupportedAttribute.
+        * svg/SVGScriptElement.cpp: Removed unneeded includes.
+        * svg/SVGStopElement.cpp: Removed unneeded includes.
+        (WebCore::SVGStopElement::isSupportedAttribute): Deleted.
+        (WebCore::SVGStopElement::parseAttribute): Don't use isSupportedAttribute.
+        (WebCore::SVGStopElement::svgAttributeChanged): Don't use isSupportedAttribute.
+        * svg/SVGStopElement.h: Removed isSupportedAttribute.
+        * svg/SVGStyleElement.cpp: Removed unneeded includes.
+        (WebCore::SVGStyleElement::isSupportedAttribute): Deleted.
+        (WebCore::SVGStyleElement::parseAttribute): Don't use isSupportedAttribute.
+        * svg/SVGStyleElement.h: Removed isSupportedAttribute.
+        * svg/SVGSymbolElement.cpp: Removed unneeded includes.
+        (WebCore::SVGSymbolElement::isSupportedAttribute): Deleted.
+        (WebCore::SVGSymbolElement::parseAttribute): Don't use isSupportedAttribute.
+        (WebCore::SVGSymbolElement::svgAttributeChanged): Don't use isSupportedAttribute.
+        * svg/SVGSymbolElement.h: Removed isSupportedAttribute.
+        * svg/SVGTRefElement.cpp: Removed unneeded includes.
+        (WebCore::SVGTRefElement::isSupportedAttribute): Deleted.
+        (WebCore::SVGTRefElement::parseAttribute): Don't use isSupportedAttribute.
+        (WebCore::SVGTRefElement::svgAttributeChanged): Don't use isSupportedAttribute.
+        * svg/SVGTRefElement.h: Removed isSupportedAttribute and made didNotifySubtreeInsertions
+        private instead of protected.
+        * svg/SVGTests.cpp: Removed unneeded includes.
+        (WebCore::SVGTests::parseAttribute): Removed return value.
+        * svg/SVGTests.h: Removed return value of parseAttribute.
+        * svg/SVGTextContentElement.cpp: Removed unneeded includes.
+        (WebCore::SVGTextContentElement::collectStyleForPresentationAttribute): Don't use
+        isSupportedAttribute. Also removed global to optimize comparing attribute value against
+        the string &quot;preserve&quot;.
+        (WebCore::SVGTextContentElement::parseAttribute): Don't use isSupportedAttribute.
+        (WebCore::SVGTextContentElement::svgAttributeChanged): Don't use isSupportedAttribute.
+        * svg/SVGTextContentElement.h: Made isSupportedAttribute private instead of protected.
+        * svg/SVGTextElement.cpp: Removed unneeded includes.
+        * svg/SVGTextPathElement.cpp: Removed unneeded includes.
+        (WebCore::SVGTextPathElement::parseAttribute): Don't use isSupportedAttribute.
+        * svg/SVGTextPositioningElement.cpp: Removed unneeded includes.
+        (WebCore::SVGTextPositioningElement::isSupportedAttribute): Deleted.
+        (WebCore::SVGTextPositioningElement::parseAttribute): Don't use isSupportedAttribute.
+        (WebCore::SVGTextPositioningElement::svgAttributeChanged): Don't use isSupportedAttribute.
+        * svg/SVGTextPositioningElement.h: Removed isSupportedAttribute and made some functions
+        private insetad of protected.
+        * svg/SVGURIReference.cpp: Removed unneeded includes.
+        (WebCore::SVGURIReference::parseAttribute): Don't use isSupportedAttribute.
+        * svg/SVGURIReference.h:
+        (WebCore::SVGURIReference::isExternalURIReference):
+        * svg/SVGUseElement.cpp: Removed unneeded includes.
+        (WebCore::SVGUseElement::parseAttribute): Don't use isSupportedAttribute.
+        * svg/SVGViewElement.h: Removed isSupportedAttribute.
+        * svg/animation/SVGSMILElement.cpp: Removed unneeded includes.
+
+2015-03-29  Darin Adler  &lt;darin@apple.com&gt;
+
</ins><span class="cx">         Remove unneeded includes of &quot;Attribute.h&quot;
</span><span class="cx">         https://bugs.webkit.org/show_bug.cgi?id=143195
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingsvgRenderSVGImagecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/svg/RenderSVGImage.cpp (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/svg/RenderSVGImage.cpp        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGImage.cpp        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -26,7 +26,6 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;RenderSVGImage.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;Attr.h&quot;
</del><span class="cx"> #include &quot;FloatQuad.h&quot;
</span><span class="cx"> #include &quot;GraphicsContext.h&quot;
</span><span class="cx"> #include &quot;LayoutRepainter.h&quot;
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGAElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGAElement.cpp (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGAElement.cpp        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGAElement.cpp        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -23,8 +23,6 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;SVGAElement.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;Attr.h&quot;
-#include &quot;Attribute.h&quot;
</del><span class="cx"> #include &quot;Document.h&quot;
</span><span class="cx"> #include &quot;EventHandler.h&quot;
</span><span class="cx"> #include &quot;EventNames.h&quot;
</span><span class="lines">@@ -43,7 +41,6 @@
</span><span class="cx"> #include &quot;SVGNames.h&quot;
</span><span class="cx"> #include &quot;SVGSMILElement.h&quot;
</span><span class="cx"> #include &quot;XLinkNames.h&quot;
</span><del>-#include &lt;wtf/NeverDestroyed.h&gt;
</del><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -82,57 +79,30 @@
</span><span class="cx">     return SVGElement::title();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool SVGAElement::isSupportedAttribute(const QualifiedName&amp; attrName)
-{
-    static NeverDestroyed&lt;HashSet&lt;QualifiedName&gt;&gt; supportedAttributes;
-    if (supportedAttributes.get().isEmpty()) {
-        SVGURIReference::addSupportedAttributes(supportedAttributes);
-        SVGLangSpace::addSupportedAttributes(supportedAttributes);
-        SVGExternalResourcesRequired::addSupportedAttributes(supportedAttributes);
-        supportedAttributes.get().add(SVGNames::targetAttr);
-    }
-    return supportedAttributes.get().contains&lt;SVGAttributeHashTranslator&gt;(attrName);
-}
-
</del><span class="cx"> void SVGAElement::parseAttribute(const QualifiedName&amp; name, const AtomicString&amp; value)
</span><span class="cx"> {
</span><del>-    if (!isSupportedAttribute(name)) {
-        SVGGraphicsElement::parseAttribute(name, value);
-        return;
-    }
-
</del><span class="cx">     if (name == SVGNames::targetAttr) {
</span><span class="cx">         setSVGTargetBaseValue(value);
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (SVGURIReference::parseAttribute(name, value))
-        return;
-    if (SVGLangSpace::parseAttribute(name, value))
-        return;
-    if (SVGExternalResourcesRequired::parseAttribute(name, value))
-        return;
-
-    ASSERT_NOT_REACHED();
</del><ins>+    SVGGraphicsElement::parseAttribute(name, value);
+    SVGURIReference::parseAttribute(name, value);
+    SVGExternalResourcesRequired::parseAttribute(name, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void SVGAElement::svgAttributeChanged(const QualifiedName&amp; attrName)
</span><span class="cx"> {
</span><del>-    if (!isSupportedAttribute(attrName)) {
-        SVGGraphicsElement::svgAttributeChanged(attrName);
-        return;
-    }
-
-    InstanceInvalidationGuard guard(*this);
-
-    // Unlike other SVG*Element classes, SVGAElement only listens to SVGURIReference changes
-    // as none of the other properties changes the linking behaviour for our &lt;a&gt; element.
</del><span class="cx">     if (SVGURIReference::isKnownAttribute(attrName)) {
</span><span class="cx">         bool wasLink = isLink();
</span><span class="cx">         setIsLink(!href().isNull() &amp;&amp; !shouldProhibitLinks(this));
</span><del>-        if (wasLink != isLink())
</del><ins>+        if (wasLink != isLink()) {
+            InstanceInvalidationGuard guard(*this);
</ins><span class="cx">             setNeedsStyleRecalc();
</span><ins>+        }
</ins><span class="cx">     }
</span><ins>+
+    SVGGraphicsElement::svgAttributeChanged(attrName);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> RenderPtr&lt;RenderElement&gt; SVGAElement::createElementRenderer(Ref&lt;RenderStyle&gt;&amp;&amp; style)
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGAElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGAElement.h (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGAElement.h        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGAElement.h        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -43,7 +43,6 @@
</span><span class="cx">     virtual String title() const override;
</span><span class="cx">     virtual String target() const override { return svgTarget(); }
</span><span class="cx"> 
</span><del>-    bool isSupportedAttribute(const QualifiedName&amp;);
</del><span class="cx">     virtual void parseAttribute(const QualifiedName&amp;, const AtomicString&amp;) override;
</span><span class="cx">     virtual void svgAttributeChanged(const QualifiedName&amp;) override;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGAnimateMotionElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGAnimateMotionElement.cpp (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGAnimateMotionElement.cpp        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGAnimateMotionElement.cpp        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -23,9 +23,7 @@
</span><span class="cx"> #include &quot;SVGAnimateMotionElement.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #include &quot;AffineTransform.h&quot;
</span><del>-#include &quot;Attribute.h&quot;
</del><span class="cx"> #include &quot;ElementIterator.h&quot;
</span><del>-#include &quot;RenderObject.h&quot;
</del><span class="cx"> #include &quot;RenderSVGResource.h&quot;
</span><span class="cx"> #include &quot;SVGImageElement.h&quot;
</span><span class="cx"> #include &quot;SVGMPathElement.h&quot;
</span><span class="lines">@@ -36,7 +34,6 @@
</span><span class="cx"> #include &quot;SVGPathUtilities.h&quot;
</span><span class="cx"> #include &quot;SVGTransformList.h&quot;
</span><span class="cx"> #include &lt;wtf/MathExtras.h&gt;
</span><del>-#include &lt;wtf/NeverDestroyed.h&gt;
</del><span class="cx"> #include &lt;wtf/StdLibExtras.h&gt;
</span><span class="cx"> #include &lt;wtf/text/StringView.h&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -96,21 +93,8 @@
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool SVGAnimateMotionElement::isSupportedAttribute(const QualifiedName&amp; attrName)
-{
-    static NeverDestroyed&lt;HashSet&lt;QualifiedName&gt;&gt; supportedAttributes;
-    if (supportedAttributes.get().isEmpty())
-        supportedAttributes.get().add(SVGNames::pathAttr);
-    return supportedAttributes.get().contains&lt;SVGAttributeHashTranslator&gt;(attrName);
-}
-
</del><span class="cx"> void SVGAnimateMotionElement::parseAttribute(const QualifiedName&amp; name, const AtomicString&amp; value)
</span><span class="cx"> {
</span><del>-    if (!isSupportedAttribute(name)) {
-        SVGAnimationElement::parseAttribute(name, value);
-        return;
-    }
-
</del><span class="cx">     if (name == SVGNames::pathAttr) {
</span><span class="cx">         m_path = Path();
</span><span class="cx">         buildPathFromString(value, m_path);
</span><span class="lines">@@ -118,7 +102,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    ASSERT_NOT_REACHED();
</del><ins>+    SVGAnimationElement::parseAttribute(name, value);
</ins><span class="cx"> }
</span><span class="cx">     
</span><span class="cx"> SVGAnimateMotionElement::RotateMode SVGAnimateMotionElement::rotateMode() const
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGAnimateMotionElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGAnimateMotionElement.h (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGAnimateMotionElement.h        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGAnimateMotionElement.h        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -38,7 +38,6 @@
</span><span class="cx">     virtual bool hasValidAttributeType() override;
</span><span class="cx">     virtual bool hasValidAttributeName() override;
</span><span class="cx"> 
</span><del>-    bool isSupportedAttribute(const QualifiedName&amp;);
</del><span class="cx">     virtual void parseAttribute(const QualifiedName&amp;, const AtomicString&amp;) override;
</span><span class="cx"> 
</span><span class="cx">     virtual void resetAnimatedType() override;
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGAnimateTransformElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGAnimateTransformElement.cpp (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGAnimateTransformElement.cpp        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGAnimateTransformElement.cpp        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -23,10 +23,8 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;SVGAnimateTransformElement.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;Attribute.h&quot;
</del><span class="cx"> #include &quot;SVGNames.h&quot;
</span><span class="cx"> #include &quot;SVGTransformable.h&quot;
</span><del>-#include &lt;wtf/NeverDestroyed.h&gt;
</del><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -54,21 +52,8 @@
</span><span class="cx">     return m_animatedPropertyType == AnimatedTransformList;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool SVGAnimateTransformElement::isSupportedAttribute(const QualifiedName&amp; attrName)
-{
-    static NeverDestroyed&lt;HashSet&lt;QualifiedName&gt;&gt; supportedAttributes;
-    if (supportedAttributes.get().isEmpty())
-        supportedAttributes.get().add(SVGNames::typeAttr);
-    return supportedAttributes.get().contains&lt;SVGAttributeHashTranslator&gt;(attrName);
-}
-
</del><span class="cx"> void SVGAnimateTransformElement::parseAttribute(const QualifiedName&amp; name, const AtomicString&amp; value)
</span><span class="cx"> {
</span><del>-    if (!isSupportedAttribute(name)) {
-        SVGAnimateElementBase::parseAttribute(name, value);
-        return;
-    }
-
</del><span class="cx">     if (name == SVGNames::typeAttr) {
</span><span class="cx">         m_type = SVGTransformable::parseTransformType(value);
</span><span class="cx">         if (m_type == SVGTransform::SVG_TRANSFORM_MATRIX)
</span><span class="lines">@@ -76,7 +61,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    ASSERT_NOT_REACHED();
</del><ins>+    SVGAnimateElementBase::parseAttribute(name, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGAnimateTransformElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGAnimateTransformElement.h (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGAnimateTransformElement.h        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGAnimateTransformElement.h        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -40,8 +40,6 @@
</span><span class="cx">     SVGAnimateTransformElement(const QualifiedName&amp;, Document&amp;);
</span><span class="cx">     
</span><span class="cx">     virtual bool hasValidAttributeType() override;
</span><del>-
-    bool isSupportedAttribute(const QualifiedName&amp;);
</del><span class="cx">     virtual void parseAttribute(const QualifiedName&amp;, const AtomicString&amp;) override;
</span><span class="cx"> 
</span><span class="cx">     SVGTransform::SVGTransformType m_type;
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGAnimationElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGAnimationElement.cpp (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGAnimationElement.cpp        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGAnimationElement.cpp        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -26,7 +26,6 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;SVGAnimationElement.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;Attribute.h&quot;
</del><span class="cx"> #include &quot;CSSComputedStyleDeclaration.h&quot;
</span><span class="cx"> #include &quot;CSSParser.h&quot;
</span><span class="cx"> #include &quot;CSSPropertyNames.h&quot;
</span><span class="lines">@@ -163,11 +162,6 @@
</span><span class="cx"> 
</span><span class="cx"> void SVGAnimationElement::parseAttribute(const QualifiedName&amp; name, const AtomicString&amp; value)
</span><span class="cx"> {
</span><del>-    if (!isSupportedAttribute(name)) {
-        SVGSMILElement::parseAttribute(name, value);
-        return;
-    }
-
</del><span class="cx">     if (name == SVGNames::valuesAttr) {
</span><span class="cx">         // Per the SMIL specification, leading and trailing white space,
</span><span class="cx">         // and white space before and after semicolon separators, is allowed and will be ignored.
</span><span class="lines">@@ -214,12 +208,9 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (SVGTests::parseAttribute(name, value))
-        return;
-    if (SVGExternalResourcesRequired::parseAttribute(name, value))
-        return;
-
-    ASSERT_NOT_REACHED();
</del><ins>+    SVGSMILElement::parseAttribute(name, value);
+    SVGTests::parseAttribute(name, value);
+    SVGExternalResourcesRequired::parseAttribute(name, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void SVGAnimationElement::svgAttributeChanged(const QualifiedName&amp; attrName)
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGAnimationElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGAnimationElement.h (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGAnimationElement.h        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGAnimationElement.h        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -169,7 +169,7 @@
</span><span class="cx">     void computeCSSPropertyValue(SVGElement*, CSSPropertyID, String&amp; value);
</span><span class="cx">     virtual void determinePropertyValueTypes(const String&amp; from, const String&amp; to);
</span><span class="cx"> 
</span><del>-    bool isSupportedAttribute(const QualifiedName&amp;);
</del><ins>+    static bool isSupportedAttribute(const QualifiedName&amp;);
</ins><span class="cx">     virtual void parseAttribute(const QualifiedName&amp;, const AtomicString&amp;) override;
</span><span class="cx">     virtual void svgAttributeChanged(const QualifiedName&amp;) override;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGCircleElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGCircleElement.cpp (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGCircleElement.cpp        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGCircleElement.cpp        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -21,7 +21,6 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;SVGCircleElement.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;Attribute.h&quot;
</del><span class="cx"> #include &quot;ExceptionCode.h&quot;
</span><span class="cx"> #include &quot;FloatPoint.h&quot;
</span><span class="cx"> #include &quot;RenderSVGEllipse.h&quot;
</span><span class="lines">@@ -30,7 +29,6 @@
</span><span class="cx"> #include &quot;SVGException.h&quot;
</span><span class="cx"> #include &quot;SVGLength.h&quot;
</span><span class="cx"> #include &quot;SVGNames.h&quot;
</span><del>-#include &lt;wtf/NeverDestroyed.h&gt;
</del><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -63,51 +61,29 @@
</span><span class="cx">     return adoptRef(*new SVGCircleElement(tagName, document));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool SVGCircleElement::isSupportedAttribute(const QualifiedName&amp; attrName)
-{
-    static NeverDestroyed&lt;HashSet&lt;QualifiedName&gt;&gt; supportedAttributes;
-    if (supportedAttributes.get().isEmpty()) {
-        SVGLangSpace::addSupportedAttributes(supportedAttributes);
-        SVGExternalResourcesRequired::addSupportedAttributes(supportedAttributes);
-        supportedAttributes.get().add(SVGNames::cxAttr);
-        supportedAttributes.get().add(SVGNames::cyAttr);
-        supportedAttributes.get().add(SVGNames::rAttr);
-    }
-    return supportedAttributes.get().contains&lt;SVGAttributeHashTranslator&gt;(attrName);
-}
-
</del><span class="cx"> void SVGCircleElement::parseAttribute(const QualifiedName&amp; name, const AtomicString&amp; value)
</span><span class="cx"> {
</span><span class="cx">     SVGParsingError parseError = NoError;
</span><span class="cx"> 
</span><del>-    if (!isSupportedAttribute(name))
-        SVGGraphicsElement::parseAttribute(name, value);
-    else if (name == SVGNames::cxAttr)
</del><ins>+    if (name == SVGNames::cxAttr)
</ins><span class="cx">         setCxBaseValue(SVGLength::construct(LengthModeWidth, value, parseError));
</span><span class="cx">     else if (name == SVGNames::cyAttr)
</span><span class="cx">         setCyBaseValue(SVGLength::construct(LengthModeHeight, value, parseError));
</span><span class="cx">     else if (name == SVGNames::rAttr)
</span><span class="cx">         setRBaseValue(SVGLength::construct(LengthModeOther, value, parseError, ForbidNegativeLengths));
</span><del>-    else if (SVGLangSpace::parseAttribute(name, value)
-             || SVGExternalResourcesRequired::parseAttribute(name, value)) {
-    } else
-        ASSERT_NOT_REACHED();
</del><span class="cx"> 
</span><span class="cx">     reportAttributeParsingError(parseError, name, value);
</span><ins>+
+    SVGGraphicsElement::parseAttribute(name, value);
+    SVGExternalResourcesRequired::parseAttribute(name, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void SVGCircleElement::svgAttributeChanged(const QualifiedName&amp; attrName)
</span><span class="cx"> {
</span><del>-    if (!isSupportedAttribute(attrName)) {
-        SVGGraphicsElement::svgAttributeChanged(attrName);
-        return;
-    }
</del><ins>+    SVGGraphicsElement::svgAttributeChanged(attrName);
</ins><span class="cx"> 
</span><del>-    InstanceInvalidationGuard guard(*this);
-
-    if (attrName == SVGNames::cxAttr
-        || attrName == SVGNames::cyAttr
-        || attrName == SVGNames::rAttr) {
</del><ins>+    if (attrName == SVGNames::cxAttr || attrName == SVGNames::cyAttr || attrName == SVGNames::rAttr) {
+        InstanceInvalidationGuard guard(*this);
</ins><span class="cx">         invalidateSVGPresentationAttributeStyle();
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="lines">@@ -117,11 +93,9 @@
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     if (SVGLangSpace::isKnownAttribute(attrName) || SVGExternalResourcesRequired::isKnownAttribute(attrName)) {
</span><ins>+        InstanceInvalidationGuard guard(*this);
</ins><span class="cx">         RenderSVGResource::markForLayoutAndParentResourceInvalidation(*renderer);
</span><del>-        return;
</del><span class="cx">     }
</span><del>-
-    ASSERT_NOT_REACHED();
</del><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> RenderPtr&lt;RenderElement&gt; SVGCircleElement::createElementRenderer(Ref&lt;RenderStyle&gt;&amp;&amp; style)
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGCircleElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGCircleElement.h (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGCircleElement.h        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGCircleElement.h        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -38,7 +38,6 @@
</span><span class="cx"> 
</span><span class="cx">     virtual bool isValid() const override { return SVGTests::isValid(); }
</span><span class="cx"> 
</span><del>-    bool isSupportedAttribute(const QualifiedName&amp;);
</del><span class="cx">     virtual void parseAttribute(const QualifiedName&amp;, const AtomicString&amp;) override;
</span><span class="cx">     virtual void svgAttributeChanged(const QualifiedName&amp;) override;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGClipPathElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGClipPathElement.cpp (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGClipPathElement.cpp        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGClipPathElement.cpp        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -22,7 +22,6 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;SVGClipPathElement.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;Attribute.h&quot;
</del><span class="cx"> #include &quot;Document.h&quot;
</span><span class="cx"> #include &quot;RenderSVGResourceClipper.h&quot;
</span><span class="cx"> #include &quot;SVGNames.h&quot;
</span><span class="lines">@@ -68,24 +67,15 @@
</span><span class="cx"> 
</span><span class="cx"> void SVGClipPathElement::parseAttribute(const QualifiedName&amp; name, const AtomicString&amp; value)
</span><span class="cx"> {
</span><del>-    if (!isSupportedAttribute(name)) {
-        SVGGraphicsElement::parseAttribute(name, value);
-        return;
-    }
-
</del><span class="cx">     if (name == SVGNames::clipPathUnitsAttr) {
</span><del>-        SVGUnitTypes::SVGUnitType propertyValue = SVGPropertyTraits&lt;SVGUnitTypes::SVGUnitType&gt;::fromString(value);
</del><ins>+        auto propertyValue = SVGPropertyTraits&lt;SVGUnitTypes::SVGUnitType&gt;::fromString(value);
</ins><span class="cx">         if (propertyValue &gt; 0)
</span><span class="cx">             setClipPathUnitsBaseValue(propertyValue);
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (SVGLangSpace::parseAttribute(name, value))
-        return;
-    if (SVGExternalResourcesRequired::parseAttribute(name, value))
-        return;
-
-    ASSERT_NOT_REACHED();
</del><ins>+    SVGGraphicsElement::parseAttribute(name, value);
+    SVGExternalResourcesRequired::parseAttribute(name, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void SVGClipPathElement::svgAttributeChanged(const QualifiedName&amp; attrName)
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGClipPathElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGClipPathElement.h (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGClipPathElement.h        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGClipPathElement.h        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -43,7 +43,7 @@
</span><span class="cx">     virtual bool supportsFocus() const override { return false; }
</span><span class="cx">     virtual bool needsPendingResourceHandling() const override { return false; }
</span><span class="cx"> 
</span><del>-    bool isSupportedAttribute(const QualifiedName&amp;);
</del><ins>+    static bool isSupportedAttribute(const QualifiedName&amp;);
</ins><span class="cx">     virtual void parseAttribute(const QualifiedName&amp;, const AtomicString&amp;) override;
</span><span class="cx">     virtual void svgAttributeChanged(const QualifiedName&amp;) override;
</span><span class="cx">     virtual void childrenChanged(const ChildChange&amp;) override;
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGComponentTransferFunctionElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGComponentTransferFunctionElement.cpp (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGComponentTransferFunctionElement.cpp        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGComponentTransferFunctionElement.cpp        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -21,7 +21,6 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;SVGComponentTransferFunctionElement.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;Attribute.h&quot;
</del><span class="cx"> #include &quot;SVGFEComponentTransferElement.h&quot;
</span><span class="cx"> #include &quot;SVGNames.h&quot;
</span><span class="cx"> #include &quot;SVGNumberList.h&quot;
</span><span class="lines">@@ -75,11 +74,6 @@
</span><span class="cx"> 
</span><span class="cx"> void SVGComponentTransferFunctionElement::parseAttribute(const QualifiedName&amp; name, const AtomicString&amp; value)
</span><span class="cx"> {
</span><del>-    if (!isSupportedAttribute(name)) {
-        SVGElement::parseAttribute(name, value);
-        return;
-    }
-
</del><span class="cx">     if (name == SVGNames::typeAttr) {
</span><span class="cx">         ComponentTransferType propertyValue = SVGPropertyTraits&lt;ComponentTransferType&gt;::fromString(value);
</span><span class="cx">         if (propertyValue &gt; 0)
</span><span class="lines">@@ -120,7 +114,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    ASSERT_NOT_REACHED();
</del><ins>+    SVGElement::parseAttribute(name, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void SVGComponentTransferFunctionElement::svgAttributeChanged(const QualifiedName&amp; attrName)
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGComponentTransferFunctionElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGComponentTransferFunctionElement.h (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGComponentTransferFunctionElement.h        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGComponentTransferFunctionElement.h        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -76,13 +76,14 @@
</span><span class="cx"> protected:
</span><span class="cx">     SVGComponentTransferFunctionElement(const QualifiedName&amp;, Document&amp;);
</span><span class="cx"> 
</span><del>-    bool isSupportedAttribute(const QualifiedName&amp;);
</del><span class="cx">     virtual void parseAttribute(const QualifiedName&amp;, const AtomicString&amp;) override;
</span><span class="cx">     virtual void svgAttributeChanged(const QualifiedName&amp;) override;
</span><span class="cx"> 
</span><span class="cx">     virtual bool rendererIsNeeded(const RenderStyle&amp;) override { return false; }
</span><span class="cx">     
</span><span class="cx"> private:
</span><ins>+    static bool isSupportedAttribute(const QualifiedName&amp;);
+
</ins><span class="cx">     BEGIN_DECLARE_ANIMATED_PROPERTIES(SVGComponentTransferFunctionElement)
</span><span class="cx">         DECLARE_ANIMATED_ENUMERATION(Type, type, ComponentTransferType)
</span><span class="cx">         DECLARE_ANIMATED_NUMBER_LIST(TableValues, tableValues)
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGCursorElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGCursorElement.cpp (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGCursorElement.cpp        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGCursorElement.cpp        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -21,7 +21,6 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;SVGCursorElement.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;Attr.h&quot;
</del><span class="cx"> #include &quot;Document.h&quot;
</span><span class="cx"> #include &quot;SVGNames.h&quot;
</span><span class="cx"> #include &quot;XLinkNames.h&quot;
</span><span class="lines">@@ -81,19 +80,17 @@
</span><span class="cx"> {
</span><span class="cx">     SVGParsingError parseError = NoError;
</span><span class="cx"> 
</span><del>-    if (!isSupportedAttribute(name))
-        SVGElement::parseAttribute(name, value);
-    else if (name == SVGNames::xAttr)
</del><ins>+    if (name == SVGNames::xAttr)
</ins><span class="cx">         setXBaseValue(SVGLength::construct(LengthModeWidth, value, parseError));
</span><span class="cx">     else if (name == SVGNames::yAttr)
</span><span class="cx">         setYBaseValue(SVGLength::construct(LengthModeHeight, value, parseError));
</span><del>-    else if (SVGTests::parseAttribute(name, value)
-             || SVGExternalResourcesRequired::parseAttribute(name, value)
-             || SVGURIReference::parseAttribute(name, value)) {
-    } else
-        ASSERT_NOT_REACHED();
-    
</del><ins>+
</ins><span class="cx">     reportAttributeParsingError(parseError, name, value);
</span><ins>+
+    SVGElement::parseAttribute(name, value);
+    SVGTests::parseAttribute(name, value);
+    SVGExternalResourcesRequired::parseAttribute(name, value);
+    SVGURIReference::parseAttribute(name, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void SVGCursorElement::addClient(SVGElement* element)
</span><span class="lines">@@ -121,13 +118,8 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     InstanceInvalidationGuard guard(*this);
</span><del>-
-    // Any change of a cursor specific attribute triggers this recalc.
-    HashSet&lt;SVGElement*&gt;::const_iterator it = m_clients.begin();
-    HashSet&lt;SVGElement*&gt;::const_iterator end = m_clients.end();
-
-    for (; it != end; ++it)
-        (*it)-&gt;setNeedsStyleRecalc();
</del><ins>+    for (auto&amp; client : m_clients)
+        client-&gt;setNeedsStyleRecalc();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void SVGCursorElement::addSubresourceAttributeURLs(ListHashSet&lt;URL&gt;&amp; urls) const
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGCursorElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGCursorElement.h (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGCursorElement.h        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGCursorElement.h        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -49,7 +49,7 @@
</span><span class="cx"> 
</span><span class="cx">     virtual bool isValid() const override { return SVGTests::isValid(); }
</span><span class="cx"> 
</span><del>-    bool isSupportedAttribute(const QualifiedName&amp;);
</del><ins>+    static bool isSupportedAttribute(const QualifiedName&amp;);
</ins><span class="cx">     virtual void parseAttribute(const QualifiedName&amp;, const AtomicString&amp;) override;
</span><span class="cx">     virtual void svgAttributeChanged(const QualifiedName&amp;) override;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGElement.cpp (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGElement.cpp        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGElement.cpp        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -26,7 +26,6 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;SVGElement.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;Attr.h&quot;
</del><span class="cx"> #include &quot;CSSCursorImageValue.h&quot;
</span><span class="cx"> #include &quot;CSSParser.h&quot;
</span><span class="cx"> #include &quot;DOMImplementation.h&quot;
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGEllipseElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGEllipseElement.cpp (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGEllipseElement.cpp        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGEllipseElement.cpp        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -21,14 +21,12 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;SVGEllipseElement.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;Attribute.h&quot;
</del><span class="cx"> #include &quot;FloatPoint.h&quot;
</span><span class="cx"> #include &quot;RenderSVGEllipse.h&quot;
</span><span class="cx"> #include &quot;RenderSVGPath.h&quot;
</span><span class="cx"> #include &quot;RenderSVGResource.h&quot;
</span><span class="cx"> #include &quot;SVGLength.h&quot;
</span><span class="cx"> #include &quot;SVGNames.h&quot;
</span><del>-#include &lt;wtf/NeverDestroyed.h&gt;
</del><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -64,27 +62,11 @@
</span><span class="cx">     return adoptRef(*new SVGEllipseElement(tagName, document));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool SVGEllipseElement::isSupportedAttribute(const QualifiedName&amp; attrName)
-{
-    static NeverDestroyed&lt;HashSet&lt;QualifiedName&gt;&gt; supportedAttributes;
-    if (supportedAttributes.get().isEmpty()) {
-        SVGLangSpace::addSupportedAttributes(supportedAttributes);
-        SVGExternalResourcesRequired::addSupportedAttributes(supportedAttributes);
-        supportedAttributes.get().add(SVGNames::cxAttr);
-        supportedAttributes.get().add(SVGNames::cyAttr);
-        supportedAttributes.get().add(SVGNames::rxAttr);
-        supportedAttributes.get().add(SVGNames::ryAttr);
-    }
-    return supportedAttributes.get().contains&lt;SVGAttributeHashTranslator&gt;(attrName);
-}
-
</del><span class="cx"> void SVGEllipseElement::parseAttribute(const QualifiedName&amp; name, const AtomicString&amp; value)
</span><span class="cx"> {
</span><span class="cx">     SVGParsingError parseError = NoError;
</span><span class="cx"> 
</span><del>-    if (!isSupportedAttribute(name))
-        SVGGraphicsElement::parseAttribute(name, value);
-    else if (name == SVGNames::cxAttr)
</del><ins>+    if (name == SVGNames::cxAttr)
</ins><span class="cx">         setCxBaseValue(SVGLength::construct(LengthModeWidth, value, parseError));
</span><span class="cx">     else if (name == SVGNames::cyAttr)
</span><span class="cx">         setCyBaseValue(SVGLength::construct(LengthModeHeight, value, parseError));
</span><span class="lines">@@ -92,41 +74,30 @@
</span><span class="cx">         setRxBaseValue(SVGLength::construct(LengthModeWidth, value, parseError, ForbidNegativeLengths));
</span><span class="cx">     else if (name == SVGNames::ryAttr)
</span><span class="cx">         setRyBaseValue(SVGLength::construct(LengthModeHeight, value, parseError, ForbidNegativeLengths));
</span><del>-    else if (SVGLangSpace::parseAttribute(name, value)
-             || SVGExternalResourcesRequired::parseAttribute(name, value)) {
-    } else
-        ASSERT_NOT_REACHED();
</del><span class="cx"> 
</span><span class="cx">     reportAttributeParsingError(parseError, name, value);
</span><ins>+
+    SVGGraphicsElement::parseAttribute(name, value);
+    SVGExternalResourcesRequired::parseAttribute(name, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void SVGEllipseElement::svgAttributeChanged(const QualifiedName&amp; attrName)
</span><span class="cx"> {
</span><del>-    if (!isSupportedAttribute(attrName)) {
-        SVGGraphicsElement::svgAttributeChanged(attrName);
-        return;
-    }
-
-    InstanceInvalidationGuard guard(*this);
-
-    if (attrName == SVGNames::cxAttr
-        || attrName == SVGNames::cyAttr
-        || attrName == SVGNames::rxAttr
-        || attrName == SVGNames::ryAttr) {
</del><ins>+    if (attrName == SVGNames::cxAttr || attrName == SVGNames::cyAttr || attrName == SVGNames::rxAttr || attrName == SVGNames::ryAttr) {
+        InstanceInvalidationGuard guard(*this);
</ins><span class="cx">         invalidateSVGPresentationAttributeStyle();
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    auto* renderer = downcast&lt;RenderSVGShape&gt;(this-&gt;renderer());
-    if (!renderer)
-        return;
-
</del><span class="cx">     if (SVGLangSpace::isKnownAttribute(attrName) || SVGExternalResourcesRequired::isKnownAttribute(attrName)) {
</span><del>-        RenderSVGResource::markForLayoutAndParentResourceInvalidation(*renderer);
</del><ins>+        if (auto* renderer = downcast&lt;RenderSVGShape&gt;(this-&gt;renderer())) {
+            InstanceInvalidationGuard guard(*this);
+            RenderSVGResource::markForLayoutAndParentResourceInvalidation(*renderer);
+        }
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    ASSERT_NOT_REACHED();
</del><ins>+    SVGGraphicsElement::svgAttributeChanged(attrName);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> RenderPtr&lt;RenderElement&gt; SVGEllipseElement::createElementRenderer(Ref&lt;RenderStyle&gt;&amp;&amp; style)
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGEllipseElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGEllipseElement.h (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGEllipseElement.h        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGEllipseElement.h        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -38,7 +38,6 @@
</span><span class="cx">     
</span><span class="cx">     virtual bool isValid() const override { return SVGTests::isValid(); }
</span><span class="cx"> 
</span><del>-    bool isSupportedAttribute(const QualifiedName&amp;);
</del><span class="cx">     virtual void parseAttribute(const QualifiedName&amp;, const AtomicString&amp;) override;
</span><span class="cx">     virtual void svgAttributeChanged(const QualifiedName&amp;) override;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGExternalResourcesRequiredcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGExternalResourcesRequired.cpp (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGExternalResourcesRequired.cpp        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGExternalResourcesRequired.cpp        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -21,20 +21,15 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;SVGExternalResourcesRequired.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;Attr.h&quot;
</del><span class="cx"> #include &quot;SVGElement.h&quot;
</span><span class="cx"> #include &quot;SVGNames.h&quot;
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-bool SVGExternalResourcesRequired::parseAttribute(const QualifiedName&amp; name, const AtomicString&amp; value)
</del><ins>+void SVGExternalResourcesRequired::parseAttribute(const QualifiedName&amp; name, const AtomicString&amp; value)
</ins><span class="cx"> {
</span><del>-    if (name == SVGNames::externalResourcesRequiredAttr) {
</del><ins>+    if (name == SVGNames::externalResourcesRequiredAttr)
</ins><span class="cx">         setExternalResourcesRequiredBaseValue(value == &quot;true&quot;);
</span><del>-        return true;
-    }
-
-    return false;
</del><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool SVGExternalResourcesRequired::isKnownAttribute(const QualifiedName&amp; attrName)
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGExternalResourcesRequiredh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGExternalResourcesRequired.h (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGExternalResourcesRequired.h        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGExternalResourcesRequired.h        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -26,7 +26,6 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-class Attribute;
</del><span class="cx"> class SVGElement;
</span><span class="cx"> 
</span><span class="cx"> // Notes on a SVG 1.1 spec discrepancy:
</span><span class="lines">@@ -38,14 +37,16 @@
</span><span class="cx"> public:
</span><span class="cx">     virtual ~SVGExternalResourcesRequired() { }
</span><span class="cx"> 
</span><del>-    bool parseAttribute(const QualifiedName&amp;, const AtomicString&amp;);
-    bool isKnownAttribute(const QualifiedName&amp;);
-    void addSupportedAttributes(HashSet&lt;QualifiedName&gt;&amp;);
</del><ins>+    void parseAttribute(const QualifiedName&amp;, const AtomicString&amp;);
+
+    static bool isKnownAttribute(const QualifiedName&amp;);
+    static void addSupportedAttributes(HashSet&lt;QualifiedName&gt;&amp;);
+
</ins><span class="cx">     bool handleAttributeChange(SVGElement*, const QualifiedName&amp;);
</span><span class="cx"> 
</span><span class="cx"> protected:
</span><span class="cx">     // These types look a bit awkward, but have to match the generic types of the SVGAnimatedProperty macros.
</span><del>-    virtual void setExternalResourcesRequiredBaseValue(const bool&amp;, const bool validValue = true) = 0;
</del><ins>+    virtual void setExternalResourcesRequiredBaseValue(const bool&amp;, bool validValue = true) = 0;
</ins><span class="cx">     virtual bool&amp; externalResourcesRequiredBaseValue() const = 0;
</span><span class="cx"> 
</span><span class="cx">     virtual void setHaveFiredLoadEvent(bool) { }
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFEBlendElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFEBlendElement.cpp (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFEBlendElement.cpp        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGFEBlendElement.cpp        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -22,11 +22,9 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;SVGFEBlendElement.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;Attribute.h&quot;
</del><span class="cx"> #include &quot;FilterEffect.h&quot;
</span><span class="cx"> #include &quot;SVGFilterBuilder.h&quot;
</span><span class="cx"> #include &quot;SVGNames.h&quot;
</span><del>-#include &lt;wtf/NeverDestroyed.h&gt;
</del><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -55,24 +53,8 @@
</span><span class="cx">     return adoptRef(*new SVGFEBlendElement(tagName, document));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool SVGFEBlendElement::isSupportedAttribute(const QualifiedName&amp; attrName)
-{
-    static NeverDestroyed&lt;HashSet&lt;QualifiedName&gt;&gt; supportedAttributes;
-    if (supportedAttributes.get().isEmpty()) {
-        supportedAttributes.get().add(SVGNames::modeAttr);
-        supportedAttributes.get().add(SVGNames::inAttr);
-        supportedAttributes.get().add(SVGNames::in2Attr);
-    }
-    return supportedAttributes.get().contains&lt;SVGAttributeHashTranslator&gt;(attrName);
-}
-
</del><span class="cx"> void SVGFEBlendElement::parseAttribute(const QualifiedName&amp; name, const AtomicString&amp; value)
</span><span class="cx"> {
</span><del>-    if (!isSupportedAttribute(name)) {
-        SVGFilterPrimitiveStandardAttributes::parseAttribute(name, value);
-        return;
-    }
-
</del><span class="cx">     if (name == SVGNames::modeAttr) {
</span><span class="cx">         BlendMode mode = BlendModeNormal;
</span><span class="cx">         if (parseBlendMode(value, mode))
</span><span class="lines">@@ -90,7 +72,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    ASSERT_NOT_REACHED();
</del><ins>+    SVGFilterPrimitiveStandardAttributes::parseAttribute(name, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool SVGFEBlendElement::setFilterEffectAttribute(FilterEffect* effect, const QualifiedName&amp; attrName)
</span><span class="lines">@@ -105,24 +87,19 @@
</span><span class="cx"> 
</span><span class="cx"> void SVGFEBlendElement::svgAttributeChanged(const QualifiedName&amp; attrName)
</span><span class="cx"> {
</span><del>-    if (!isSupportedAttribute(attrName)) {
-        SVGFilterPrimitiveStandardAttributes::svgAttributeChanged(attrName);
-        return;
-    }
-
-    InstanceInvalidationGuard guard(*this);
-
</del><span class="cx">     if (attrName == SVGNames::modeAttr) {
</span><ins>+        InstanceInvalidationGuard guard(*this);
</ins><span class="cx">         primitiveAttributeChanged(attrName);
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (attrName == SVGNames::inAttr || attrName == SVGNames::in2Attr) {
</span><ins>+        InstanceInvalidationGuard guard(*this);
</ins><span class="cx">         invalidate();
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    ASSERT_NOT_REACHED();
</del><ins>+    SVGFilterPrimitiveStandardAttributes::svgAttributeChanged(attrName);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> PassRefPtr&lt;FilterEffect&gt; SVGFEBlendElement::build(SVGFilterBuilder* filterBuilder, Filter* filter)
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFEBlendElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFEBlendElement.h (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFEBlendElement.h        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGFEBlendElement.h        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -58,7 +58,6 @@
</span><span class="cx"> private:
</span><span class="cx">     SVGFEBlendElement(const QualifiedName&amp;, Document&amp;);
</span><span class="cx"> 
</span><del>-    bool isSupportedAttribute(const QualifiedName&amp;);
</del><span class="cx">     virtual void parseAttribute(const QualifiedName&amp;, const AtomicString&amp;) override;
</span><span class="cx">     virtual bool setFilterEffectAttribute(FilterEffect*, const QualifiedName&amp; attrName) override;
</span><span class="cx">     virtual void svgAttributeChanged(const QualifiedName&amp;) override;
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFEColorMatrixElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFEColorMatrixElement.cpp (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFEColorMatrixElement.cpp        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGFEColorMatrixElement.cpp        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -21,11 +21,9 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;SVGFEColorMatrixElement.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;Attribute.h&quot;
</del><span class="cx"> #include &quot;FilterEffect.h&quot;
</span><span class="cx"> #include &quot;SVGFilterBuilder.h&quot;
</span><span class="cx"> #include &quot;SVGNames.h&quot;
</span><del>-#include &lt;wtf/NeverDestroyed.h&gt;
</del><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -54,26 +52,10 @@
</span><span class="cx">     return adoptRef(*new SVGFEColorMatrixElement(tagName, document));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool SVGFEColorMatrixElement::isSupportedAttribute(const QualifiedName&amp; attrName)
-{
-    static NeverDestroyed&lt;HashSet&lt;QualifiedName&gt;&gt; supportedAttributes;
-    if (supportedAttributes.get().isEmpty()) {
-        supportedAttributes.get().add(SVGNames::typeAttr);
-        supportedAttributes.get().add(SVGNames::valuesAttr);
-        supportedAttributes.get().add(SVGNames::inAttr);
-    }
-    return supportedAttributes.get().contains&lt;SVGAttributeHashTranslator&gt;(attrName);
-}
-
</del><span class="cx"> void SVGFEColorMatrixElement::parseAttribute(const QualifiedName&amp; name, const AtomicString&amp; value)
</span><span class="cx"> {
</span><del>-    if (!isSupportedAttribute(name)) {
-        SVGFilterPrimitiveStandardAttributes::parseAttribute(name, value);
-        return;
-    }
-
</del><span class="cx">     if (name == SVGNames::typeAttr) {
</span><del>-        ColorMatrixType propertyValue = SVGPropertyTraits&lt;ColorMatrixType&gt;::fromString(value);
</del><ins>+        auto propertyValue = SVGPropertyTraits&lt;ColorMatrixType&gt;::fromString(value);
</ins><span class="cx">         if (propertyValue &gt; 0)
</span><span class="cx">             setTypeBaseValue(propertyValue);
</span><span class="cx">         return;
</span><span class="lines">@@ -92,7 +74,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    ASSERT_NOT_REACHED();
</del><ins>+    SVGFilterPrimitiveStandardAttributes::parseAttribute(name, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool SVGFEColorMatrixElement::setFilterEffectAttribute(FilterEffect* effect, const QualifiedName&amp; attrName)
</span><span class="lines">@@ -109,24 +91,19 @@
</span><span class="cx"> 
</span><span class="cx"> void SVGFEColorMatrixElement::svgAttributeChanged(const QualifiedName&amp; attrName)
</span><span class="cx"> {
</span><del>-    if (!isSupportedAttribute(attrName)) {
-        SVGFilterPrimitiveStandardAttributes::svgAttributeChanged(attrName);
-        return;
-    }
-
-    InstanceInvalidationGuard guard(*this);
-
</del><span class="cx">     if (attrName == SVGNames::typeAttr || attrName == SVGNames::valuesAttr) {
</span><ins>+        InstanceInvalidationGuard guard(*this);
</ins><span class="cx">         primitiveAttributeChanged(attrName);
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (attrName == SVGNames::inAttr) {
</span><ins>+        InstanceInvalidationGuard guard(*this);
</ins><span class="cx">         invalidate();
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    ASSERT_NOT_REACHED();
</del><ins>+    SVGFilterPrimitiveStandardAttributes::svgAttributeChanged(attrName);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> PassRefPtr&lt;FilterEffect&gt; SVGFEColorMatrixElement::build(SVGFilterBuilder* filterBuilder, Filter* filter)
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFEColorMatrixElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFEColorMatrixElement.h (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFEColorMatrixElement.h        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGFEColorMatrixElement.h        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -72,7 +72,6 @@
</span><span class="cx"> private:
</span><span class="cx">     SVGFEColorMatrixElement(const QualifiedName&amp;, Document&amp;);
</span><span class="cx"> 
</span><del>-    bool isSupportedAttribute(const QualifiedName&amp;);
</del><span class="cx">     virtual void parseAttribute(const QualifiedName&amp;, const AtomicString&amp;) override;
</span><span class="cx">     virtual bool setFilterEffectAttribute(FilterEffect*, const QualifiedName&amp;) override;
</span><span class="cx">     virtual void svgAttributeChanged(const QualifiedName&amp;) override;
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFEComponentTransferElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFEComponentTransferElement.cpp (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFEComponentTransferElement.cpp        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGFEComponentTransferElement.cpp        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -21,7 +21,6 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;SVGFEComponentTransferElement.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;Attr.h&quot;
</del><span class="cx"> #include &quot;ElementIterator.h&quot;
</span><span class="cx"> #include &quot;FilterEffect.h&quot;
</span><span class="cx"> #include &quot;SVGFEFuncAElement.h&quot;
</span><span class="lines">@@ -54,27 +53,14 @@
</span><span class="cx">     return adoptRef(*new SVGFEComponentTransferElement(tagName, document));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool SVGFEComponentTransferElement::isSupportedAttribute(const QualifiedName&amp; attrName)
-{
-    static NeverDestroyed&lt;HashSet&lt;QualifiedName&gt;&gt; supportedAttributes;
-    if (supportedAttributes.get().isEmpty())
-        supportedAttributes.get().add(SVGNames::inAttr);
-    return supportedAttributes.get().contains&lt;SVGAttributeHashTranslator&gt;(attrName);
-}
-
</del><span class="cx"> void SVGFEComponentTransferElement::parseAttribute(const QualifiedName&amp; name, const AtomicString&amp; value)
</span><span class="cx"> {
</span><del>-    if (!isSupportedAttribute(name)) {
-        SVGFilterPrimitiveStandardAttributes::parseAttribute(name, value);
-        return;
-    }
-
</del><span class="cx">     if (name == SVGNames::inAttr) {
</span><span class="cx">         setIn1BaseValue(value);
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    ASSERT_NOT_REACHED();
</del><ins>+    SVGFilterPrimitiveStandardAttributes::parseAttribute(name, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> PassRefPtr&lt;FilterEffect&gt; SVGFEComponentTransferElement::build(SVGFilterBuilder* filterBuilder, Filter* filter)
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFEComponentTransferElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFEComponentTransferElement.h (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFEComponentTransferElement.h        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGFEComponentTransferElement.h        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -34,7 +34,6 @@
</span><span class="cx">     SVGFEComponentTransferElement(const QualifiedName&amp;, Document&amp;);
</span><span class="cx"> 
</span><span class="cx">     // FIXME: svgAttributeChanged missing.
</span><del>-    bool isSupportedAttribute(const QualifiedName&amp;);
</del><span class="cx">     virtual void parseAttribute(const QualifiedName&amp;, const AtomicString&amp;) override;
</span><span class="cx">     virtual PassRefPtr&lt;FilterEffect&gt; build(SVGFilterBuilder*, Filter*) override;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFECompositeElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFECompositeElement.cpp (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFECompositeElement.cpp        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGFECompositeElement.cpp        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -21,11 +21,9 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;SVGFECompositeElement.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;Attribute.h&quot;
</del><span class="cx"> #include &quot;FilterEffect.h&quot;
</span><span class="cx"> #include &quot;SVGFilterBuilder.h&quot;
</span><span class="cx"> #include &quot;SVGNames.h&quot;
</span><del>-#include &lt;wtf/NeverDestroyed.h&gt;
</del><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -62,28 +60,8 @@
</span><span class="cx">     return adoptRef(*new SVGFECompositeElement(tagName, document));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool SVGFECompositeElement::isSupportedAttribute(const QualifiedName&amp; attrName)
-{
-    static NeverDestroyed&lt;HashSet&lt;QualifiedName&gt;&gt; supportedAttributes;
-    if (supportedAttributes.get().isEmpty()) {
-        supportedAttributes.get().add(SVGNames::inAttr);
-        supportedAttributes.get().add(SVGNames::in2Attr);
-        supportedAttributes.get().add(SVGNames::operatorAttr);
-        supportedAttributes.get().add(SVGNames::k1Attr);
-        supportedAttributes.get().add(SVGNames::k2Attr);
-        supportedAttributes.get().add(SVGNames::k3Attr);
-        supportedAttributes.get().add(SVGNames::k4Attr);
-    }
-    return supportedAttributes.get().contains&lt;SVGAttributeHashTranslator&gt;(attrName);
-}
-
</del><span class="cx"> void SVGFECompositeElement::parseAttribute(const QualifiedName&amp; name, const AtomicString&amp; value)
</span><span class="cx"> {
</span><del>-    if (!isSupportedAttribute(name)) {
-        SVGFilterPrimitiveStandardAttributes::parseAttribute(name, value);
-        return;
-    }
-
</del><span class="cx">     if (name == SVGNames::operatorAttr) {
</span><span class="cx">         CompositeOperationType propertyValue = SVGPropertyTraits&lt;CompositeOperationType&gt;::fromString(value);
</span><span class="cx">         if (propertyValue &gt; 0)
</span><span class="lines">@@ -121,7 +99,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    ASSERT_NOT_REACHED();
</del><ins>+    SVGFilterPrimitiveStandardAttributes::parseAttribute(name, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool SVGFECompositeElement::setFilterEffectAttribute(FilterEffect* effect, const QualifiedName&amp; attrName)
</span><span class="lines">@@ -145,28 +123,19 @@
</span><span class="cx"> 
</span><span class="cx"> void SVGFECompositeElement::svgAttributeChanged(const QualifiedName&amp; attrName)
</span><span class="cx"> {
</span><del>-    if (!isSupportedAttribute(attrName)) {
-        SVGFilterPrimitiveStandardAttributes::svgAttributeChanged(attrName);
-        return;
-    }
-
-    InstanceInvalidationGuard guard(*this);
-
-    if (attrName == SVGNames::operatorAttr
-        || attrName == SVGNames::k1Attr
-        || attrName == SVGNames::k2Attr
-        || attrName == SVGNames::k3Attr
-        || attrName == SVGNames::k4Attr) {
</del><ins>+    if (attrName == SVGNames::operatorAttr || attrName == SVGNames::k1Attr || attrName == SVGNames::k2Attr || attrName == SVGNames::k3Attr || attrName == SVGNames::k4Attr) {
+        InstanceInvalidationGuard guard(*this);
</ins><span class="cx">         primitiveAttributeChanged(attrName);
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (attrName == SVGNames::inAttr || attrName == SVGNames::in2Attr) {
</span><ins>+        InstanceInvalidationGuard guard(*this);
</ins><span class="cx">         invalidate();
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    ASSERT_NOT_REACHED();
</del><ins>+    SVGFilterPrimitiveStandardAttributes::svgAttributeChanged(attrName);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> PassRefPtr&lt;FilterEffect&gt; SVGFECompositeElement::build(SVGFilterBuilder* filterBuilder, Filter* filter)
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFECompositeElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFECompositeElement.h (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFECompositeElement.h        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGFECompositeElement.h        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -80,7 +80,6 @@
</span><span class="cx"> private:
</span><span class="cx">     SVGFECompositeElement(const QualifiedName&amp;, Document&amp;);
</span><span class="cx"> 
</span><del>-    bool isSupportedAttribute(const QualifiedName&amp;);
</del><span class="cx">     virtual void parseAttribute(const QualifiedName&amp;, const AtomicString&amp;) override;
</span><span class="cx">     virtual bool setFilterEffectAttribute(FilterEffect*, const QualifiedName&amp;) override;
</span><span class="cx">     virtual void svgAttributeChanged(const QualifiedName&amp;) override;
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFEConvolveMatrixElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFEConvolveMatrixElement.cpp (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFEConvolveMatrixElement.cpp        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGFEConvolveMatrixElement.cpp        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -20,7 +20,6 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;SVGFEConvolveMatrixElement.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;Attr.h&quot;
</del><span class="cx"> #include &quot;FilterEffect.h&quot;
</span><span class="cx"> #include &quot;FloatPoint.h&quot;
</span><span class="cx"> #include &quot;IntPoint.h&quot;
</span><span class="lines">@@ -28,7 +27,6 @@
</span><span class="cx"> #include &quot;SVGFilterBuilder.h&quot;
</span><span class="cx"> #include &quot;SVGNames.h&quot;
</span><span class="cx"> #include &quot;SVGParserUtilities.h&quot;
</span><del>-#include &lt;wtf/NeverDestroyed.h&gt;
</del><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -99,31 +97,8 @@
</span><span class="cx">     return s_identifier;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool SVGFEConvolveMatrixElement::isSupportedAttribute(const QualifiedName&amp; attrName)
-{
-    static NeverDestroyed&lt;HashSet&lt;QualifiedName&gt;&gt; supportedAttributes;
-    if (supportedAttributes.get().isEmpty()) {
-        supportedAttributes.get().add(SVGNames::inAttr);
-        supportedAttributes.get().add(SVGNames::orderAttr);
-        supportedAttributes.get().add(SVGNames::kernelMatrixAttr);
-        supportedAttributes.get().add(SVGNames::edgeModeAttr);
-        supportedAttributes.get().add(SVGNames::divisorAttr);
-        supportedAttributes.get().add(SVGNames::biasAttr);
-        supportedAttributes.get().add(SVGNames::targetXAttr);
-        supportedAttributes.get().add(SVGNames::targetYAttr);
-        supportedAttributes.get().add(SVGNames::kernelUnitLengthAttr);
-        supportedAttributes.get().add(SVGNames::preserveAlphaAttr);
-    }
-    return supportedAttributes.get().contains&lt;SVGAttributeHashTranslator&gt;(attrName);
-}
-
</del><span class="cx"> void SVGFEConvolveMatrixElement::parseAttribute(const QualifiedName&amp; name, const AtomicString&amp; value)
</span><span class="cx"> {
</span><del>-    if (!isSupportedAttribute(name)) {
-        SVGFilterPrimitiveStandardAttributes::parseAttribute(name, value);
-        return;
-    }
-
</del><span class="cx">     if (name == SVGNames::inAttr) {
</span><span class="cx">         setIn1BaseValue(value);
</span><span class="cx">         return;
</span><span class="lines">@@ -135,9 +110,7 @@
</span><span class="cx">             setOrderXBaseValue(x);
</span><span class="cx">             setOrderYBaseValue(y);
</span><span class="cx">         } else
</span><del>-            document().accessSVGExtensions().reportWarning(
-                &quot;feConvolveMatrix: problem parsing order=\&quot;&quot; + value
-                + &quot;\&quot;. Filtered element will not be displayed.&quot;);
</del><ins>+            document().accessSVGExtensions().reportWarning(&quot;feConvolveMatrix: problem parsing order=\&quot;&quot; + value + &quot;\&quot;. Filtered element will not be displayed.&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -146,9 +119,7 @@
</span><span class="cx">         if (propertyValue &gt; 0)
</span><span class="cx">             setEdgeModeBaseValue(propertyValue);
</span><span class="cx">         else
</span><del>-            document().accessSVGExtensions().reportWarning(
-                &quot;feConvolveMatrix: problem parsing edgeMode=\&quot;&quot; + value
-                + &quot;\&quot;. Filtered element will not be displayed.&quot;);
</del><ins>+            document().accessSVGExtensions().reportWarning(&quot;feConvolveMatrix: problem parsing edgeMode=\&quot;&quot; + value + &quot;\&quot;. Filtered element will not be displayed.&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -165,9 +136,7 @@
</span><span class="cx">         if (divisor)
</span><span class="cx">             setDivisorBaseValue(divisor);
</span><span class="cx">         else
</span><del>-            document().accessSVGExtensions().reportWarning(
-                &quot;feConvolveMatrix: problem parsing divisor=\&quot;&quot; + value
-                + &quot;\&quot;. Filtered element will not be displayed.&quot;);
</del><ins>+            document().accessSVGExtensions().reportWarning(&quot;feConvolveMatrix: problem parsing divisor=\&quot;&quot; + value + &quot;\&quot;. Filtered element will not be displayed.&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     
</span><span class="lines">@@ -192,9 +161,7 @@
</span><span class="cx">             setKernelUnitLengthXBaseValue(x);
</span><span class="cx">             setKernelUnitLengthYBaseValue(y);
</span><span class="cx">         } else
</span><del>-            document().accessSVGExtensions().reportWarning(
-                &quot;feConvolveMatrix: problem parsing kernelUnitLength=\&quot;&quot; + value
-                + &quot;\&quot;. Filtered element will not be displayed.&quot;);
</del><ins>+            document().accessSVGExtensions().reportWarning(&quot;feConvolveMatrix: problem parsing kernelUnitLength=\&quot;&quot; + value + &quot;\&quot;. Filtered element will not be displayed.&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -204,13 +171,11 @@
</span><span class="cx">         else if (value == &quot;false&quot;)
</span><span class="cx">             setPreserveAlphaBaseValue(false);
</span><span class="cx">         else
</span><del>-            document().accessSVGExtensions().reportWarning(
-                &quot;feConvolveMatrix: problem parsing preserveAlphaAttr=\&quot;&quot; + value
-                + &quot;\&quot;. Filtered element will not be displayed.&quot;);
</del><ins>+            document().accessSVGExtensions().reportWarning(&quot;feConvolveMatrix: problem parsing preserveAlphaAttr=\&quot;&quot; + value  + &quot;\&quot;. Filtered element will not be displayed.&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    ASSERT_NOT_REACHED();
</del><ins>+    SVGFilterPrimitiveStandardAttributes::parseAttribute(name, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool SVGFEConvolveMatrixElement::setFilterEffectAttribute(FilterEffect* effect, const QualifiedName&amp; attrName)
</span><span class="lines">@@ -251,32 +216,19 @@
</span><span class="cx"> 
</span><span class="cx"> void SVGFEConvolveMatrixElement::svgAttributeChanged(const QualifiedName&amp; attrName)
</span><span class="cx"> {
</span><del>-    if (!isSupportedAttribute(attrName)) {
-        SVGFilterPrimitiveStandardAttributes::svgAttributeChanged(attrName);
-        return;
-    }
-
-    InstanceInvalidationGuard guard(*this);
-
-    if (attrName == SVGNames::edgeModeAttr
-        || attrName == SVGNames::divisorAttr
-        || attrName == SVGNames::biasAttr
-        || attrName == SVGNames::targetXAttr
-        || attrName == SVGNames::targetYAttr
-        || attrName == SVGNames::kernelUnitLengthAttr
-        || attrName == SVGNames::preserveAlphaAttr) {
</del><ins>+    if (attrName == SVGNames::edgeModeAttr || attrName == SVGNames::divisorAttr || attrName == SVGNames::biasAttr || attrName == SVGNames::targetXAttr || attrName == SVGNames::targetYAttr || attrName == SVGNames::kernelUnitLengthAttr || attrName == SVGNames::preserveAlphaAttr) {
+        InstanceInvalidationGuard guard(*this);
</ins><span class="cx">         primitiveAttributeChanged(attrName);
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (attrName == SVGNames::inAttr
-        || attrName == SVGNames::orderAttr
-        || attrName == SVGNames::kernelMatrixAttr) {
</del><ins>+    if (attrName == SVGNames::inAttr || attrName == SVGNames::orderAttr || attrName == SVGNames::kernelMatrixAttr) {
+        InstanceInvalidationGuard guard(*this);
</ins><span class="cx">         invalidate();
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    ASSERT_NOT_REACHED();
</del><ins>+    SVGFilterPrimitiveStandardAttributes::svgAttributeChanged(attrName);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> PassRefPtr&lt;FilterEffect&gt; SVGFEConvolveMatrixElement::build(SVGFilterBuilder* filterBuilder, Filter* filter)
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFEConvolveMatrixElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFEConvolveMatrixElement.h (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFEConvolveMatrixElement.h        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGFEConvolveMatrixElement.h        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -73,7 +73,6 @@
</span><span class="cx"> private:
</span><span class="cx">     SVGFEConvolveMatrixElement(const QualifiedName&amp;, Document&amp;);
</span><span class="cx"> 
</span><del>-    bool isSupportedAttribute(const QualifiedName&amp;);
</del><span class="cx">     virtual void parseAttribute(const QualifiedName&amp;, const AtomicString&amp;) override;
</span><span class="cx">     virtual bool setFilterEffectAttribute(FilterEffect*, const QualifiedName&amp;) override;
</span><span class="cx">     virtual void svgAttributeChanged(const QualifiedName&amp;) override;
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFEDiffuseLightingElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFEDiffuseLightingElement.cpp (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFEDiffuseLightingElement.cpp        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGFEDiffuseLightingElement.cpp        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -20,7 +20,6 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;SVGFEDiffuseLightingElement.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;Attr.h&quot;
</del><span class="cx"> #include &quot;FEDiffuseLighting.h&quot;
</span><span class="cx"> #include &quot;FilterEffect.h&quot;
</span><span class="cx"> #include &quot;RenderStyle.h&quot;
</span><span class="lines">@@ -29,7 +28,6 @@
</span><span class="cx"> #include &quot;SVGFilterBuilder.h&quot;
</span><span class="cx"> #include &quot;SVGNames.h&quot;
</span><span class="cx"> #include &quot;SVGParserUtilities.h&quot;
</span><del>-#include &lt;wtf/NeverDestroyed.h&gt;
</del><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -75,26 +73,8 @@
</span><span class="cx">     return s_identifier;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool SVGFEDiffuseLightingElement::isSupportedAttribute(const QualifiedName&amp; attrName)
-{
-    static NeverDestroyed&lt;HashSet&lt;QualifiedName&gt;&gt; supportedAttributes;
-    if (supportedAttributes.get().isEmpty()) {
-        supportedAttributes.get().add(SVGNames::inAttr);
-        supportedAttributes.get().add(SVGNames::diffuseConstantAttr);
-        supportedAttributes.get().add(SVGNames::surfaceScaleAttr);
-        supportedAttributes.get().add(SVGNames::kernelUnitLengthAttr);
-        supportedAttributes.get().add(SVGNames::lighting_colorAttr); // Even though it's a SVG-CSS property, we override its handling here.
-    }
-    return supportedAttributes.get().contains&lt;SVGAttributeHashTranslator&gt;(attrName);
-}
-
</del><span class="cx"> void SVGFEDiffuseLightingElement::parseAttribute(const QualifiedName&amp; name, const AtomicString&amp; value)
</span><span class="cx"> {
</span><del>-    if (!isSupportedAttribute(name) || name == SVGNames::lighting_colorAttr) {
-        SVGFilterPrimitiveStandardAttributes::parseAttribute(name, value);
-        return;
-    }
-
</del><span class="cx">     if (name == SVGNames::inAttr) {
</span><span class="cx">         setIn1BaseValue(value);
</span><span class="cx">         return;
</span><span class="lines">@@ -119,7 +99,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    ASSERT_NOT_REACHED();
</del><ins>+    SVGFilterPrimitiveStandardAttributes::parseAttribute(name, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool SVGFEDiffuseLightingElement::setFilterEffectAttribute(FilterEffect* effect, const QualifiedName&amp; attrName)
</span><span class="lines">@@ -168,27 +148,19 @@
</span><span class="cx"> 
</span><span class="cx"> void SVGFEDiffuseLightingElement::svgAttributeChanged(const QualifiedName&amp; attrName)
</span><span class="cx"> {
</span><del>-    if (!isSupportedAttribute(attrName)) {
-        SVGFilterPrimitiveStandardAttributes::svgAttributeChanged(attrName);
-        return;
-    }
-
-    InstanceInvalidationGuard guard(*this);
-    
-    if (attrName == SVGNames::surfaceScaleAttr
-        || attrName == SVGNames::diffuseConstantAttr
-        || attrName == SVGNames::kernelUnitLengthAttr
-        || attrName == SVGNames::lighting_colorAttr) {
</del><ins>+    if (attrName == SVGNames::surfaceScaleAttr || attrName == SVGNames::diffuseConstantAttr || attrName == SVGNames::kernelUnitLengthAttr || attrName == SVGNames::lighting_colorAttr) {
+        InstanceInvalidationGuard guard(*this);
</ins><span class="cx">         primitiveAttributeChanged(attrName);
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (attrName == SVGNames::inAttr) {
</span><ins>+        InstanceInvalidationGuard guard(*this);
</ins><span class="cx">         invalidate();
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    ASSERT_NOT_REACHED();
</del><ins>+    SVGFilterPrimitiveStandardAttributes::svgAttributeChanged(attrName);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void SVGFEDiffuseLightingElement::lightElementAttributeChanged(const SVGFELightElement* lightElement, const QualifiedName&amp; attrName)
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFEDiffuseLightingElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFEDiffuseLightingElement.h (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFEDiffuseLightingElement.h        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGFEDiffuseLightingElement.h        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -38,7 +38,6 @@
</span><span class="cx"> private:
</span><span class="cx">     SVGFEDiffuseLightingElement(const QualifiedName&amp;, Document&amp;);
</span><span class="cx"> 
</span><del>-    bool isSupportedAttribute(const QualifiedName&amp;);
</del><span class="cx">     virtual void parseAttribute(const QualifiedName&amp;, const AtomicString&amp;) override;
</span><span class="cx">     virtual bool setFilterEffectAttribute(FilterEffect*, const QualifiedName&amp;) override;
</span><span class="cx">     virtual void svgAttributeChanged(const QualifiedName&amp;) override;
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFEDisplacementMapElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFEDisplacementMapElement.cpp (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFEDisplacementMapElement.cpp        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGFEDisplacementMapElement.cpp        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -20,11 +20,9 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;SVGFEDisplacementMapElement.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;Attribute.h&quot;
</del><span class="cx"> #include &quot;FilterEffect.h&quot;
</span><span class="cx"> #include &quot;SVGFilterBuilder.h&quot;
</span><span class="cx"> #include &quot;SVGNames.h&quot;
</span><del>-#include &lt;wtf/NeverDestroyed.h&gt;
</del><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -58,35 +56,17 @@
</span><span class="cx">     return adoptRef(*new SVGFEDisplacementMapElement(tagName, document));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool SVGFEDisplacementMapElement::isSupportedAttribute(const QualifiedName&amp; attrName)
-{
-    static NeverDestroyed&lt;HashSet&lt;QualifiedName&gt;&gt; supportedAttributes;
-    if (supportedAttributes.get().isEmpty()) {
-        supportedAttributes.get().add(SVGNames::inAttr);
-        supportedAttributes.get().add(SVGNames::in2Attr);
-        supportedAttributes.get().add(SVGNames::xChannelSelectorAttr);
-        supportedAttributes.get().add(SVGNames::yChannelSelectorAttr);
-        supportedAttributes.get().add(SVGNames::scaleAttr);
-    }
-    return supportedAttributes.get().contains&lt;SVGAttributeHashTranslator&gt;(attrName);
-}
-
</del><span class="cx"> void SVGFEDisplacementMapElement::parseAttribute(const QualifiedName&amp; name, const AtomicString&amp; value)
</span><span class="cx"> {
</span><del>-    if (!isSupportedAttribute(name)) {
-        SVGFilterPrimitiveStandardAttributes::parseAttribute(name, value);
-        return;
-    }
-
</del><span class="cx">     if (name == SVGNames::xChannelSelectorAttr) {
</span><del>-        ChannelSelectorType propertyValue = SVGPropertyTraits&lt;ChannelSelectorType&gt;::fromString(value);
</del><ins>+        auto propertyValue = SVGPropertyTraits&lt;ChannelSelectorType&gt;::fromString(value);
</ins><span class="cx">         if (propertyValue &gt; 0)
</span><span class="cx">             setXChannelSelectorBaseValue(propertyValue);
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (name == SVGNames::yChannelSelectorAttr) {
</span><del>-        ChannelSelectorType propertyValue = SVGPropertyTraits&lt;ChannelSelectorType&gt;::fromString(value);
</del><ins>+        auto propertyValue = SVGPropertyTraits&lt;ChannelSelectorType&gt;::fromString(value);
</ins><span class="cx">         if (propertyValue &gt; 0)
</span><span class="cx">             setYChannelSelectorBaseValue(propertyValue);
</span><span class="cx">         return;
</span><span class="lines">@@ -107,7 +87,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    ASSERT_NOT_REACHED();
</del><ins>+    SVGFilterPrimitiveStandardAttributes::parseAttribute(name, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool SVGFEDisplacementMapElement::setFilterEffectAttribute(FilterEffect* effect, const QualifiedName&amp; attrName)
</span><span class="lines">@@ -126,24 +106,19 @@
</span><span class="cx"> 
</span><span class="cx"> void SVGFEDisplacementMapElement::svgAttributeChanged(const QualifiedName&amp; attrName)
</span><span class="cx"> {
</span><del>-    if (!isSupportedAttribute(attrName)) {
-        SVGFilterPrimitiveStandardAttributes::svgAttributeChanged(attrName);
-        return;
-    }
-
-    InstanceInvalidationGuard guard(*this);
-    
</del><span class="cx">     if (attrName == SVGNames::xChannelSelectorAttr || attrName == SVGNames::yChannelSelectorAttr || attrName == SVGNames::scaleAttr) {
</span><ins>+        InstanceInvalidationGuard guard(*this);
</ins><span class="cx">         primitiveAttributeChanged(attrName);
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (attrName == SVGNames::inAttr || attrName == SVGNames::in2Attr) {
</span><ins>+        InstanceInvalidationGuard guard(*this);
</ins><span class="cx">         invalidate();
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    ASSERT_NOT_REACHED();
</del><ins>+    SVGFilterPrimitiveStandardAttributes::svgAttributeChanged(attrName);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> PassRefPtr&lt;FilterEffect&gt; SVGFEDisplacementMapElement::build(SVGFilterBuilder* filterBuilder, Filter* filter)
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFEDisplacementMapElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFEDisplacementMapElement.h (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFEDisplacementMapElement.h        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGFEDisplacementMapElement.h        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -73,7 +73,6 @@
</span><span class="cx"> private:
</span><span class="cx">     SVGFEDisplacementMapElement(const QualifiedName&amp; tagName, Document&amp;);
</span><span class="cx">     
</span><del>-    bool isSupportedAttribute(const QualifiedName&amp;);
</del><span class="cx">     virtual void parseAttribute(const QualifiedName&amp;, const AtomicString&amp;) override;
</span><span class="cx">     virtual bool setFilterEffectAttribute(FilterEffect*, const QualifiedName&amp; attrName) override;
</span><span class="cx">     virtual void svgAttributeChanged(const QualifiedName&amp;) override;
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFEDropShadowElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFEDropShadowElement.cpp (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFEDropShadowElement.cpp        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGFEDropShadowElement.cpp        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -20,13 +20,11 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;SVGFEDropShadowElement.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;Attribute.h&quot;
</del><span class="cx"> #include &quot;RenderStyle.h&quot;
</span><span class="cx"> #include &quot;SVGFilterBuilder.h&quot;
</span><span class="cx"> #include &quot;SVGNames.h&quot;
</span><span class="cx"> #include &quot;SVGParserUtilities.h&quot;
</span><span class="cx"> #include &quot;SVGRenderStyle.h&quot;
</span><del>-#include &lt;wtf/NeverDestroyed.h&gt;
</del><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -81,25 +79,8 @@
</span><span class="cx">     invalidate();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool SVGFEDropShadowElement::isSupportedAttribute(const QualifiedName&amp; attrName)
-{
-    static NeverDestroyed&lt;HashSet&lt;QualifiedName&gt;&gt; supportedAttributes;
-    if (supportedAttributes.get().isEmpty()) {
-        supportedAttributes.get().add(SVGNames::inAttr);
-        supportedAttributes.get().add(SVGNames::dxAttr);
-        supportedAttributes.get().add(SVGNames::dyAttr);
-        supportedAttributes.get().add(SVGNames::stdDeviationAttr);
-    }
-    return supportedAttributes.get().contains&lt;SVGAttributeHashTranslator&gt;(attrName);
-}
-
</del><span class="cx"> void SVGFEDropShadowElement::parseAttribute(const QualifiedName&amp; name, const AtomicString&amp; value)
</span><span class="cx"> {
</span><del>-    if (!isSupportedAttribute(name)) {
-        SVGFilterPrimitiveStandardAttributes::parseAttribute(name, value);
-        return;
-    }
-
</del><span class="cx">     if (name == SVGNames::stdDeviationAttr) {
</span><span class="cx">         float x, y;
</span><span class="cx">         if (parseNumberOptionalNumber(value, x, y)) {
</span><span class="lines">@@ -124,27 +105,18 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    ASSERT_NOT_REACHED();
</del><ins>+    SVGFilterPrimitiveStandardAttributes::parseAttribute(name, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void SVGFEDropShadowElement::svgAttributeChanged(const QualifiedName&amp; attrName)
</span><span class="cx"> {
</span><del>-    if (!isSupportedAttribute(attrName)) {
-        SVGFilterPrimitiveStandardAttributes::svgAttributeChanged(attrName);
-        return;
-    }
-
-    InstanceInvalidationGuard guard(*this);
-    
-    if (attrName == SVGNames::inAttr
-        || attrName == SVGNames::stdDeviationAttr
-        || attrName == SVGNames::dxAttr
-        || attrName == SVGNames::dyAttr) {
</del><ins>+    if (attrName == SVGNames::inAttr || attrName == SVGNames::stdDeviationAttr || attrName == SVGNames::dxAttr || attrName == SVGNames::dyAttr) {
+        InstanceInvalidationGuard guard(*this);
</ins><span class="cx">         invalidate();
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    ASSERT_NOT_REACHED();
</del><ins>+    SVGFilterPrimitiveStandardAttributes::svgAttributeChanged(attrName);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> PassRefPtr&lt;FilterEffect&gt; SVGFEDropShadowElement::build(SVGFilterBuilder* filterBuilder, Filter* filter)
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFEDropShadowElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFEDropShadowElement.h (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFEDropShadowElement.h        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGFEDropShadowElement.h        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -35,7 +35,6 @@
</span><span class="cx"> private:
</span><span class="cx">     SVGFEDropShadowElement(const QualifiedName&amp;, Document&amp;);
</span><span class="cx">     
</span><del>-    bool isSupportedAttribute(const QualifiedName&amp;);
</del><span class="cx">     virtual void parseAttribute(const QualifiedName&amp;, const AtomicString&amp;) override;
</span><span class="cx">     virtual void svgAttributeChanged(const QualifiedName&amp;) override;
</span><span class="cx">     virtual PassRefPtr&lt;FilterEffect&gt; build(SVGFilterBuilder*, Filter*) override;
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFEFloodElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFEFloodElement.cpp (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFEFloodElement.cpp        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGFEFloodElement.cpp        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -21,7 +21,6 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;SVGFEFloodElement.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;Attribute.h&quot;
</del><span class="cx"> #include &quot;RenderStyle.h&quot;
</span><span class="cx"> #include &quot;SVGNames.h&quot;
</span><span class="cx"> #include &quot;SVGRenderStyle.h&quot;
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFEGaussianBlurElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFEGaussianBlurElement.cpp (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFEGaussianBlurElement.cpp        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGFEGaussianBlurElement.cpp        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -21,12 +21,10 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;SVGFEGaussianBlurElement.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;Attribute.h&quot;
</del><span class="cx"> #include &quot;FilterEffect.h&quot;
</span><span class="cx"> #include &quot;SVGFilterBuilder.h&quot;
</span><span class="cx"> #include &quot;SVGNames.h&quot;
</span><span class="cx"> #include &quot;SVGParserUtilities.h&quot;
</span><del>-#include &lt;wtf/NeverDestroyed.h&gt;
</del><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -76,24 +74,8 @@
</span><span class="cx">     invalidate();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool SVGFEGaussianBlurElement::isSupportedAttribute(const QualifiedName&amp; attrName)
-{
-    static NeverDestroyed&lt;HashSet&lt;QualifiedName&gt;&gt; supportedAttributes;
-    if (supportedAttributes.get().isEmpty()) {
-        supportedAttributes.get().add(SVGNames::inAttr);
-        supportedAttributes.get().add(SVGNames::stdDeviationAttr);
-        supportedAttributes.get().add(SVGNames::edgeModeAttr);
-    }
-    return supportedAttributes.get().contains&lt;SVGAttributeHashTranslator&gt;(attrName);
-}
-
</del><span class="cx"> void SVGFEGaussianBlurElement::parseAttribute(const QualifiedName&amp; name, const AtomicString&amp; value)
</span><span class="cx"> {
</span><del>-    if (!isSupportedAttribute(name)) {
-        SVGFilterPrimitiveStandardAttributes::parseAttribute(name, value);
-        return;
-    }
-
</del><span class="cx">     if (name == SVGNames::stdDeviationAttr) {
</span><span class="cx">         float x, y;
</span><span class="cx">         if (parseNumberOptionalNumber(value, x, y)) {
</span><span class="lines">@@ -109,36 +91,26 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (name == SVGNames::edgeModeAttr) {
</span><del>-        EdgeModeType propertyValue = SVGPropertyTraits&lt;EdgeModeType&gt;::fromString(value);
</del><ins>+        auto propertyValue = SVGPropertyTraits&lt;EdgeModeType&gt;::fromString(value);
</ins><span class="cx">         if (propertyValue &gt; 0)
</span><span class="cx">             setEdgeModeBaseValue(propertyValue);
</span><span class="cx">         else
</span><del>-            document().accessSVGExtensions().reportWarning(
-                &quot;feGaussianBlur: problem parsing edgeMode=\&quot;&quot; + value
-                + &quot;\&quot;. Filtered element will not be displayed.&quot;);
</del><ins>+            document().accessSVGExtensions().reportWarning(&quot;feGaussianBlur: problem parsing edgeMode=\&quot;&quot; + value + &quot;\&quot;. Filtered element will not be displayed.&quot;);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    ASSERT_NOT_REACHED();
</del><ins>+    SVGFilterPrimitiveStandardAttributes::parseAttribute(name, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void SVGFEGaussianBlurElement::svgAttributeChanged(const QualifiedName&amp; attrName)
</span><span class="cx"> {
</span><del>-    if (!isSupportedAttribute(attrName)) {
-        SVGFilterPrimitiveStandardAttributes::svgAttributeChanged(attrName);
-        return;
-    }
-
-    InstanceInvalidationGuard guard(*this);
-    
-    if (attrName == SVGNames::inAttr
-        || attrName == SVGNames::stdDeviationAttr
-        || attrName == SVGNames::edgeModeAttr) {
</del><ins>+    if (attrName == SVGNames::inAttr || attrName == SVGNames::stdDeviationAttr || attrName == SVGNames::edgeModeAttr) {
+        InstanceInvalidationGuard guard(*this);
</ins><span class="cx">         invalidate();
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    ASSERT_NOT_REACHED();
</del><ins>+    SVGFilterPrimitiveStandardAttributes::svgAttributeChanged(attrName);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> PassRefPtr&lt;FilterEffect&gt; SVGFEGaussianBlurElement::build(SVGFilterBuilder* filterBuilder, Filter* filter)
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFEGaussianBlurElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFEGaussianBlurElement.h (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFEGaussianBlurElement.h        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGFEGaussianBlurElement.h        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -38,7 +38,6 @@
</span><span class="cx"> private:
</span><span class="cx">     SVGFEGaussianBlurElement(const QualifiedName&amp;, Document&amp;);
</span><span class="cx"> 
</span><del>-    bool isSupportedAttribute(const QualifiedName&amp;);
</del><span class="cx">     virtual void parseAttribute(const QualifiedName&amp;, const AtomicString&amp;) override;
</span><span class="cx">     virtual void svgAttributeChanged(const QualifiedName&amp;) override;
</span><span class="cx">     virtual PassRefPtr&lt;FilterEffect&gt; build(SVGFilterBuilder*, Filter*) override;
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFEImageElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFEImageElement.cpp (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFEImageElement.cpp        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGFEImageElement.cpp        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -22,7 +22,6 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;SVGFEImageElement.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;Attr.h&quot;
</del><span class="cx"> #include &quot;CachedImage.h&quot;
</span><span class="cx"> #include &quot;CachedResourceLoader.h&quot;
</span><span class="cx"> #include &quot;CachedResourceRequest.h&quot;
</span><span class="lines">@@ -34,7 +33,6 @@
</span><span class="cx"> #include &quot;SVGNames.h&quot;
</span><span class="cx"> #include &quot;SVGPreserveAspectRatio.h&quot;
</span><span class="cx"> #include &quot;XLinkNames.h&quot;
</span><del>-#include &lt;wtf/NeverDestroyed.h&gt;
</del><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -111,25 +109,8 @@
</span><span class="cx">     invalidate();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool SVGFEImageElement::isSupportedAttribute(const QualifiedName&amp; attrName)
-{
-    static NeverDestroyed&lt;HashSet&lt;QualifiedName&gt;&gt; supportedAttributes;
-    if (supportedAttributes.get().isEmpty()) {
-        SVGURIReference::addSupportedAttributes(supportedAttributes);
-        SVGLangSpace::addSupportedAttributes(supportedAttributes);
-        SVGExternalResourcesRequired::addSupportedAttributes(supportedAttributes);
-        supportedAttributes.get().add(SVGNames::preserveAspectRatioAttr);
-    }
-    return supportedAttributes.get().contains&lt;SVGAttributeHashTranslator&gt;(attrName);
-}
-
</del><span class="cx"> void SVGFEImageElement::parseAttribute(const QualifiedName&amp; name, const AtomicString&amp; value)
</span><span class="cx"> {
</span><del>-    if (!isSupportedAttribute(name)) {
-        SVGFilterPrimitiveStandardAttributes::parseAttribute(name, value);
-        return;
-    }
-
</del><span class="cx">     if (name == SVGNames::preserveAspectRatioAttr) {
</span><span class="cx">         SVGPreserveAspectRatio preserveAspectRatio;
</span><span class="cx">         preserveAspectRatio.parse(value);
</span><span class="lines">@@ -137,39 +118,26 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (SVGURIReference::parseAttribute(name, value))
-        return;
-    if (SVGLangSpace::parseAttribute(name, value))
-        return;
-    if (SVGExternalResourcesRequired::parseAttribute(name, value))
-        return;
-
-    ASSERT_NOT_REACHED();
</del><ins>+    SVGFilterPrimitiveStandardAttributes::parseAttribute(name, value);
+    SVGURIReference::parseAttribute(name, value);
+    SVGExternalResourcesRequired::parseAttribute(name, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void SVGFEImageElement::svgAttributeChanged(const QualifiedName&amp; attrName)
</span><span class="cx"> {
</span><del>-    if (!isSupportedAttribute(attrName)) {
-        SVGFilterPrimitiveStandardAttributes::svgAttributeChanged(attrName);
-        return;
-    }
-
-    InstanceInvalidationGuard guard(*this);
-    
</del><span class="cx">     if (attrName == SVGNames::preserveAspectRatioAttr) {
</span><ins>+        InstanceInvalidationGuard guard(*this);
</ins><span class="cx">         invalidate();
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (SVGURIReference::isKnownAttribute(attrName)) {
</span><ins>+        InstanceInvalidationGuard guard(*this);
</ins><span class="cx">         buildPendingResource();
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (SVGLangSpace::isKnownAttribute(attrName) || SVGExternalResourcesRequired::isKnownAttribute(attrName))
-        return;
-
-    ASSERT_NOT_REACHED();
</del><ins>+    SVGFilterPrimitiveStandardAttributes::svgAttributeChanged(attrName);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> Node::InsertionNotificationRequest SVGFEImageElement::insertedInto(ContainerNode&amp; rootParent)
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFEImageElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFEImageElement.h (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFEImageElement.h        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGFEImageElement.h        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -42,13 +42,11 @@
</span><span class="cx"> 
</span><span class="cx">     virtual ~SVGFEImageElement();
</span><span class="cx"> 
</span><del>-protected:
-    virtual void didNotifySubtreeInsertions(ContainerNode*) override;
-
</del><span class="cx"> private:
</span><span class="cx">     SVGFEImageElement(const QualifiedName&amp;, Document&amp;);
</span><span class="cx"> 
</span><del>-    bool isSupportedAttribute(const QualifiedName&amp;);
</del><ins>+    virtual void didNotifySubtreeInsertions(ContainerNode*) override;
+
</ins><span class="cx">     virtual void parseAttribute(const QualifiedName&amp;, const AtomicString&amp;) override;
</span><span class="cx">     virtual void svgAttributeChanged(const QualifiedName&amp;) override;
</span><span class="cx">     virtual void notifyFinished(CachedResource*) override;
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFELightElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFELightElement.cpp (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFELightElement.cpp        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGFELightElement.cpp        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -22,7 +22,6 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;SVGFELightElement.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;Attribute.h&quot;
</del><span class="cx"> #include &quot;ElementIterator.h&quot;
</span><span class="cx"> #include &quot;RenderObject.h&quot;
</span><span class="cx"> #include &quot;RenderSVGResource.h&quot;
</span><span class="lines">@@ -31,7 +30,6 @@
</span><span class="cx"> #include &quot;SVGFilterElement.h&quot;
</span><span class="cx"> #include &quot;SVGFilterPrimitiveStandardAttributes.h&quot;
</span><span class="cx"> #include &quot;SVGNames.h&quot;
</span><del>-#include &lt;wtf/NeverDestroyed.h&gt;
</del><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -84,31 +82,8 @@
</span><span class="cx">     return lightNode-&gt;lightSource();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool SVGFELightElement::isSupportedAttribute(const QualifiedName&amp; attrName)
-{
-    static NeverDestroyed&lt;HashSet&lt;QualifiedName&gt;&gt; supportedAttributes;
-    if (supportedAttributes.get().isEmpty()) {
-        supportedAttributes.get().add(SVGNames::azimuthAttr);
-        supportedAttributes.get().add(SVGNames::elevationAttr);
-        supportedAttributes.get().add(SVGNames::xAttr);
-        supportedAttributes.get().add(SVGNames::yAttr);
-        supportedAttributes.get().add(SVGNames::zAttr);
-        supportedAttributes.get().add(SVGNames::pointsAtXAttr);
-        supportedAttributes.get().add(SVGNames::pointsAtYAttr);
-        supportedAttributes.get().add(SVGNames::pointsAtZAttr);
-        supportedAttributes.get().add(SVGNames::specularExponentAttr);
-        supportedAttributes.get().add(SVGNames::limitingConeAngleAttr);
-    }
-    return supportedAttributes.get().contains&lt;SVGAttributeHashTranslator&gt;(attrName);
-}
-
</del><span class="cx"> void SVGFELightElement::parseAttribute(const QualifiedName&amp; name, const AtomicString&amp; value)
</span><span class="cx"> {
</span><del>-    if (!isSupportedAttribute(name)) {
-        SVGElement::parseAttribute(name, value);
-        return;
-    }
-
</del><span class="cx">     if (name == SVGNames::azimuthAttr) {
</span><span class="cx">         setAzimuthBaseValue(value.toFloat());
</span><span class="cx">         return;
</span><span class="lines">@@ -159,48 +134,36 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    ASSERT_NOT_REACHED();
</del><ins>+    SVGElement::parseAttribute(name, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void SVGFELightElement::svgAttributeChanged(const QualifiedName&amp; attrName)
</span><span class="cx"> {
</span><del>-    if (!isSupportedAttribute(attrName)) {
-        SVGElement::svgAttributeChanged(attrName);
-        return;
-    }
</del><ins>+    if (attrName == SVGNames::azimuthAttr || attrName == SVGNames::elevationAttr
+        || attrName == SVGNames::xAttr || attrName == SVGNames::yAttr || attrName == SVGNames::zAttr
+        || attrName == SVGNames::pointsAtXAttr || attrName == SVGNames::pointsAtYAttr || attrName == SVGNames::pointsAtZAttr
+        || attrName == SVGNames::specularExponentAttr || attrName == SVGNames::limitingConeAngleAttr) {
</ins><span class="cx"> 
</span><del>-    InstanceInvalidationGuard guard(*this);
-    
-    if (attrName == SVGNames::azimuthAttr
-        || attrName == SVGNames::elevationAttr
-        || attrName == SVGNames::xAttr
-        || attrName == SVGNames::yAttr
-        || attrName == SVGNames::zAttr
-        || attrName == SVGNames::pointsAtXAttr
-        || attrName == SVGNames::pointsAtYAttr
-        || attrName == SVGNames::pointsAtZAttr
-        || attrName == SVGNames::specularExponentAttr
-        || attrName == SVGNames::limitingConeAngleAttr) {
-        ContainerNode* parent = parentNode();
</del><ins>+        auto* parent = parentElement();
</ins><span class="cx">         if (!parent)
</span><span class="cx">             return;
</span><span class="cx"> 
</span><del>-        RenderObject* renderer = parent-&gt;renderer();
</del><ins>+        auto* renderer = parent-&gt;renderer();
</ins><span class="cx">         if (!renderer || !renderer-&gt;isSVGResourceFilterPrimitive())
</span><span class="cx">             return;
</span><span class="cx"> 
</span><del>-        if (parent-&gt;hasTagName(SVGNames::feDiffuseLightingTag)) {
-            SVGFEDiffuseLightingElement* diffuseLighting = static_cast&lt;SVGFEDiffuseLightingElement*&gt;(parent);
-            diffuseLighting-&gt;lightElementAttributeChanged(this, attrName);
-            return;
-        } else if (parent-&gt;hasTagName(SVGNames::feSpecularLightingTag)) {
-            SVGFESpecularLightingElement* specularLighting = static_cast&lt;SVGFESpecularLightingElement*&gt;(parent);
-            specularLighting-&gt;lightElementAttributeChanged(this, attrName);
-            return;
</del><ins>+        if (is&lt;SVGFEDiffuseLightingElement&gt;(*parent)) {
+            InstanceInvalidationGuard guard(*this);
+            downcast&lt;SVGFEDiffuseLightingElement&gt;(*parent).lightElementAttributeChanged(this, attrName);
+        } else if (is&lt;SVGFESpecularLightingElement&gt;(*parent)) {
+            InstanceInvalidationGuard guard(*this);
+            downcast&lt;SVGFESpecularLightingElement&gt;(*parent).lightElementAttributeChanged(this, attrName);
</ins><span class="cx">         }
</span><ins>+
+        return;
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    ASSERT_NOT_REACHED();
</del><ins>+    SVGElement::svgAttributeChanged(attrName);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void SVGFELightElement::childrenChanged(const ChildChange&amp; change)
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFELightElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFELightElement.h (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFELightElement.h        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGFELightElement.h        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -40,7 +40,6 @@
</span><span class="cx">     virtual bool rendererIsNeeded(const RenderStyle&amp;) override { return false; }
</span><span class="cx"> 
</span><span class="cx"> private:
</span><del>-    bool isSupportedAttribute(const QualifiedName&amp;);
</del><span class="cx">     virtual void parseAttribute(const QualifiedName&amp;, const AtomicString&amp;) override;
</span><span class="cx">     virtual void svgAttributeChanged(const QualifiedName&amp;) override;
</span><span class="cx">     virtual void childrenChanged(const ChildChange&amp;) override;
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFEMergeNodeElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFEMergeNodeElement.cpp (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFEMergeNodeElement.cpp        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGFEMergeNodeElement.cpp        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -21,13 +21,10 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;SVGFEMergeNodeElement.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;Attribute.h&quot;
-#include &quot;RenderObject.h&quot;
</del><span class="cx"> #include &quot;RenderSVGResource.h&quot;
</span><span class="cx"> #include &quot;SVGFilterElement.h&quot;
</span><span class="cx"> #include &quot;SVGFilterPrimitiveStandardAttributes.h&quot;
</span><span class="cx"> #include &quot;SVGNames.h&quot;
</span><del>-#include &lt;wtf/NeverDestroyed.h&gt;
</del><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -50,44 +47,25 @@
</span><span class="cx">     return adoptRef(*new SVGFEMergeNodeElement(tagName, document));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool SVGFEMergeNodeElement::isSupportedAttribute(const QualifiedName&amp; attrName)
-{
-    static NeverDestroyed&lt;HashSet&lt;QualifiedName&gt;&gt; supportedAttributes;
-    if (supportedAttributes.get().isEmpty())
-        supportedAttributes.get().add(SVGNames::inAttr);
-    return supportedAttributes.get().contains&lt;SVGAttributeHashTranslator&gt;(attrName);
-}
-
</del><span class="cx"> void SVGFEMergeNodeElement::parseAttribute(const QualifiedName&amp; name, const AtomicString&amp; value)
</span><span class="cx"> {
</span><del>-    if (!isSupportedAttribute(name)) {
-        SVGElement::parseAttribute(name, value);
-        return;
-    }
-
</del><span class="cx">     if (name == SVGNames::inAttr) {
</span><span class="cx">         setIn1BaseValue(value);
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    ASSERT_NOT_REACHED();
</del><ins>+    SVGElement::parseAttribute(name, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void SVGFEMergeNodeElement::svgAttributeChanged(const QualifiedName&amp; attrName)
</span><span class="cx"> {
</span><del>-    if (!isSupportedAttribute(attrName)) {
-        SVGElement::svgAttributeChanged(attrName);
-        return;
-    }
-
-    InstanceInvalidationGuard guard(*this);
-
</del><span class="cx">     if (attrName == SVGNames::inAttr) {
</span><ins>+        InstanceInvalidationGuard guard(*this);
</ins><span class="cx">         invalidateFilterPrimitiveParent(this);
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    ASSERT_NOT_REACHED();
</del><ins>+    SVGElement::svgAttributeChanged(attrName);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFEMergeNodeElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFEMergeNodeElement.h (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFEMergeNodeElement.h        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGFEMergeNodeElement.h        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -33,10 +33,8 @@
</span><span class="cx"> private:
</span><span class="cx">     SVGFEMergeNodeElement(const QualifiedName&amp;, Document&amp;);
</span><span class="cx"> 
</span><del>-    bool isSupportedAttribute(const QualifiedName&amp;);
</del><span class="cx">     virtual void parseAttribute(const QualifiedName&amp;, const AtomicString&amp;) override;
</span><span class="cx">     virtual void svgAttributeChanged(const QualifiedName&amp;) override;
</span><del>-
</del><span class="cx">     virtual bool rendererIsNeeded(const RenderStyle&amp;) override { return false; }
</span><span class="cx"> 
</span><span class="cx">     BEGIN_DECLARE_ANIMATED_PROPERTIES(SVGFEMergeNodeElement)
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFEMorphologyElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFEMorphologyElement.cpp (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFEMorphologyElement.cpp        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGFEMorphologyElement.cpp        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -20,12 +20,10 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;SVGFEMorphologyElement.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;Attribute.h&quot;
</del><span class="cx"> #include &quot;FilterEffect.h&quot;
</span><span class="cx"> #include &quot;SVGFilterBuilder.h&quot;
</span><span class="cx"> #include &quot;SVGNames.h&quot;
</span><span class="cx"> #include &quot;SVGParserUtilities.h&quot;
</span><del>-#include &lt;wtf/NeverDestroyed.h&gt;
</del><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -75,24 +73,8 @@
</span><span class="cx">     invalidate();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool SVGFEMorphologyElement::isSupportedAttribute(const QualifiedName&amp; attrName)
-{
-    static NeverDestroyed&lt;HashSet&lt;QualifiedName&gt;&gt; supportedAttributes;
-    if (supportedAttributes.get().isEmpty()) {
-        supportedAttributes.get().add(SVGNames::inAttr);
-        supportedAttributes.get().add(SVGNames::operatorAttr);
-        supportedAttributes.get().add(SVGNames::radiusAttr);
-    }
-    return supportedAttributes.get().contains&lt;SVGAttributeHashTranslator&gt;(attrName);
-}
-
</del><span class="cx"> void SVGFEMorphologyElement::parseAttribute(const QualifiedName&amp; name, const AtomicString&amp; value)
</span><span class="cx"> {
</span><del>-    if (!isSupportedAttribute(name)) {
-        SVGFilterPrimitiveStandardAttributes::parseAttribute(name, value);
-        return;
-    }
-
</del><span class="cx">     if (name == SVGNames::operatorAttr) {
</span><span class="cx">         MorphologyOperatorType propertyValue = SVGPropertyTraits&lt;MorphologyOperatorType&gt;::fromString(value);
</span><span class="cx">         if (propertyValue &gt; 0)
</span><span class="lines">@@ -114,7 +96,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    ASSERT_NOT_REACHED();
</del><ins>+    SVGFilterPrimitiveStandardAttributes::parseAttribute(name, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool SVGFEMorphologyElement::setFilterEffectAttribute(FilterEffect* effect, const QualifiedName&amp; attrName)
</span><span class="lines">@@ -135,24 +117,19 @@
</span><span class="cx"> 
</span><span class="cx"> void SVGFEMorphologyElement::svgAttributeChanged(const QualifiedName&amp; attrName)
</span><span class="cx"> {
</span><del>-    if (!isSupportedAttribute(attrName)) {
-        SVGFilterPrimitiveStandardAttributes::svgAttributeChanged(attrName);
-        return;
-    }
-
-    InstanceInvalidationGuard guard(*this);
-    
</del><span class="cx">     if (attrName == SVGNames::operatorAttr || attrName == SVGNames::radiusAttr) {
</span><ins>+        InstanceInvalidationGuard guard(*this);
</ins><span class="cx">         primitiveAttributeChanged(attrName);
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (attrName == SVGNames::inAttr) {
</span><ins>+        InstanceInvalidationGuard guard(*this);
</ins><span class="cx">         invalidate();
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    ASSERT_NOT_REACHED();
</del><ins>+    SVGFilterPrimitiveStandardAttributes::svgAttributeChanged(attrName);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> PassRefPtr&lt;FilterEffect&gt; SVGFEMorphologyElement::build(SVGFilterBuilder* filterBuilder, Filter* filter)
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFEMorphologyElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFEMorphologyElement.h (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFEMorphologyElement.h        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGFEMorphologyElement.h        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -65,7 +65,6 @@
</span><span class="cx"> private:
</span><span class="cx">     SVGFEMorphologyElement(const QualifiedName&amp;, Document&amp;);
</span><span class="cx"> 
</span><del>-    bool isSupportedAttribute(const QualifiedName&amp;);
</del><span class="cx">     virtual void parseAttribute(const QualifiedName&amp;, const AtomicString&amp;) override;
</span><span class="cx">     virtual bool setFilterEffectAttribute(FilterEffect*, const QualifiedName&amp;) override;
</span><span class="cx">     virtual void svgAttributeChanged(const QualifiedName&amp;) override;
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFEOffsetElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFEOffsetElement.cpp (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFEOffsetElement.cpp        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGFEOffsetElement.cpp        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -21,11 +21,9 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;SVGFEOffsetElement.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;Attribute.h&quot;
</del><span class="cx"> #include &quot;FilterEffect.h&quot;
</span><span class="cx"> #include &quot;SVGFilterBuilder.h&quot;
</span><span class="cx"> #include &quot;SVGNames.h&quot;
</span><del>-#include &lt;wtf/NeverDestroyed.h&gt;
</del><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -53,24 +51,8 @@
</span><span class="cx">     return adoptRef(*new SVGFEOffsetElement(tagName, document));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool SVGFEOffsetElement::isSupportedAttribute(const QualifiedName&amp; attrName)
-{
-    static NeverDestroyed&lt;HashSet&lt;QualifiedName&gt;&gt; supportedAttributes;
-    if (supportedAttributes.get().isEmpty()) {
-        supportedAttributes.get().add(SVGNames::inAttr);
-        supportedAttributes.get().add(SVGNames::dxAttr);
-        supportedAttributes.get().add(SVGNames::dyAttr);
-    }
-    return supportedAttributes.get().contains&lt;SVGAttributeHashTranslator&gt;(attrName);
-}
-
</del><span class="cx"> void SVGFEOffsetElement::parseAttribute(const QualifiedName&amp; name, const AtomicString&amp; value)
</span><span class="cx"> {
</span><del>-    if (!isSupportedAttribute(name)) {
-        SVGFilterPrimitiveStandardAttributes::parseAttribute(name, value);
-        return;
-    }
-
</del><span class="cx">     if (name == SVGNames::dxAttr) {
</span><span class="cx">         setDxBaseValue(value.toFloat());
</span><span class="cx">         return;
</span><span class="lines">@@ -86,24 +68,18 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    ASSERT_NOT_REACHED();
</del><ins>+    SVGFilterPrimitiveStandardAttributes::parseAttribute(name, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void SVGFEOffsetElement::svgAttributeChanged(const QualifiedName&amp; attrName)
</span><span class="cx"> {
</span><del>-    if (!isSupportedAttribute(attrName)) {
-        SVGFilterPrimitiveStandardAttributes::svgAttributeChanged(attrName);
-        return;
-    }
-
-    InstanceInvalidationGuard guard(*this);
-    
</del><span class="cx">     if (attrName == SVGNames::inAttr || attrName == SVGNames::dxAttr || attrName == SVGNames::dyAttr) {
</span><ins>+        InstanceInvalidationGuard guard(*this);
</ins><span class="cx">         invalidate();
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    ASSERT_NOT_REACHED();
</del><ins>+    SVGFilterPrimitiveStandardAttributes::svgAttributeChanged(attrName);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> PassRefPtr&lt;FilterEffect&gt; SVGFEOffsetElement::build(SVGFilterBuilder* filterBuilder, Filter* filter)
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFEOffsetElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFEOffsetElement.h (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFEOffsetElement.h        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGFEOffsetElement.h        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -34,7 +34,6 @@
</span><span class="cx"> private:
</span><span class="cx">     SVGFEOffsetElement(const QualifiedName&amp;, Document&amp;);
</span><span class="cx"> 
</span><del>-    bool isSupportedAttribute(const QualifiedName&amp;);
</del><span class="cx">     virtual void parseAttribute(const QualifiedName&amp;, const AtomicString&amp;) override;
</span><span class="cx">     virtual void svgAttributeChanged(const QualifiedName&amp;) override;
</span><span class="cx">     virtual PassRefPtr&lt;FilterEffect&gt; build(SVGFilterBuilder*, Filter*) override;
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFESpecularLightingElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFESpecularLightingElement.cpp (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFESpecularLightingElement.cpp        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGFESpecularLightingElement.cpp        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -22,7 +22,6 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;SVGFESpecularLightingElement.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;Attribute.h&quot;
</del><span class="cx"> #include &quot;FilterEffect.h&quot;
</span><span class="cx"> #include &quot;RenderStyle.h&quot;
</span><span class="cx"> #include &quot;SVGColor.h&quot;
</span><span class="lines">@@ -30,7 +29,6 @@
</span><span class="cx"> #include &quot;SVGFilterBuilder.h&quot;
</span><span class="cx"> #include &quot;SVGNames.h&quot;
</span><span class="cx"> #include &quot;SVGParserUtilities.h&quot;
</span><del>-#include &lt;wtf/NeverDestroyed.h&gt;
</del><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -79,26 +77,8 @@
</span><span class="cx">     return s_identifier;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool SVGFESpecularLightingElement::isSupportedAttribute(const QualifiedName&amp; attrName)
-{
-    static NeverDestroyed&lt;HashSet&lt;QualifiedName&gt;&gt; supportedAttributes;
-    if (supportedAttributes.get().isEmpty()) {
-        supportedAttributes.get().add(SVGNames::inAttr);
-        supportedAttributes.get().add(SVGNames::specularConstantAttr);
-        supportedAttributes.get().add(SVGNames::specularExponentAttr);
-        supportedAttributes.get().add(SVGNames::surfaceScaleAttr);
-        supportedAttributes.get().add(SVGNames::kernelUnitLengthAttr);
-    }
-    return supportedAttributes.get().contains&lt;SVGAttributeHashTranslator&gt;(attrName);
-}
-
</del><span class="cx"> void SVGFESpecularLightingElement::parseAttribute(const QualifiedName&amp; name, const AtomicString&amp; value)
</span><span class="cx"> {
</span><del>-    if (!isSupportedAttribute(name)) {
-        SVGFilterPrimitiveStandardAttributes::parseAttribute(name, value);
-        return;
-    }
-
</del><span class="cx">     if (name == SVGNames::inAttr) {
</span><span class="cx">         setIn1BaseValue(value);
</span><span class="cx">         return;
</span><span class="lines">@@ -128,7 +108,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    ASSERT_NOT_REACHED();
</del><ins>+    SVGFilterPrimitiveStandardAttributes::parseAttribute(name, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool SVGFESpecularLightingElement::setFilterEffectAttribute(FilterEffect* effect, const QualifiedName&amp; attrName)
</span><span class="lines">@@ -179,27 +159,19 @@
</span><span class="cx"> 
</span><span class="cx"> void SVGFESpecularLightingElement::svgAttributeChanged(const QualifiedName&amp; attrName)
</span><span class="cx"> {
</span><del>-    if (!isSupportedAttribute(attrName)) {
-        SVGFilterPrimitiveStandardAttributes::svgAttributeChanged(attrName);
-        return;
-    }
-
-    InstanceInvalidationGuard guard(*this);
-    
-    if (attrName == SVGNames::surfaceScaleAttr
-        || attrName == SVGNames::specularConstantAttr
-        || attrName == SVGNames::specularExponentAttr
-        || attrName == SVGNames::kernelUnitLengthAttr) {
</del><ins>+    if (attrName == SVGNames::surfaceScaleAttr || attrName == SVGNames::specularConstantAttr || attrName == SVGNames::specularExponentAttr || attrName == SVGNames::kernelUnitLengthAttr) {
+        InstanceInvalidationGuard guard(*this);
</ins><span class="cx">         primitiveAttributeChanged(attrName);
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (attrName == SVGNames::inAttr) {
</span><ins>+        InstanceInvalidationGuard guard(*this);
</ins><span class="cx">         invalidate();
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    ASSERT_NOT_REACHED();
</del><ins>+    SVGFilterPrimitiveStandardAttributes::svgAttributeChanged(attrName);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void SVGFESpecularLightingElement::lightElementAttributeChanged(const SVGFELightElement* lightElement, const QualifiedName&amp; attrName)
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFESpecularLightingElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFESpecularLightingElement.h (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFESpecularLightingElement.h        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGFESpecularLightingElement.h        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -37,7 +37,6 @@
</span><span class="cx"> private:
</span><span class="cx">     SVGFESpecularLightingElement(const QualifiedName&amp;, Document&amp;);
</span><span class="cx">     
</span><del>-    bool isSupportedAttribute(const QualifiedName&amp;);
</del><span class="cx">     virtual void parseAttribute(const QualifiedName&amp;, const AtomicString&amp;) override;
</span><span class="cx">     virtual bool setFilterEffectAttribute(FilterEffect*, const QualifiedName&amp;) override;
</span><span class="cx">     virtual void svgAttributeChanged(const QualifiedName&amp;) override;
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFETileElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFETileElement.cpp (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFETileElement.cpp        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGFETileElement.cpp        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -21,12 +21,10 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;SVGFETileElement.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;Attribute.h&quot;
</del><span class="cx"> #include &quot;FilterEffect.h&quot;
</span><span class="cx"> #include &quot;SVGFilterBuilder.h&quot;
</span><span class="cx"> #include &quot;SVGNames.h&quot;
</span><span class="cx"> #include &quot;SVGRenderStyle.h&quot;
</span><del>-#include &lt;wtf/NeverDestroyed.h&gt;
</del><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -50,44 +48,25 @@
</span><span class="cx">     return adoptRef(*new SVGFETileElement(tagName, document));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool SVGFETileElement::isSupportedAttribute(const QualifiedName&amp; attrName)
-{
-    static NeverDestroyed&lt;HashSet&lt;QualifiedName&gt;&gt; supportedAttributes;
-    if (supportedAttributes.get().isEmpty())
-        supportedAttributes.get().add(SVGNames::inAttr);
-    return supportedAttributes.get().contains&lt;SVGAttributeHashTranslator&gt;(attrName);
-}
-
</del><span class="cx"> void SVGFETileElement::parseAttribute(const QualifiedName&amp; name, const AtomicString&amp; value)
</span><span class="cx"> {
</span><del>-    if (!isSupportedAttribute(name)) {
-        SVGFilterPrimitiveStandardAttributes::parseAttribute(name, value);
-        return;
-    }
-
</del><span class="cx">     if (name == SVGNames::inAttr) {
</span><span class="cx">         setIn1BaseValue(value);
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    ASSERT_NOT_REACHED();
</del><ins>+    SVGFilterPrimitiveStandardAttributes::parseAttribute(name, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void SVGFETileElement::svgAttributeChanged(const QualifiedName&amp; attrName)
</span><span class="cx"> {
</span><del>-    if (!isSupportedAttribute(attrName)) {
-        SVGFilterPrimitiveStandardAttributes::svgAttributeChanged(attrName);
-        return;
-    }
-
-    InstanceInvalidationGuard guard(*this);
-
</del><span class="cx">     if (attrName == SVGNames::inAttr) {
</span><ins>+        InstanceInvalidationGuard guard(*this);
</ins><span class="cx">         invalidate();
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    ASSERT_NOT_REACHED();
</del><ins>+    SVGFilterPrimitiveStandardAttributes::svgAttributeChanged(attrName);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> PassRefPtr&lt;FilterEffect&gt; SVGFETileElement::build(SVGFilterBuilder* filterBuilder, Filter* filter)
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFETileElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFETileElement.h (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFETileElement.h        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGFETileElement.h        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -33,7 +33,6 @@
</span><span class="cx"> private:
</span><span class="cx">     SVGFETileElement(const QualifiedName&amp;, Document&amp;);
</span><span class="cx"> 
</span><del>-    bool isSupportedAttribute(const QualifiedName&amp;);
</del><span class="cx">     virtual void parseAttribute(const QualifiedName&amp;, const AtomicString&amp;) override;
</span><span class="cx">     virtual void svgAttributeChanged(const QualifiedName&amp;) override;
</span><span class="cx">     virtual PassRefPtr&lt;FilterEffect&gt; build(SVGFilterBuilder*, Filter*) override;
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFETurbulenceElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFETurbulenceElement.cpp (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFETurbulenceElement.cpp        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGFETurbulenceElement.cpp        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -21,10 +21,8 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;SVGFETurbulenceElement.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;Attribute.h&quot;
</del><span class="cx"> #include &quot;SVGNames.h&quot;
</span><span class="cx"> #include &quot;SVGParserUtilities.h&quot;
</span><del>-#include &lt;wtf/NeverDestroyed.h&gt;
</del><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -73,26 +71,8 @@
</span><span class="cx">     return s_identifier;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool SVGFETurbulenceElement::isSupportedAttribute(const QualifiedName&amp; attrName)
-{
-    static NeverDestroyed&lt;HashSet&lt;QualifiedName&gt;&gt; supportedAttributes;
-    if (supportedAttributes.get().isEmpty()) {
-        supportedAttributes.get().add(SVGNames::baseFrequencyAttr);
-        supportedAttributes.get().add(SVGNames::numOctavesAttr);
-        supportedAttributes.get().add(SVGNames::seedAttr);
-        supportedAttributes.get().add(SVGNames::stitchTilesAttr);
-        supportedAttributes.get().add(SVGNames::typeAttr);
-    }
-    return supportedAttributes.get().contains&lt;SVGAttributeHashTranslator&gt;(attrName);
-}
-
</del><span class="cx"> void SVGFETurbulenceElement::parseAttribute(const QualifiedName&amp; name, const AtomicString&amp; value)
</span><span class="cx"> {
</span><del>-    if (!isSupportedAttribute(name)) {
-        SVGFilterPrimitiveStandardAttributes::parseAttribute(name, value);
-        return;
-    }
-
</del><span class="cx">     if (name == SVGNames::typeAttr) {
</span><span class="cx">         TurbulenceType propertyValue = SVGPropertyTraits&lt;TurbulenceType&gt;::fromString(value);
</span><span class="cx">         if (propertyValue &gt; 0)
</span><span class="lines">@@ -126,7 +106,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    ASSERT_NOT_REACHED();
</del><ins>+    SVGFilterPrimitiveStandardAttributes::parseAttribute(name, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool SVGFETurbulenceElement::setFilterEffectAttribute(FilterEffect* effect, const QualifiedName&amp; attrName)
</span><span class="lines">@@ -149,23 +129,13 @@
</span><span class="cx"> 
</span><span class="cx"> void SVGFETurbulenceElement::svgAttributeChanged(const QualifiedName&amp; attrName)
</span><span class="cx"> {
</span><del>-    if (!isSupportedAttribute(attrName)) {
-        SVGFilterPrimitiveStandardAttributes::svgAttributeChanged(attrName);
-        return;
-    }
-
-    InstanceInvalidationGuard guard(*this);
-    
-    if (attrName == SVGNames::baseFrequencyAttr
-        || attrName == SVGNames::numOctavesAttr
-        || attrName == SVGNames::seedAttr
-        || attrName == SVGNames::stitchTilesAttr
-        || attrName == SVGNames::typeAttr) {
</del><ins>+    if (attrName == SVGNames::baseFrequencyAttr || attrName == SVGNames::numOctavesAttr || attrName == SVGNames::seedAttr || attrName == SVGNames::stitchTilesAttr || attrName == SVGNames::typeAttr) {
+        InstanceInvalidationGuard guard(*this);
</ins><span class="cx">         primitiveAttributeChanged(attrName);
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    ASSERT_NOT_REACHED();
</del><ins>+    SVGFilterPrimitiveStandardAttributes::svgAttributeChanged(attrName);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> PassRefPtr&lt;FilterEffect&gt; SVGFETurbulenceElement::build(SVGFilterBuilder*, Filter* filter)
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFETurbulenceElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFETurbulenceElement.h (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFETurbulenceElement.h        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGFETurbulenceElement.h        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -100,7 +100,6 @@
</span><span class="cx"> private:
</span><span class="cx">     SVGFETurbulenceElement(const QualifiedName&amp;, Document&amp;);
</span><span class="cx"> 
</span><del>-    bool isSupportedAttribute(const QualifiedName&amp;);
</del><span class="cx">     virtual void parseAttribute(const QualifiedName&amp;, const AtomicString&amp;) override;
</span><span class="cx">     virtual bool setFilterEffectAttribute(FilterEffect*, const QualifiedName&amp; attrName) override;
</span><span class="cx">     virtual void svgAttributeChanged(const QualifiedName&amp;) override;
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFilterElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFilterElement.cpp (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFilterElement.cpp        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGFilterElement.cpp        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -25,7 +25,6 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;SVGFilterElement.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;Attr.h&quot;
</del><span class="cx"> #include &quot;RenderSVGResourceFilter.h&quot;
</span><span class="cx"> #include &quot;SVGFilterBuilder.h&quot;
</span><span class="cx"> #include &quot;SVGFilterPrimitiveStandardAttributes.h&quot;
</span><span class="lines">@@ -124,9 +123,7 @@
</span><span class="cx"> {
</span><span class="cx">     SVGParsingError parseError = NoError;
</span><span class="cx"> 
</span><del>-    if (!isSupportedAttribute(name))
-        SVGElement::parseAttribute(name, value);
-    else if (name == SVGNames::filterUnitsAttr) {
</del><ins>+    if (name == SVGNames::filterUnitsAttr) {
</ins><span class="cx">         SVGUnitTypes::SVGUnitType propertyValue = SVGPropertyTraits&lt;SVGUnitTypes::SVGUnitType&gt;::fromString(value);
</span><span class="cx">         if (propertyValue &gt; 0)
</span><span class="cx">             setFilterUnitsBaseValue(propertyValue);
</span><span class="lines">@@ -148,13 +145,13 @@
</span><span class="cx">             setFilterResXBaseValue(x);
</span><span class="cx">             setFilterResYBaseValue(y);
</span><span class="cx">         }
</span><del>-    } else if (SVGURIReference::parseAttribute(name, value)
-             || SVGLangSpace::parseAttribute(name, value)
-             || SVGExternalResourcesRequired::parseAttribute(name, value)) {
-    } else
-        ASSERT_NOT_REACHED();
</del><ins>+    }
</ins><span class="cx"> 
</span><span class="cx">     reportAttributeParsingError(parseError, name, value);
</span><ins>+
+    SVGElement::parseAttribute(name, value);
+    SVGURIReference::parseAttribute(name, value);
+    SVGExternalResourcesRequired::parseAttribute(name, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void SVGFilterElement::svgAttributeChanged(const QualifiedName&amp; attrName)
</span><span class="lines">@@ -166,16 +163,13 @@
</span><span class="cx"> 
</span><span class="cx">     InstanceInvalidationGuard guard(*this);
</span><span class="cx"> 
</span><del>-    if (attrName == SVGNames::xAttr
-        || attrName == SVGNames::yAttr
-        || attrName == SVGNames::widthAttr
-        || attrName == SVGNames::heightAttr) {
</del><ins>+    if (attrName == SVGNames::xAttr || attrName == SVGNames::yAttr || attrName == SVGNames::widthAttr || attrName == SVGNames::heightAttr) {
</ins><span class="cx">         invalidateSVGPresentationAttributeStyle();
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (RenderObject* object = renderer())
-        object-&gt;setNeedsLayout();
</del><ins>+    if (auto* renderer = this-&gt;renderer())
+        renderer-&gt;setNeedsLayout();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void SVGFilterElement::childrenChanged(const ChildChange&amp; change)
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFilterElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFilterElement.h (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFilterElement.h        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGFilterElement.h        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -48,7 +48,7 @@
</span><span class="cx"> 
</span><span class="cx">     virtual bool needsPendingResourceHandling() const override { return false; }
</span><span class="cx"> 
</span><del>-    bool isSupportedAttribute(const QualifiedName&amp;);
</del><ins>+    static bool isSupportedAttribute(const QualifiedName&amp;);
</ins><span class="cx">     virtual void parseAttribute(const QualifiedName&amp;, const AtomicString&amp;) override;
</span><span class="cx">     virtual void svgAttributeChanged(const QualifiedName&amp;) override;
</span><span class="cx">     virtual void childrenChanged(const ChildChange&amp;) override;
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFilterPrimitiveStandardAttributescpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFilterPrimitiveStandardAttributes.cpp (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFilterPrimitiveStandardAttributes.cpp        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGFilterPrimitiveStandardAttributes.cpp        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -22,7 +22,6 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;SVGFilterPrimitiveStandardAttributes.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;Attribute.h&quot;
</del><span class="cx"> #include &quot;FilterEffect.h&quot;
</span><span class="cx"> #include &quot;RenderSVGResourceFilterPrimitive.h&quot;
</span><span class="cx"> #include &quot;SVGElement.h&quot;
</span><span class="lines">@@ -79,9 +78,7 @@
</span><span class="cx"> {
</span><span class="cx">     SVGParsingError parseError = NoError;
</span><span class="cx"> 
</span><del>-    if (!isSupportedAttribute(name))
-        SVGElement::parseAttribute(name, value);
-    else if (name == SVGNames::xAttr)
</del><ins>+    if (name == SVGNames::xAttr)
</ins><span class="cx">         setXBaseValue(SVGLength::construct(LengthModeWidth, value, parseError));
</span><span class="cx">     else if (name == SVGNames::yAttr)
</span><span class="cx">         setYBaseValue(SVGLength::construct(LengthModeHeight, value, parseError));
</span><span class="lines">@@ -91,10 +88,10 @@
</span><span class="cx">         setHeightBaseValue(SVGLength::construct(LengthModeHeight, value, parseError));
</span><span class="cx">     else if (name == SVGNames::resultAttr)
</span><span class="cx">         setResultBaseValue(value);
</span><del>-    else
-        ASSERT_NOT_REACHED();
</del><span class="cx"> 
</span><span class="cx">     reportAttributeParsingError(parseError, name, value);
</span><ins>+
+    SVGElement::parseAttribute(name, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool SVGFilterPrimitiveStandardAttributes::setFilterEffectAttribute(FilterEffect*, const QualifiedName&amp;)
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFilterPrimitiveStandardAttributesh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFilterPrimitiveStandardAttributes.h (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFilterPrimitiveStandardAttributes.h        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGFilterPrimitiveStandardAttributes.h        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -47,23 +47,13 @@
</span><span class="cx"> protected:
</span><span class="cx">     SVGFilterPrimitiveStandardAttributes(const QualifiedName&amp;, Document&amp;);
</span><span class="cx"> 
</span><del>-    bool isSupportedAttribute(const QualifiedName&amp;);
</del><span class="cx">     virtual void parseAttribute(const QualifiedName&amp;, const AtomicString&amp;) override;
</span><span class="cx">     virtual void svgAttributeChanged(const QualifiedName&amp;) override;
</span><span class="cx">     virtual void childrenChanged(const ChildChange&amp;) override;
</span><span class="cx"> 
</span><del>-    inline void invalidate()
-    {
-        if (RenderElement* primitiveRenderer = renderer())
-            RenderSVGResource::markForLayoutAndParentResourceInvalidation(*primitiveRenderer);
-    }
</del><ins>+    void invalidate();
+    void primitiveAttributeChanged(const QualifiedName&amp; attributeName);
</ins><span class="cx"> 
</span><del>-    inline void primitiveAttributeChanged(const QualifiedName&amp; attribute)
-    {
-        if (RenderElement* primitiveRenderer = renderer())
-            static_cast&lt;RenderSVGResourceFilterPrimitive*&gt;(primitiveRenderer)-&gt;primitiveAttributeChanged(attribute);
-    }
-
</del><span class="cx"> private:
</span><span class="cx">     virtual bool isFilterEffect() const override { return true; }
</span><span class="cx"> 
</span><span class="lines">@@ -71,6 +61,8 @@
</span><span class="cx">     virtual bool rendererIsNeeded(const RenderStyle&amp;) override;
</span><span class="cx">     virtual bool childShouldCreateRenderer(const Node&amp;) const override { return false; }
</span><span class="cx"> 
</span><ins>+    static bool isSupportedAttribute(const QualifiedName&amp;);
+
</ins><span class="cx">     BEGIN_DECLARE_ANIMATED_PROPERTIES(SVGFilterPrimitiveStandardAttributes)
</span><span class="cx">         DECLARE_ANIMATED_LENGTH(X, x)
</span><span class="cx">         DECLARE_ANIMATED_LENGTH(Y, y)
</span><span class="lines">@@ -82,6 +74,18 @@
</span><span class="cx"> 
</span><span class="cx"> void invalidateFilterPrimitiveParent(SVGElement*);
</span><span class="cx"> 
</span><ins>+inline void SVGFilterPrimitiveStandardAttributes::invalidate()
+{
+    if (auto* primitiveRenderer = renderer())
+        RenderSVGResource::markForLayoutAndParentResourceInvalidation(*primitiveRenderer);
+}
+
+inline void SVGFilterPrimitiveStandardAttributes::primitiveAttributeChanged(const QualifiedName&amp; attribute)
+{
+    if (auto* primitiveRenderer = renderer())
+        static_cast&lt;RenderSVGResourceFilterPrimitive*&gt;(primitiveRenderer)-&gt;primitiveAttributeChanged(attribute);
+}
+
</ins><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><span class="cx"> SPECIALIZE_TYPE_TRAITS_BEGIN(WebCore::SVGFilterPrimitiveStandardAttributes)
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFitToViewBoxcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFitToViewBox.cpp (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFitToViewBox.cpp        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGFitToViewBox.cpp        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -22,7 +22,6 @@
</span><span class="cx"> #include &quot;SVGFitToViewBox.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #include &quot;AffineTransform.h&quot;
</span><del>-#include &quot;Attribute.h&quot;
</del><span class="cx"> #include &quot;Document.h&quot;
</span><span class="cx"> #include &quot;FloatRect.h&quot;
</span><span class="cx"> #include &quot;SVGDocumentExtensions.h&quot;
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFontFaceElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFontFaceElement.cpp (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFontFaceElement.cpp        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGFontFaceElement.cpp        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -24,7 +24,6 @@
</span><span class="cx"> #if ENABLE(SVG_FONTS)
</span><span class="cx"> #include &quot;SVGFontFaceElement.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;Attribute.h&quot;
</del><span class="cx"> #include &quot;CSSFontFaceSrcValue.h&quot;
</span><span class="cx"> #include &quot;CSSParser.h&quot;
</span><span class="cx"> #include &quot;CSSPropertyNames.h&quot;
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGFontFaceUriElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGFontFaceUriElement.cpp (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGFontFaceUriElement.cpp        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGFontFaceUriElement.cpp        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -23,7 +23,6 @@
</span><span class="cx"> #if ENABLE(SVG_FONTS)
</span><span class="cx"> #include &quot;SVGFontFaceUriElement.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;Attribute.h&quot;
</del><span class="cx"> #include &quot;CSSFontFaceSrcValue.h&quot;
</span><span class="cx"> #include &quot;CachedFont.h&quot;
</span><span class="cx"> #include &quot;CachedResourceLoader.h&quot;
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGForeignObjectElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGForeignObjectElement.cpp (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGForeignObjectElement.cpp        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGForeignObjectElement.cpp        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -22,7 +22,6 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;SVGForeignObjectElement.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;Attribute.h&quot;
</del><span class="cx"> #include &quot;CSSPropertyNames.h&quot;
</span><span class="cx"> #include &quot;RenderSVGForeignObject.h&quot;
</span><span class="cx"> #include &quot;RenderSVGResource.h&quot;
</span><span class="lines">@@ -86,9 +85,7 @@
</span><span class="cx"> {
</span><span class="cx">     SVGParsingError parseError = NoError;
</span><span class="cx"> 
</span><del>-    if (!isSupportedAttribute(name))
-        SVGGraphicsElement::parseAttribute(name, value);
-    else if (name == SVGNames::xAttr)
</del><ins>+    if (name == SVGNames::xAttr)
</ins><span class="cx">         setXBaseValue(SVGLength::construct(LengthModeWidth, value, parseError));
</span><span class="cx">     else if (name == SVGNames::yAttr)
</span><span class="cx">         setYBaseValue(SVGLength::construct(LengthModeHeight, value, parseError));
</span><span class="lines">@@ -96,12 +93,11 @@
</span><span class="cx">         setWidthBaseValue(SVGLength::construct(LengthModeWidth, value, parseError));
</span><span class="cx">     else if (name == SVGNames::heightAttr)
</span><span class="cx">         setHeightBaseValue(SVGLength::construct(LengthModeHeight, value, parseError));
</span><del>-    else if (SVGLangSpace::parseAttribute(name, value)
-               || SVGExternalResourcesRequired::parseAttribute(name, value)) {
-    } else
-        ASSERT_NOT_REACHED();
</del><span class="cx"> 
</span><span class="cx">     reportAttributeParsingError(parseError, name, value);
</span><ins>+
+    SVGGraphicsElement::parseAttribute(name, value);
+    SVGExternalResourcesRequired::parseAttribute(name, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void SVGForeignObjectElement::svgAttributeChanged(const QualifiedName&amp; attrName)
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGForeignObjectElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGForeignObjectElement.h (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGForeignObjectElement.h        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGForeignObjectElement.h        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -38,7 +38,7 @@
</span><span class="cx">     SVGForeignObjectElement(const QualifiedName&amp;, Document&amp;);
</span><span class="cx"> 
</span><span class="cx">     virtual bool isValid() const override { return SVGTests::isValid(); }
</span><del>-    bool isSupportedAttribute(const QualifiedName&amp;);
</del><ins>+    static bool isSupportedAttribute(const QualifiedName&amp;);
</ins><span class="cx">     virtual void parseAttribute(const QualifiedName&amp;, const AtomicString&amp;) override;
</span><span class="cx">     virtual void svgAttributeChanged(const QualifiedName&amp;) override;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGGElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGGElement.cpp (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGGElement.cpp        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGGElement.cpp        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -66,17 +66,8 @@
</span><span class="cx"> 
</span><span class="cx"> void SVGGElement::parseAttribute(const QualifiedName&amp; name, const AtomicString&amp; value)
</span><span class="cx"> {
</span><del>-    if (!isSupportedAttribute(name)) {
-        SVGGraphicsElement::parseAttribute(name, value);
-        return;
-    }
-
-    if (SVGLangSpace::parseAttribute(name, value))
-        return;
-    if (SVGExternalResourcesRequired::parseAttribute(name, value))
-        return;
-
-    ASSERT_NOT_REACHED();
</del><ins>+    SVGGraphicsElement::parseAttribute(name, value);
+    SVGExternalResourcesRequired::parseAttribute(name, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void SVGGElement::svgAttributeChanged(const QualifiedName&amp; attrName)
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGGElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGGElement.h (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGGElement.h        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGGElement.h        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -40,7 +40,7 @@
</span><span class="cx"> 
</span><span class="cx">     virtual bool isValid() const override { return SVGTests::isValid(); }
</span><span class="cx"> 
</span><del>-    bool isSupportedAttribute(const QualifiedName&amp;);
</del><ins>+    static bool isSupportedAttribute(const QualifiedName&amp;);
</ins><span class="cx">     virtual void parseAttribute(const QualifiedName&amp;, const AtomicString&amp;) override;
</span><span class="cx">     virtual void svgAttributeChanged(const QualifiedName&amp;) override;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGGlyphElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGGlyphElement.cpp (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGGlyphElement.cpp        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGGlyphElement.cpp        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -24,7 +24,6 @@
</span><span class="cx"> #if ENABLE(SVG_FONTS)
</span><span class="cx"> #include &quot;SVGGlyphElement.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;Attribute.h&quot;
</del><span class="cx"> #include &quot;SVGFontData.h&quot;
</span><span class="cx"> #include &quot;SVGFontElement.h&quot;
</span><span class="cx"> #include &quot;SVGFontFaceElement.h&quot;
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGGlyphRefElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGGlyphRefElement.cpp (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGGlyphRefElement.cpp        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGGlyphRefElement.cpp        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -59,10 +59,7 @@
</span><span class="cx"> {
</span><span class="cx">     // FIXME: We only support xlink:href so far.
</span><span class="cx">     // https://bugs.webkit.org/show_bug.cgi?id=64787
</span><del>-    Element* element = targetElementFromIRIString(getAttribute(XLinkNames::hrefAttr), document(), &amp;glyphName);
-    if (!element || !element-&gt;hasTagName(SVGNames::glyphTag))
-        return false;
-    return true;
</del><ins>+    return is&lt;SVGGlyphElement&gt;(targetElementFromIRIString(getAttribute(XLinkNames::hrefAttr), document(), &amp;glyphName));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void SVGGlyphRefElement::parseAttribute(const QualifiedName&amp; name, const AtomicString&amp; value)
</span><span class="lines">@@ -81,8 +78,7 @@
</span><span class="cx">     else if (name == SVGNames::dyAttr)
</span><span class="cx">         parseNumber(startPtr, endPtr, m_dy);
</span><span class="cx">     else {
</span><del>-        if (SVGURIReference::parseAttribute(name, value))
-            return;
</del><ins>+        SVGURIReference::parseAttribute(name, value);
</ins><span class="cx">         SVGElement::parseAttribute(name, value);
</span><span class="cx">     }
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGGradientElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGGradientElement.cpp (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGGradientElement.cpp        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGGradientElement.cpp        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -76,13 +76,8 @@
</span><span class="cx"> 
</span><span class="cx"> void SVGGradientElement::parseAttribute(const QualifiedName&amp; name, const AtomicString&amp; value)
</span><span class="cx"> {
</span><del>-    if (!isSupportedAttribute(name)) {
-        SVGElement::parseAttribute(name, value);
-        return;
-    }
-
</del><span class="cx">     if (name == SVGNames::gradientUnitsAttr) {
</span><del>-        SVGUnitTypes::SVGUnitType propertyValue = SVGPropertyTraits&lt;SVGUnitTypes::SVGUnitType&gt;::fromString(value);
</del><ins>+        auto propertyValue = SVGPropertyTraits&lt;SVGUnitTypes::SVGUnitType&gt;::fromString(value);
</ins><span class="cx">         if (propertyValue &gt; 0)
</span><span class="cx">             setGradientUnitsBaseValue(propertyValue);
</span><span class="cx">         return;
</span><span class="lines">@@ -97,18 +92,15 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (name == SVGNames::spreadMethodAttr) {
</span><del>-        SVGSpreadMethodType propertyValue = SVGPropertyTraits&lt;SVGSpreadMethodType&gt;::fromString(value);
</del><ins>+        auto propertyValue = SVGPropertyTraits&lt;SVGSpreadMethodType&gt;::fromString(value);
</ins><span class="cx">         if (propertyValue &gt; 0)
</span><span class="cx">             setSpreadMethodBaseValue(propertyValue);
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (SVGURIReference::parseAttribute(name, value))
-        return;
-    if (SVGExternalResourcesRequired::parseAttribute(name, value))
-        return;
-
-    ASSERT_NOT_REACHED();
</del><ins>+    SVGElement::parseAttribute(name, value);
+    SVGURIReference::parseAttribute(name, value);
+    SVGExternalResourcesRequired::parseAttribute(name, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void SVGGradientElement::svgAttributeChanged(const QualifiedName&amp; attrName)
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGGradientElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGGradientElement.h (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGGradientElement.h        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGGradientElement.h        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -89,7 +89,7 @@
</span><span class="cx"> protected:
</span><span class="cx">     SVGGradientElement(const QualifiedName&amp;, Document&amp;);
</span><span class="cx"> 
</span><del>-    bool isSupportedAttribute(const QualifiedName&amp;);
</del><ins>+    static bool isSupportedAttribute(const QualifiedName&amp;);
</ins><span class="cx">     virtual void parseAttribute(const QualifiedName&amp;, const AtomicString&amp;) override;
</span><span class="cx">     virtual void svgAttributeChanged(const QualifiedName&amp;) override;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGGraphicsElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGGraphicsElement.cpp (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGGraphicsElement.cpp        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGGraphicsElement.cpp        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -22,7 +22,6 @@
</span><span class="cx"> #include &quot;SVGGraphicsElement.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #include &quot;AffineTransform.h&quot;
</span><del>-#include &quot;Attribute.h&quot;
</del><span class="cx"> #include &quot;RenderSVGPath.h&quot;
</span><span class="cx"> #include &quot;RenderSVGResource.h&quot;
</span><span class="cx"> #include &quot;SVGNames.h&quot;
</span><span class="lines">@@ -110,11 +109,6 @@
</span><span class="cx"> 
</span><span class="cx"> void SVGGraphicsElement::parseAttribute(const QualifiedName&amp; name, const AtomicString&amp; value)
</span><span class="cx"> {
</span><del>-    if (!isSupportedAttribute(name)) {
-        SVGElement::parseAttribute(name, value);
-        return;
-    }
-
</del><span class="cx">     if (name == SVGNames::transformAttr) {
</span><span class="cx">         SVGTransformList newList;
</span><span class="cx">         newList.parse(value);
</span><span class="lines">@@ -123,10 +117,8 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (SVGTests::parseAttribute(name, value))
-        return;
-
-    ASSERT_NOT_REACHED();
</del><ins>+    SVGElement::parseAttribute(name, value);
+    SVGTests::parseAttribute(name, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void SVGGraphicsElement::svgAttributeChanged(const QualifiedName&amp; attrName)
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGGraphicsElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGGraphicsElement.h (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGGraphicsElement.h        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGGraphicsElement.h        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -56,8 +56,6 @@
</span><span class="cx"> protected:
</span><span class="cx">     SVGGraphicsElement(const QualifiedName&amp;, Document&amp;);
</span><span class="cx"> 
</span><del>-    bool isSupportedAttribute(const QualifiedName&amp;);
-
</del><span class="cx">     virtual bool supportsFocus() const override { return Element::supportsFocus() || hasFocusEventListeners(); }
</span><span class="cx"> 
</span><span class="cx">     virtual void parseAttribute(const QualifiedName&amp;, const AtomicString&amp;) override;
</span><span class="lines">@@ -70,6 +68,8 @@
</span><span class="cx"> private:
</span><span class="cx">     virtual bool isSVGGraphicsElement() const override { return true; }
</span><span class="cx"> 
</span><ins>+    static bool isSupportedAttribute(const QualifiedName&amp;);
+
</ins><span class="cx">     // SVGTests
</span><span class="cx">     virtual void synchronizeRequiredFeatures() override { SVGTests::synchronizeRequiredFeatures(this); }
</span><span class="cx">     virtual void synchronizeRequiredExtensions() override { SVGTests::synchronizeRequiredExtensions(this); }
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGImageElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGImageElement.cpp (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGImageElement.cpp        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGImageElement.cpp        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -23,7 +23,6 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;SVGImageElement.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;Attribute.h&quot;
</del><span class="cx"> #include &quot;CSSPropertyNames.h&quot;
</span><span class="cx"> #include &quot;RenderImageResource.h&quot;
</span><span class="cx"> #include &quot;RenderSVGImage.h&quot;
</span><span class="lines">@@ -88,29 +87,29 @@
</span><span class="cx"> 
</span><span class="cx"> void SVGImageElement::parseAttribute(const QualifiedName&amp; name, const AtomicString&amp; value)
</span><span class="cx"> {
</span><ins>+    if (name == SVGNames::preserveAspectRatioAttr) {
+        SVGPreserveAspectRatio preserveAspectRatio;
+        preserveAspectRatio.parse(value);
+        setPreserveAspectRatioBaseValue(preserveAspectRatio);
+        return;
+    }
+
</ins><span class="cx">     SVGParsingError parseError = NoError;
</span><span class="cx"> 
</span><del>-    if (!isSupportedAttribute(name))
-        SVGGraphicsElement::parseAttribute(name, value);
-    else if (name == SVGNames::xAttr)
</del><ins>+    if (name == SVGNames::xAttr)
</ins><span class="cx">         setXBaseValue(SVGLength::construct(LengthModeWidth, value, parseError));
</span><span class="cx">     else if (name == SVGNames::yAttr)
</span><span class="cx">         setYBaseValue(SVGLength::construct(LengthModeHeight, value, parseError));
</span><del>-    else if (name == SVGNames::preserveAspectRatioAttr) {
-        SVGPreserveAspectRatio preserveAspectRatio;
-        preserveAspectRatio.parse(value);
-        setPreserveAspectRatioBaseValue(preserveAspectRatio);
-    } else if (name == SVGNames::widthAttr)
</del><ins>+    else if (name == SVGNames::widthAttr)
</ins><span class="cx">         setWidthBaseValue(SVGLength::construct(LengthModeWidth, value, parseError, ForbidNegativeLengths));
</span><span class="cx">     else if (name == SVGNames::heightAttr)
</span><span class="cx">         setHeightBaseValue(SVGLength::construct(LengthModeHeight, value, parseError, ForbidNegativeLengths));
</span><del>-    else if (SVGLangSpace::parseAttribute(name, value)
-             || SVGExternalResourcesRequired::parseAttribute(name, value)
-             || SVGURIReference::parseAttribute(name, value)) {
-    } else
-        ASSERT_NOT_REACHED();
</del><span class="cx"> 
</span><span class="cx">     reportAttributeParsingError(parseError, name, value);
</span><ins>+
+    SVGGraphicsElement::parseAttribute(name, value);
+    SVGExternalResourcesRequired::parseAttribute(name, value);
+    SVGURIReference::parseAttribute(name, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void SVGImageElement::svgAttributeChanged(const QualifiedName&amp; attrName)
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGImageElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGImageElement.h (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGImageElement.h        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGImageElement.h        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -42,7 +42,7 @@
</span><span class="cx">     
</span><span class="cx">     virtual bool isValid() const override { return SVGTests::isValid(); }
</span><span class="cx"> 
</span><del>-    bool isSupportedAttribute(const QualifiedName&amp;);
</del><ins>+    static bool isSupportedAttribute(const QualifiedName&amp;);
</ins><span class="cx">     virtual void parseAttribute(const QualifiedName&amp;, const AtomicString&amp;) override;
</span><span class="cx">     virtual void svgAttributeChanged(const QualifiedName&amp;) override;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGLangSpacecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGLangSpace.cpp (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGLangSpace.cpp        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGLangSpace.cpp        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -21,7 +21,6 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;SVGLangSpace.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;Attribute.h&quot;
</del><span class="cx"> #include &quot;SVGElement.h&quot;
</span><span class="cx"> #include &quot;XMLNames.h&quot;
</span><span class="cx"> #include &lt;wtf/StdLibExtras.h&gt;
</span><span class="lines">@@ -48,18 +47,12 @@
</span><span class="cx">     m_space = xmlSpace;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool SVGLangSpace::parseAttribute(const QualifiedName&amp; name, const AtomicString&amp; value)
</del><ins>+void SVGLangSpace::parseAttribute(const QualifiedName&amp; name, const AtomicString&amp; value)
</ins><span class="cx"> {
</span><del>-    if (name.matches(XMLNames::langAttr)) {
</del><ins>+    if (name.matches(XMLNames::langAttr))
</ins><span class="cx">         setXmllang(value);
</span><del>-        return true;
-    }
-    if (name.matches(XMLNames::spaceAttr)) {
</del><ins>+    if (name.matches(XMLNames::spaceAttr))
</ins><span class="cx">         setXmlspace(value);
</span><del>-        return true;
-    }
-
-    return false;
</del><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool SVGLangSpace::isKnownAttribute(const QualifiedName&amp; attrName)
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGLangSpaceh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGLangSpace.h (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGLangSpace.h        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGLangSpace.h        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -26,8 +26,6 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-class Attribute;
-
</del><span class="cx"> class SVGLangSpace {
</span><span class="cx"> public:
</span><span class="cx">     const AtomicString&amp; xmllang() const { return m_lang; }
</span><span class="lines">@@ -36,10 +34,11 @@
</span><span class="cx">     const AtomicString&amp; xmlspace() const;
</span><span class="cx">     void setXmlspace(const AtomicString&amp; xmlSpace);
</span><span class="cx"> 
</span><del>-    bool parseAttribute(const QualifiedName&amp;, const AtomicString&amp;);
-    bool isKnownAttribute(const QualifiedName&amp;);
-    void addSupportedAttributes(HashSet&lt;QualifiedName&gt;&amp;);
</del><ins>+    void parseAttribute(const QualifiedName&amp;, const AtomicString&amp;);
</ins><span class="cx"> 
</span><ins>+    static bool isKnownAttribute(const QualifiedName&amp;);
+    static void addSupportedAttributes(HashSet&lt;QualifiedName&gt;&amp;);
+
</ins><span class="cx"> private:
</span><span class="cx">     AtomicString m_lang;
</span><span class="cx">     AtomicString m_space;
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGLineElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGLineElement.cpp (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGLineElement.cpp        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGLineElement.cpp        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -21,7 +21,6 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;SVGLineElement.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;Attribute.h&quot;
</del><span class="cx"> #include &quot;FloatPoint.h&quot;
</span><span class="cx"> #include &quot;RenderSVGPath.h&quot;
</span><span class="cx"> #include &quot;RenderSVGResource.h&quot;
</span><span class="lines">@@ -81,9 +80,7 @@
</span><span class="cx"> {
</span><span class="cx">     SVGParsingError parseError = NoError;
</span><span class="cx"> 
</span><del>-    if (!isSupportedAttribute(name))
-        SVGGraphicsElement::parseAttribute(name, value);
-    else if (name == SVGNames::x1Attr)
</del><ins>+    if (name == SVGNames::x1Attr)
</ins><span class="cx">         setX1BaseValue(SVGLength::construct(LengthModeWidth, value, parseError));
</span><span class="cx">     else if (name == SVGNames::y1Attr)
</span><span class="cx">         setY1BaseValue(SVGLength::construct(LengthModeHeight, value, parseError));
</span><span class="lines">@@ -91,12 +88,11 @@
</span><span class="cx">         setX2BaseValue(SVGLength::construct(LengthModeWidth, value, parseError));
</span><span class="cx">     else if (name == SVGNames::y2Attr)
</span><span class="cx">         setY2BaseValue(SVGLength::construct(LengthModeHeight, value, parseError));
</span><del>-    else if (SVGLangSpace::parseAttribute(name, value)
-             || SVGExternalResourcesRequired::parseAttribute(name, value)) {
-    } else
-        ASSERT_NOT_REACHED();
</del><span class="cx"> 
</span><span class="cx">     reportAttributeParsingError(parseError, name, value);
</span><ins>+
+    SVGGraphicsElement::parseAttribute(name, value);
+    SVGExternalResourcesRequired::parseAttribute(name, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void SVGLineElement::svgAttributeChanged(const QualifiedName&amp; attrName)
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGLineElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGLineElement.h (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGLineElement.h        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGLineElement.h        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -38,7 +38,7 @@
</span><span class="cx">     
</span><span class="cx">     virtual bool isValid() const override { return SVGTests::isValid(); }
</span><span class="cx"> 
</span><del>-    bool isSupportedAttribute(const QualifiedName&amp;);
</del><ins>+    static bool isSupportedAttribute(const QualifiedName&amp;);
</ins><span class="cx">     virtual void parseAttribute(const QualifiedName&amp;, const AtomicString&amp;) override;
</span><span class="cx">     virtual void svgAttributeChanged(const QualifiedName&amp;) override;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGLinearGradientElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGLinearGradientElement.cpp (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGLinearGradientElement.cpp        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGLinearGradientElement.cpp        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -24,7 +24,6 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;SVGLinearGradientElement.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;Attribute.h&quot;
</del><span class="cx"> #include &quot;Document.h&quot;
</span><span class="cx"> #include &quot;FloatPoint.h&quot;
</span><span class="cx"> #include &quot;LinearGradientAttributes.h&quot;
</span><span class="lines">@@ -85,9 +84,7 @@
</span><span class="cx"> {
</span><span class="cx">     SVGParsingError parseError = NoError;
</span><span class="cx"> 
</span><del>-    if (!isSupportedAttribute(name))
-        SVGGradientElement::parseAttribute(name, value);
-    else if (name == SVGNames::x1Attr)
</del><ins>+    if (name == SVGNames::x1Attr)
</ins><span class="cx">         setX1BaseValue(SVGLength::construct(LengthModeWidth, value, parseError));
</span><span class="cx">     else if (name == SVGNames::y1Attr)
</span><span class="cx">         setY1BaseValue(SVGLength::construct(LengthModeHeight, value, parseError));
</span><span class="lines">@@ -95,10 +92,10 @@
</span><span class="cx">         setX2BaseValue(SVGLength::construct(LengthModeWidth, value, parseError));
</span><span class="cx">     else if (name == SVGNames::y2Attr)
</span><span class="cx">         setY2BaseValue(SVGLength::construct(LengthModeHeight, value, parseError));
</span><del>-    else
-        ASSERT_NOT_REACHED();
</del><span class="cx"> 
</span><span class="cx">     reportAttributeParsingError(parseError, name, value);
</span><ins>+
+    SVGGradientElement::parseAttribute(name, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void SVGLinearGradientElement::svgAttributeChanged(const QualifiedName&amp; attrName)
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGLinearGradientElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGLinearGradientElement.h (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGLinearGradientElement.h        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGLinearGradientElement.h        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -38,7 +38,7 @@
</span><span class="cx"> private:
</span><span class="cx">     SVGLinearGradientElement(const QualifiedName&amp;, Document&amp;);
</span><span class="cx"> 
</span><del>-    bool isSupportedAttribute(const QualifiedName&amp;);
</del><ins>+    static bool isSupportedAttribute(const QualifiedName&amp;);
</ins><span class="cx">     virtual void parseAttribute(const QualifiedName&amp;, const AtomicString&amp;) override;
</span><span class="cx">     virtual void svgAttributeChanged(const QualifiedName&amp;) override;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGMPathElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGMPathElement.cpp (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGMPathElement.cpp        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGMPathElement.cpp        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -26,7 +26,6 @@
</span><span class="cx"> #include &quot;SVGNames.h&quot;
</span><span class="cx"> #include &quot;SVGPathElement.h&quot;
</span><span class="cx"> #include &quot;XLinkNames.h&quot;
</span><del>-#include &lt;wtf/NeverDestroyed.h&gt;
</del><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -108,49 +107,22 @@
</span><span class="cx">         clearResourceReferences();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool SVGMPathElement::isSupportedAttribute(const QualifiedName&amp; attrName)
-{
-    static NeverDestroyed&lt;HashSet&lt;QualifiedName&gt;&gt; supportedAttributes;
-    if (supportedAttributes.get().isEmpty()) {
-        SVGURIReference::addSupportedAttributes(supportedAttributes);
-        SVGExternalResourcesRequired::addSupportedAttributes(supportedAttributes);
-    }
-    return supportedAttributes.get().contains&lt;SVGAttributeHashTranslator&gt;(attrName);
-}
-
</del><span class="cx"> void SVGMPathElement::parseAttribute(const QualifiedName&amp; name, const AtomicString&amp; value)
</span><span class="cx"> {
</span><del>-    if (!isSupportedAttribute(name)) {
-        SVGElement::parseAttribute(name, value);
-        return;
-    }
-
-    if (SVGURIReference::parseAttribute(name, value))
-        return;
-    if (SVGExternalResourcesRequired::parseAttribute(name, value))
-        return;
-
-    ASSERT_NOT_REACHED();
</del><ins>+    SVGElement::parseAttribute(name, value);
+    SVGURIReference::parseAttribute(name, value);
+    SVGExternalResourcesRequired::parseAttribute(name, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void SVGMPathElement::svgAttributeChanged(const QualifiedName&amp; attrName)
</span><span class="cx"> {
</span><del>-    if (!isSupportedAttribute(attrName)) {
-        SVGElement::svgAttributeChanged(attrName);
-        return;
-    }
-
-    InstanceInvalidationGuard guard(*this);
-
</del><span class="cx">     if (SVGURIReference::isKnownAttribute(attrName)) {
</span><ins>+        InstanceInvalidationGuard guard(*this);
</ins><span class="cx">         buildPendingResource();
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (SVGExternalResourcesRequired::isKnownAttribute(attrName))
-        return;
-
-    ASSERT_NOT_REACHED();
</del><ins>+    SVGElement::svgAttributeChanged(attrName);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> SVGPathElement* SVGMPathElement::pathElement()
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGMPathElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGMPathElement.h (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGMPathElement.h        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGMPathElement.h        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -31,9 +31,7 @@
</span><span class="cx">     
</span><span class="cx"> class SVGPathElement;
</span><span class="cx"> 
</span><del>-class SVGMPathElement final : public SVGElement,
-                              public SVGURIReference,
-                              public SVGExternalResourcesRequired {
</del><ins>+class SVGMPathElement final : public SVGElement, public SVGURIReference, public SVGExternalResourcesRequired {
</ins><span class="cx"> public:
</span><span class="cx">     static Ref&lt;SVGMPathElement&gt; create(const QualifiedName&amp;, Document&amp;);
</span><span class="cx"> 
</span><span class="lines">@@ -43,9 +41,6 @@
</span><span class="cx"> 
</span><span class="cx">     void targetPathChanged();
</span><span class="cx"> 
</span><del>-protected:
-    virtual void didNotifySubtreeInsertions(ContainerNode*) override;
-
</del><span class="cx"> private:
</span><span class="cx">     SVGMPathElement(const QualifiedName&amp;, Document&amp;);
</span><span class="cx"> 
</span><span class="lines">@@ -54,11 +49,11 @@
</span><span class="cx">     virtual InsertionNotificationRequest insertedInto(ContainerNode&amp;) override;
</span><span class="cx">     virtual void removedFrom(ContainerNode&amp;) override;
</span><span class="cx"> 
</span><del>-    bool isSupportedAttribute(const QualifiedName&amp;);
</del><span class="cx">     virtual void parseAttribute(const QualifiedName&amp;, const AtomicString&amp;) override;
</span><span class="cx">     virtual void svgAttributeChanged(const QualifiedName&amp;) override;
</span><span class="cx"> 
</span><span class="cx">     virtual bool rendererIsNeeded(const RenderStyle&amp;) override { return false; }
</span><ins>+    virtual void didNotifySubtreeInsertions(ContainerNode*) override;
</ins><span class="cx"> 
</span><span class="cx">     void notifyParentOfPathChange(ContainerNode*);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGMarkerElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGMarkerElement.cpp (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGMarkerElement.cpp        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGMarkerElement.cpp        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -22,7 +22,6 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;SVGMarkerElement.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;Attribute.h&quot;
</del><span class="cx"> #include &quot;RenderSVGResourceMarker.h&quot;
</span><span class="cx"> #include &quot;SVGFitToViewBox.h&quot;
</span><span class="cx"> #include &quot;SVGNames.h&quot;
</span><span class="lines">@@ -125,15 +124,26 @@
</span><span class="cx"> 
</span><span class="cx"> void SVGMarkerElement::parseAttribute(const QualifiedName&amp; name, const AtomicString&amp; value)
</span><span class="cx"> {
</span><ins>+    if (name == SVGNames::markerUnitsAttr) {
+        auto propertyValue = SVGPropertyTraits&lt;SVGMarkerUnitsType&gt;::fromString(value);
+        if (propertyValue &gt; 0)
+            setMarkerUnitsBaseValue(propertyValue);
+        return;
+    }
+
+    if (name == SVGNames::orientAttr) {
+        SVGAngle angle;
+        auto orientType = SVGPropertyTraits&lt;SVGMarkerOrientType&gt;::fromString(value, angle);
+        if (orientType &gt; 0)
+            setOrientTypeBaseValue(orientType);
+        if (orientType == SVGMarkerOrientAngle)
+            setOrientAngleBaseValue(angle);
+        return;
+    }
+
</ins><span class="cx">     SVGParsingError parseError = NoError;
</span><span class="cx"> 
</span><del>-    if (!isSupportedAttribute(name))
-        SVGElement::parseAttribute(name, value);
-    else if (name == SVGNames::markerUnitsAttr) {
-        SVGMarkerUnitsType propertyValue = SVGPropertyTraits&lt;SVGMarkerUnitsType&gt;::fromString(value);
-        if (propertyValue &gt; 0)
-            setMarkerUnitsBaseValue(propertyValue);
-    } else if (name == SVGNames::refXAttr)
</del><ins>+    if (name == SVGNames::refXAttr)
</ins><span class="cx">         setRefXBaseValue(SVGLength::construct(LengthModeWidth, value, parseError));
</span><span class="cx">     else if (name == SVGNames::refYAttr)
</span><span class="cx">         setRefYBaseValue(SVGLength::construct(LengthModeHeight, value, parseError));
</span><span class="lines">@@ -141,20 +151,12 @@
</span><span class="cx">         setMarkerWidthBaseValue(SVGLength::construct(LengthModeWidth, value, parseError));
</span><span class="cx">     else if (name == SVGNames::markerHeightAttr)
</span><span class="cx">         setMarkerHeightBaseValue(SVGLength::construct(LengthModeHeight, value, parseError));
</span><del>-    else if (name == SVGNames::orientAttr) {
-        SVGAngle angle;
-        SVGMarkerOrientType orientType = SVGPropertyTraits&lt;SVGMarkerOrientType&gt;::fromString(value, angle);
-        if (orientType &gt; 0)
-            setOrientTypeBaseValue(orientType);
-        if (orientType == SVGMarkerOrientAngle)
-            setOrientAngleBaseValue(angle);
-    } else if (SVGLangSpace::parseAttribute(name, value)
-             || SVGExternalResourcesRequired::parseAttribute(name, value)
-             || SVGFitToViewBox::parseAttribute(this, name, value)) {
-    } else
-        ASSERT_NOT_REACHED();
</del><span class="cx"> 
</span><span class="cx">     reportAttributeParsingError(parseError, name, value);
</span><ins>+
+    SVGElement::parseAttribute(name, value);
+    SVGExternalResourcesRequired::parseAttribute(name, value);
+    SVGFitToViewBox::parseAttribute(this, name, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void SVGMarkerElement::svgAttributeChanged(const QualifiedName&amp; attrName)
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGMarkerElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGMarkerElement.h (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGMarkerElement.h        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGMarkerElement.h        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -127,7 +127,7 @@
</span><span class="cx"> 
</span><span class="cx">     virtual bool needsPendingResourceHandling() const override { return false; }
</span><span class="cx"> 
</span><del>-    bool isSupportedAttribute(const QualifiedName&amp;);
</del><ins>+    static bool isSupportedAttribute(const QualifiedName&amp;);
</ins><span class="cx">     virtual void parseAttribute(const QualifiedName&amp;, const AtomicString&amp;) override;
</span><span class="cx">     virtual void svgAttributeChanged(const QualifiedName&amp;) override;
</span><span class="cx">     virtual void childrenChanged(const ChildChange&amp;) override;
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGMaskElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGMaskElement.cpp (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGMaskElement.cpp        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGMaskElement.cpp        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -25,7 +25,6 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;SVGMaskElement.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;Attribute.h&quot;
</del><span class="cx"> #include &quot;RenderSVGResourceMasker.h&quot;
</span><span class="cx"> #include &quot;SVGNames.h&quot;
</span><span class="cx"> #include &quot;SVGRenderSupport.h&quot;
</span><span class="lines">@@ -95,21 +94,22 @@
</span><span class="cx"> 
</span><span class="cx"> void SVGMaskElement::parseAttribute(const QualifiedName&amp; name, const AtomicString&amp; value)
</span><span class="cx"> {
</span><del>-    SVGParsingError parseError = NoError;
-
-    if (!isSupportedAttribute(name))
-        SVGElement::parseAttribute(name, value);
-    else if (name == SVGNames::maskUnitsAttr) {
-        SVGUnitTypes::SVGUnitType propertyValue = SVGPropertyTraits&lt;SVGUnitTypes::SVGUnitType&gt;::fromString(value);
</del><ins>+    if (name == SVGNames::maskUnitsAttr) {
+        auto propertyValue = SVGPropertyTraits&lt;SVGUnitTypes::SVGUnitType&gt;::fromString(value);
</ins><span class="cx">         if (propertyValue &gt; 0)
</span><span class="cx">             setMaskUnitsBaseValue(propertyValue);
</span><span class="cx">         return;
</span><del>-    } else if (name == SVGNames::maskContentUnitsAttr) {
-        SVGUnitTypes::SVGUnitType propertyValue = SVGPropertyTraits&lt;SVGUnitTypes::SVGUnitType&gt;::fromString(value);
</del><ins>+    }
+    if (name == SVGNames::maskContentUnitsAttr) {
+        auto propertyValue = SVGPropertyTraits&lt;SVGUnitTypes::SVGUnitType&gt;::fromString(value);
</ins><span class="cx">         if (propertyValue &gt; 0)
</span><span class="cx">             setMaskContentUnitsBaseValue(propertyValue);
</span><span class="cx">         return;
</span><del>-    } else if (name == SVGNames::xAttr)
</del><ins>+    }
+
+    SVGParsingError parseError = NoError;
+
+    if (name == SVGNames::xAttr)
</ins><span class="cx">         setXBaseValue(SVGLength::construct(LengthModeWidth, value, parseError));
</span><span class="cx">     else if (name == SVGNames::yAttr)
</span><span class="cx">         setYBaseValue(SVGLength::construct(LengthModeHeight, value, parseError));
</span><span class="lines">@@ -117,13 +117,12 @@
</span><span class="cx">         setWidthBaseValue(SVGLength::construct(LengthModeWidth, value, parseError));
</span><span class="cx">     else if (name == SVGNames::heightAttr)
</span><span class="cx">         setHeightBaseValue(SVGLength::construct(LengthModeHeight, value, parseError));
</span><del>-    else if (SVGTests::parseAttribute(name, value)
-             || SVGLangSpace::parseAttribute(name, value)
-             || SVGExternalResourcesRequired::parseAttribute(name, value)) {
-    } else
-        ASSERT_NOT_REACHED();
</del><span class="cx"> 
</span><span class="cx">     reportAttributeParsingError(parseError, name, value);
</span><ins>+
+    SVGElement::parseAttribute(name, value);
+    SVGTests::parseAttribute(name, value);
+    SVGExternalResourcesRequired::parseAttribute(name, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void SVGMaskElement::svgAttributeChanged(const QualifiedName&amp; attrName)
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGMaskElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGMaskElement.h (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGMaskElement.h        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGMaskElement.h        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -48,7 +48,7 @@
</span><span class="cx">     virtual bool isValid() const override { return SVGTests::isValid(); }
</span><span class="cx">     virtual bool needsPendingResourceHandling() const override { return false; }
</span><span class="cx"> 
</span><del>-    bool isSupportedAttribute(const QualifiedName&amp;);
</del><ins>+    static bool isSupportedAttribute(const QualifiedName&amp;);
</ins><span class="cx">     virtual void parseAttribute(const QualifiedName&amp;, const AtomicString&amp;) override;
</span><span class="cx">     virtual void svgAttributeChanged(const QualifiedName&amp;) override;
</span><span class="cx">     virtual void childrenChanged(const ChildChange&amp;) override;
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGPathElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGPathElement.cpp (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGPathElement.cpp        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGPathElement.cpp        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -21,7 +21,6 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;SVGPathElement.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;Attribute.h&quot;
</del><span class="cx"> #include &quot;RenderSVGPath.h&quot;
</span><span class="cx"> #include &quot;RenderSVGResource.h&quot;
</span><span class="cx"> #include &quot;SVGMPathElement.h&quot;
</span><span class="lines">@@ -224,11 +223,6 @@
</span><span class="cx"> 
</span><span class="cx"> void SVGPathElement::parseAttribute(const QualifiedName&amp; name, const AtomicString&amp; value)
</span><span class="cx"> {
</span><del>-    if (!isSupportedAttribute(name)) {
-        SVGGraphicsElement::parseAttribute(name, value);
-        return;
-    }
-
</del><span class="cx">     if (name == SVGNames::dAttr) {
</span><span class="cx">         if (!buildSVGPathByteStreamFromString(value, m_pathByteStream.get(), UnalteredParsing))
</span><span class="cx">             document().accessSVGExtensions().reportError(&quot;Problem parsing d=\&quot;&quot; + value + &quot;\&quot;&quot;);
</span><span class="lines">@@ -242,12 +236,8 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (SVGLangSpace::parseAttribute(name, value))
-        return;
-    if (SVGExternalResourcesRequired::parseAttribute(name, value))
-        return;
-
-    ASSERT_NOT_REACHED();
</del><ins>+    SVGGraphicsElement::parseAttribute(name, value);
+    SVGExternalResourcesRequired::parseAttribute(name, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void SVGPathElement::svgAttributeChanged(const QualifiedName&amp; attrName)
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGPathElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGPathElement.h (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGPathElement.h        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGPathElement.h        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -102,7 +102,7 @@
</span><span class="cx"> 
</span><span class="cx">     virtual bool isValid() const override { return SVGTests::isValid(); }
</span><span class="cx"> 
</span><del>-    bool isSupportedAttribute(const QualifiedName&amp;);
</del><ins>+    static bool isSupportedAttribute(const QualifiedName&amp;);
</ins><span class="cx">     virtual void parseAttribute(const QualifiedName&amp;, const AtomicString&amp;) override;
</span><span class="cx">     virtual void svgAttributeChanged(const QualifiedName&amp;) override;
</span><span class="cx">     virtual bool supportsMarkers() const override { return true; }
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGPatternElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGPatternElement.cpp (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGPatternElement.cpp        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGPatternElement.cpp        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -24,7 +24,6 @@
</span><span class="cx"> #include &quot;SVGPatternElement.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #include &quot;AffineTransform.h&quot;
</span><del>-#include &quot;Attribute.h&quot;
</del><span class="cx"> #include &quot;Document.h&quot;
</span><span class="cx"> #include &quot;FloatConversion.h&quot;
</span><span class="cx"> #include &quot;GraphicsContext.h&quot;
</span><span class="lines">@@ -111,27 +110,29 @@
</span><span class="cx"> 
</span><span class="cx"> void SVGPatternElement::parseAttribute(const QualifiedName&amp; name, const AtomicString&amp; value)
</span><span class="cx"> {
</span><del>-    SVGParsingError parseError = NoError;
-
-    if (!isSupportedAttribute(name))
-        SVGElement::parseAttribute(name, value);
-    else if (name == SVGNames::patternUnitsAttr) {
-        SVGUnitTypes::SVGUnitType propertyValue = SVGPropertyTraits&lt;SVGUnitTypes::SVGUnitType&gt;::fromString(value);
</del><ins>+    if (name == SVGNames::patternUnitsAttr) {
+        auto propertyValue = SVGPropertyTraits&lt;SVGUnitTypes::SVGUnitType&gt;::fromString(value);
</ins><span class="cx">         if (propertyValue &gt; 0)
</span><span class="cx">             setPatternUnitsBaseValue(propertyValue);
</span><span class="cx">         return;
</span><del>-    } else if (name == SVGNames::patternContentUnitsAttr) {
-        SVGUnitTypes::SVGUnitType propertyValue = SVGPropertyTraits&lt;SVGUnitTypes::SVGUnitType&gt;::fromString(value);
</del><ins>+    }
+    if (name == SVGNames::patternContentUnitsAttr) {
+        auto propertyValue = SVGPropertyTraits&lt;SVGUnitTypes::SVGUnitType&gt;::fromString(value);
</ins><span class="cx">         if (propertyValue &gt; 0)
</span><span class="cx">             setPatternContentUnitsBaseValue(propertyValue);
</span><span class="cx">         return;
</span><del>-    } else if (name == SVGNames::patternTransformAttr) {
</del><ins>+    }
+    if (name == SVGNames::patternTransformAttr) {
</ins><span class="cx">         SVGTransformList newList;
</span><span class="cx">         newList.parse(value);
</span><span class="cx">         detachAnimatedPatternTransformListWrappers(newList.size());
</span><span class="cx">         setPatternTransformBaseValue(newList);
</span><span class="cx">         return;
</span><del>-    } else if (name == SVGNames::xAttr)
</del><ins>+    }
+
+    SVGParsingError parseError = NoError;
+
+    if (name == SVGNames::xAttr)
</ins><span class="cx">         setXBaseValue(SVGLength::construct(LengthModeWidth, value, parseError));
</span><span class="cx">     else if (name == SVGNames::yAttr)
</span><span class="cx">         setYBaseValue(SVGLength::construct(LengthModeHeight, value, parseError));
</span><span class="lines">@@ -139,15 +140,14 @@
</span><span class="cx">         setWidthBaseValue(SVGLength::construct(LengthModeWidth, value, parseError, ForbidNegativeLengths));
</span><span class="cx">     else if (name == SVGNames::heightAttr)
</span><span class="cx">         setHeightBaseValue(SVGLength::construct(LengthModeHeight, value, parseError, ForbidNegativeLengths));
</span><del>-    else if (SVGURIReference::parseAttribute(name, value)
-             || SVGTests::parseAttribute(name, value)
-             || SVGLangSpace::parseAttribute(name, value)
-             || SVGExternalResourcesRequired::parseAttribute(name, value)
-             || SVGFitToViewBox::parseAttribute(this, name, value)) {
-    } else
-        ASSERT_NOT_REACHED();
</del><span class="cx"> 
</span><span class="cx">     reportAttributeParsingError(parseError, name, value);
</span><ins>+
+    SVGElement::parseAttribute(name, value);
+    SVGURIReference::parseAttribute(name, value);
+    SVGTests::parseAttribute(name, value);
+    SVGExternalResourcesRequired::parseAttribute(name, value);
+    SVGFitToViewBox::parseAttribute(this, name, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void SVGPatternElement::svgAttributeChanged(const QualifiedName&amp; attrName)
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGPatternElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGPatternElement.h (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGPatternElement.h        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGPatternElement.h        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -57,7 +57,7 @@
</span><span class="cx">     virtual bool isValid() const override { return SVGTests::isValid(); }
</span><span class="cx">     virtual bool needsPendingResourceHandling() const override { return false; }
</span><span class="cx"> 
</span><del>-    bool isSupportedAttribute(const QualifiedName&amp;);
</del><ins>+    static bool isSupportedAttribute(const QualifiedName&amp;);
</ins><span class="cx">     virtual void parseAttribute(const QualifiedName&amp;, const AtomicString&amp;) override;
</span><span class="cx">     virtual void svgAttributeChanged(const QualifiedName&amp;) override;
</span><span class="cx">     virtual void childrenChanged(const ChildChange&amp;) override;
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGPolyElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGPolyElement.cpp (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGPolyElement.cpp        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGPolyElement.cpp        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -21,7 +21,6 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;SVGPolyElement.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;Attribute.h&quot;
</del><span class="cx"> #include &quot;Document.h&quot;
</span><span class="cx"> #include &quot;FloatPoint.h&quot;
</span><span class="cx"> #include &quot;RenderSVGPath.h&quot;
</span><span class="lines">@@ -29,7 +28,6 @@
</span><span class="cx"> #include &quot;SVGAnimatedPointList.h&quot;
</span><span class="cx"> #include &quot;SVGNames.h&quot;
</span><span class="cx"> #include &quot;SVGParserUtilities.h&quot;
</span><del>-#include &lt;wtf/NeverDestroyed.h&gt;
</del><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -63,24 +61,8 @@
</span><span class="cx">     registerAnimatedPropertiesForSVGPolyElement();    
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool SVGPolyElement::isSupportedAttribute(const QualifiedName&amp; attrName)
-{
-    static NeverDestroyed&lt;HashSet&lt;QualifiedName&gt;&gt; supportedAttributes;
-    if (supportedAttributes.get().isEmpty()) {
-        SVGLangSpace::addSupportedAttributes(supportedAttributes);
-        SVGExternalResourcesRequired::addSupportedAttributes(supportedAttributes);
-        supportedAttributes.get().add(SVGNames::pointsAttr);
-    }
-    return supportedAttributes.get().contains&lt;SVGAttributeHashTranslator&gt;(attrName);
-}
-
</del><span class="cx"> void SVGPolyElement::parseAttribute(const QualifiedName&amp; name, const AtomicString&amp; value)
</span><span class="cx"> {
</span><del>-    if (!isSupportedAttribute(name)) {
-        SVGGraphicsElement::parseAttribute(name, value);
-        return;
-    }
-
</del><span class="cx">     if (name == SVGNames::pointsAttr) {
</span><span class="cx">         SVGPointList newList;
</span><span class="cx">         if (!pointsListFromSVGData(newList, value))
</span><span class="lines">@@ -93,39 +75,30 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (SVGLangSpace::parseAttribute(name, value))
-        return;
-    if (SVGExternalResourcesRequired::parseAttribute(name, value))
-        return;
-
-    ASSERT_NOT_REACHED();
</del><ins>+    SVGGraphicsElement::parseAttribute(name, value);
+    SVGExternalResourcesRequired::parseAttribute(name, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void SVGPolyElement::svgAttributeChanged(const QualifiedName&amp; attrName)
</span><span class="cx"> {
</span><del>-    if (!isSupportedAttribute(attrName)) {
-        SVGGraphicsElement::svgAttributeChanged(attrName);
-        return;
-    }
-
-    InstanceInvalidationGuard guard(*this);
-
-    auto* renderer = downcast&lt;RenderSVGShape&gt;(this-&gt;renderer());
-    if (!renderer)
-        return;
-
</del><span class="cx">     if (attrName == SVGNames::pointsAttr) {
</span><del>-        renderer-&gt;setNeedsShapeUpdate();
-        RenderSVGResource::markForLayoutAndParentResourceInvalidation(*renderer);
</del><ins>+        if (auto* renderer = downcast&lt;RenderSVGPath&gt;(this-&gt;renderer())) {
+            InstanceInvalidationGuard guard(*this);
+            renderer-&gt;setNeedsShapeUpdate();
+            RenderSVGResource::markForLayoutAndParentResourceInvalidation(*renderer);
+        }
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (SVGLangSpace::isKnownAttribute(attrName) || SVGExternalResourcesRequired::isKnownAttribute(attrName)) {
</span><del>-        RenderSVGResource::markForLayoutAndParentResourceInvalidation(*renderer);
</del><ins>+        if (auto* renderer = downcast&lt;RenderSVGPath&gt;(this-&gt;renderer())) {
+            InstanceInvalidationGuard guard(*this);
+            RenderSVGResource::markForLayoutAndParentResourceInvalidation(*renderer);
+        }
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    ASSERT_NOT_REACHED();
</del><ins>+    SVGGraphicsElement::svgAttributeChanged(attrName);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void SVGPolyElement::synchronizePoints(SVGElement* contextElement)
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGPolyElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGPolyElement.h (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGPolyElement.h        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGPolyElement.h        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -44,7 +44,6 @@
</span><span class="cx"> private:
</span><span class="cx">     virtual bool isValid() const override { return SVGTests::isValid(); }
</span><span class="cx"> 
</span><del>-    bool isSupportedAttribute(const QualifiedName&amp;);
</del><span class="cx">     virtual void parseAttribute(const QualifiedName&amp;, const AtomicString&amp;) override; 
</span><span class="cx">     virtual void svgAttributeChanged(const QualifiedName&amp;) override;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGRadialGradientElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGRadialGradientElement.cpp (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGRadialGradientElement.cpp        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGRadialGradientElement.cpp        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -24,7 +24,6 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;SVGRadialGradientElement.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;Attribute.h&quot;
</del><span class="cx"> #include &quot;FloatConversion.h&quot;
</span><span class="cx"> #include &quot;FloatPoint.h&quot;
</span><span class="cx"> #include &quot;RadialGradientAttributes.h&quot;
</span><span class="lines">@@ -93,9 +92,7 @@
</span><span class="cx"> {
</span><span class="cx">     SVGParsingError parseError = NoError;
</span><span class="cx"> 
</span><del>-    if (!isSupportedAttribute(name))
-        SVGGradientElement::parseAttribute(name, value);
-    else if (name == SVGNames::cxAttr)
</del><ins>+    if (name == SVGNames::cxAttr)
</ins><span class="cx">         setCxBaseValue(SVGLength::construct(LengthModeWidth, value, parseError));
</span><span class="cx">     else if (name == SVGNames::cyAttr)
</span><span class="cx">         setCyBaseValue(SVGLength::construct(LengthModeHeight, value, parseError));
</span><span class="lines">@@ -107,10 +104,10 @@
</span><span class="cx">         setFyBaseValue(SVGLength::construct(LengthModeHeight, value, parseError));
</span><span class="cx">     else if (name == SVGNames::frAttr)
</span><span class="cx">         setFrBaseValue(SVGLength::construct(LengthModeOther, value, parseError, ForbidNegativeLengths));
</span><del>-    else
-        ASSERT_NOT_REACHED();
</del><span class="cx"> 
</span><span class="cx">     reportAttributeParsingError(parseError, name, value);
</span><ins>+
+    SVGGradientElement::parseAttribute(name, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void SVGRadialGradientElement::svgAttributeChanged(const QualifiedName&amp; attrName)
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGRadialGradientElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGRadialGradientElement.h (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGRadialGradientElement.h        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGRadialGradientElement.h        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -38,7 +38,7 @@
</span><span class="cx"> private:
</span><span class="cx">     SVGRadialGradientElement(const QualifiedName&amp;, Document&amp;);
</span><span class="cx"> 
</span><del>-    bool isSupportedAttribute(const QualifiedName&amp;);
</del><ins>+    static bool isSupportedAttribute(const QualifiedName&amp;);
</ins><span class="cx">     virtual void parseAttribute(const QualifiedName&amp;, const AtomicString&amp;) override;
</span><span class="cx">     virtual void svgAttributeChanged(const QualifiedName&amp;) override;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGRectElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGRectElement.cpp (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGRectElement.cpp        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGRectElement.cpp        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -22,13 +22,11 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;SVGRectElement.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;Attribute.h&quot;
</del><span class="cx"> #include &quot;RenderSVGPath.h&quot;
</span><span class="cx"> #include &quot;RenderSVGRect.h&quot;
</span><span class="cx"> #include &quot;RenderSVGResource.h&quot;
</span><span class="cx"> #include &quot;SVGLength.h&quot;
</span><span class="cx"> #include &quot;SVGNames.h&quot;
</span><del>-#include &lt;wtf/NeverDestroyed.h&gt;
</del><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -70,29 +68,11 @@
</span><span class="cx">     return adoptRef(*new SVGRectElement(tagName, document));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool SVGRectElement::isSupportedAttribute(const QualifiedName&amp; attrName)
-{
-    static NeverDestroyed&lt;HashSet&lt;QualifiedName&gt;&gt; supportedAttributes;
-    if (supportedAttributes.get().isEmpty()) {
-        SVGLangSpace::addSupportedAttributes(supportedAttributes);
-        SVGExternalResourcesRequired::addSupportedAttributes(supportedAttributes);
-        supportedAttributes.get().add(SVGNames::xAttr);
-        supportedAttributes.get().add(SVGNames::yAttr);
-        supportedAttributes.get().add(SVGNames::widthAttr);
-        supportedAttributes.get().add(SVGNames::heightAttr);
-        supportedAttributes.get().add(SVGNames::rxAttr);
-        supportedAttributes.get().add(SVGNames::ryAttr);
-    }
-    return supportedAttributes.get().contains&lt;SVGAttributeHashTranslator&gt;(attrName);
-}
-
</del><span class="cx"> void SVGRectElement::parseAttribute(const QualifiedName&amp; name, const AtomicString&amp; value)
</span><span class="cx"> {
</span><span class="cx">     SVGParsingError parseError = NoError;
</span><span class="cx"> 
</span><del>-    if (!isSupportedAttribute(name))
-        SVGGraphicsElement::parseAttribute(name, value);
-    else if (name == SVGNames::xAttr)
</del><ins>+    if (name == SVGNames::xAttr)
</ins><span class="cx">         setXBaseValue(SVGLength::construct(LengthModeWidth, value, parseError));
</span><span class="cx">     else if (name == SVGNames::yAttr)
</span><span class="cx">         setYBaseValue(SVGLength::construct(LengthModeHeight, value, parseError));
</span><span class="lines">@@ -104,43 +84,30 @@
</span><span class="cx">         setWidthBaseValue(SVGLength::construct(LengthModeWidth, value, parseError, ForbidNegativeLengths));
</span><span class="cx">     else if (name == SVGNames::heightAttr)
</span><span class="cx">         setHeightBaseValue(SVGLength::construct(LengthModeHeight, value, parseError, ForbidNegativeLengths));
</span><del>-    else if (SVGLangSpace::parseAttribute(name, value)
-             || SVGExternalResourcesRequired::parseAttribute(name, value)) {
-    } else
-        ASSERT_NOT_REACHED();
</del><span class="cx"> 
</span><span class="cx">     reportAttributeParsingError(parseError, name, value);
</span><ins>+
+    SVGGraphicsElement::parseAttribute(name, value);
+    SVGExternalResourcesRequired::parseAttribute(name, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void SVGRectElement::svgAttributeChanged(const QualifiedName&amp; attrName)
</span><span class="cx"> {
</span><del>-    if (!isSupportedAttribute(attrName)) {
-        SVGGraphicsElement::svgAttributeChanged(attrName);
-        return;
-    }
-
-    InstanceInvalidationGuard guard(*this);
-
-    if (attrName == SVGNames::xAttr
-        || attrName == SVGNames::yAttr
-        || attrName == SVGNames::widthAttr
-        || attrName == SVGNames::heightAttr
-        || attrName == SVGNames::rxAttr
-        || attrName == SVGNames::ryAttr) {
</del><ins>+    if (attrName == SVGNames::xAttr || attrName == SVGNames::yAttr || attrName == SVGNames::widthAttr || attrName == SVGNames::heightAttr || attrName == SVGNames::rxAttr || attrName == SVGNames::ryAttr) {
+        InstanceInvalidationGuard guard(*this);
</ins><span class="cx">         invalidateSVGPresentationAttributeStyle();
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    auto* renderer = downcast&lt;RenderSVGShape&gt;(this-&gt;renderer());
-    if (!renderer)
-        return;
-
</del><span class="cx">     if (SVGLangSpace::isKnownAttribute(attrName) || SVGExternalResourcesRequired::isKnownAttribute(attrName)) {
</span><del>-        RenderSVGResource::markForLayoutAndParentResourceInvalidation(*renderer);
</del><ins>+        if (auto* renderer = downcast&lt;RenderSVGShape&gt;(this-&gt;renderer())) {
+            InstanceInvalidationGuard guard(*this);
+            RenderSVGResource::markForLayoutAndParentResourceInvalidation(*renderer);
+        }
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    ASSERT_NOT_REACHED();
</del><ins>+    SVGGraphicsElement::svgAttributeChanged(attrName);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> RenderPtr&lt;RenderElement&gt; SVGRectElement::createElementRenderer(Ref&lt;RenderStyle&gt;&amp;&amp; style)
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGRectElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGRectElement.h (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGRectElement.h        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGRectElement.h        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -39,7 +39,6 @@
</span><span class="cx">     
</span><span class="cx">     virtual bool isValid() const override { return SVGTests::isValid(); }
</span><span class="cx"> 
</span><del>-    bool isSupportedAttribute(const QualifiedName&amp;);
</del><span class="cx">     virtual void parseAttribute(const QualifiedName&amp;, const AtomicString&amp;) override;
</span><span class="cx">     virtual void svgAttributeChanged(const QualifiedName&amp;) override;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGSVGElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGSVGElement.cpp (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGSVGElement.cpp        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGSVGElement.cpp        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -257,7 +257,6 @@
</span><span class="cx"> 
</span><span class="cx">     reportAttributeParsingError(parseError, name, value);
</span><span class="cx"> 
</span><del>-    SVGLangSpace::parseAttribute(name, value);
</del><span class="cx">     SVGExternalResourcesRequired::parseAttribute(name, value);
</span><span class="cx">     SVGFitToViewBox::parseAttribute(this, name, value);
</span><span class="cx">     SVGZoomAndPan::parseAttribute(*this, name, value);
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGScriptElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGScriptElement.cpp (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGScriptElement.cpp        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGScriptElement.cpp        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -21,7 +21,6 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;SVGScriptElement.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;Attribute.h&quot;
</del><span class="cx"> #include &quot;Document.h&quot;
</span><span class="cx"> #include &quot;Event.h&quot;
</span><span class="cx"> #include &quot;EventNames.h&quot;
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGStopElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGStopElement.cpp (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGStopElement.cpp        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGStopElement.cpp        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -21,13 +21,11 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;SVGStopElement.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;Attribute.h&quot;
</del><span class="cx"> #include &quot;Document.h&quot;
</span><span class="cx"> #include &quot;RenderSVGGradientStop.h&quot;
</span><span class="cx"> #include &quot;RenderSVGResource.h&quot;
</span><span class="cx"> #include &quot;SVGGradientElement.h&quot;
</span><span class="cx"> #include &quot;SVGNames.h&quot;
</span><del>-#include &lt;wtf/NeverDestroyed.h&gt;
</del><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -52,21 +50,8 @@
</span><span class="cx">     return adoptRef(*new SVGStopElement(tagName, document));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool SVGStopElement::isSupportedAttribute(const QualifiedName&amp; attrName)
-{
-    static NeverDestroyed&lt;HashSet&lt;QualifiedName&gt;&gt; supportedAttributes;
-    if (supportedAttributes.get().isEmpty())
-        supportedAttributes.get().add(SVGNames::offsetAttr);
-    return supportedAttributes.get().contains&lt;SVGAttributeHashTranslator&gt;(attrName);
-}
-
</del><span class="cx"> void SVGStopElement::parseAttribute(const QualifiedName&amp; name, const AtomicString&amp; value)
</span><span class="cx"> {
</span><del>-    if (!isSupportedAttribute(name)) {
-        SVGElement::parseAttribute(name, value);
-        return;
-    }
-
</del><span class="cx">     if (name == SVGNames::offsetAttr) {
</span><span class="cx">         if (value.endsWith('%'))
</span><span class="cx">             setOffsetBaseValue(value.string().left(value.length() - 1).toFloat() / 100.0f);
</span><span class="lines">@@ -75,25 +60,20 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    ASSERT_NOT_REACHED();
</del><ins>+    SVGElement::parseAttribute(name, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void SVGStopElement::svgAttributeChanged(const QualifiedName&amp; attrName)
</span><span class="cx"> {
</span><del>-    if (!isSupportedAttribute(attrName)) {
-        SVGElement::svgAttributeChanged(attrName);
-        return;
-    }
-
-    InstanceInvalidationGuard guard(*this);
-
</del><span class="cx">     if (attrName == SVGNames::offsetAttr) {
</span><del>-        if (auto renderer = this-&gt;renderer())
</del><ins>+        if (auto renderer = this-&gt;renderer()) {
+            InstanceInvalidationGuard guard(*this);
</ins><span class="cx">             RenderSVGResource::markForLayoutAndParentResourceInvalidation(*renderer);
</span><ins>+        }
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    ASSERT_NOT_REACHED();
</del><ins>+    SVGElement::svgAttributeChanged(attrName);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> RenderPtr&lt;RenderElement&gt; SVGStopElement::createElementRenderer(Ref&lt;RenderStyle&gt;&amp;&amp; style)
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGStopElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGStopElement.h (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGStopElement.h        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGStopElement.h        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -35,7 +35,6 @@
</span><span class="cx"> private:
</span><span class="cx">     SVGStopElement(const QualifiedName&amp;, Document&amp;);
</span><span class="cx"> 
</span><del>-    bool isSupportedAttribute(const QualifiedName&amp;);
</del><span class="cx">     virtual void parseAttribute(const QualifiedName&amp;, const AtomicString&amp;) override;
</span><span class="cx">     virtual void svgAttributeChanged(const QualifiedName&amp;) override;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGStyleElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGStyleElement.cpp (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGStyleElement.cpp        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGStyleElement.cpp        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -23,12 +23,10 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;SVGStyleElement.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;Attribute.h&quot;
</del><span class="cx"> #include &quot;CSSStyleSheet.h&quot;
</span><span class="cx"> #include &quot;Document.h&quot;
</span><span class="cx"> #include &quot;ExceptionCode.h&quot;
</span><span class="cx"> #include &quot;SVGNames.h&quot;
</span><del>-#include &lt;wtf/NeverDestroyed.h&gt;
</del><span class="cx"> #include &lt;wtf/StdLibExtras.h&gt;
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="lines">@@ -96,24 +94,8 @@
</span><span class="cx">     setAttribute(SVGNames::titleAttr, title);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool SVGStyleElement::isSupportedAttribute(const QualifiedName&amp; attrName)
-{
-    static NeverDestroyed&lt;HashSet&lt;QualifiedName&gt;&gt; supportedAttributes;
-    if (supportedAttributes.get().isEmpty()) {
-        SVGLangSpace::addSupportedAttributes(supportedAttributes);
-        supportedAttributes.get().add(SVGNames::titleAttr);
-        supportedAttributes.get().add(SVGNames::mediaAttr);
-        supportedAttributes.get().add(SVGNames::typeAttr);
-    }
-    return supportedAttributes.get().contains&lt;SVGAttributeHashTranslator&gt;(attrName);
-}
-
</del><span class="cx"> void SVGStyleElement::parseAttribute(const QualifiedName&amp; name, const AtomicString&amp; value)
</span><span class="cx"> {
</span><del>-    if (!isSupportedAttribute(name)) {
-        SVGElement::parseAttribute(name, value);
-        return;
-    }
</del><span class="cx">     if (name == SVGNames::titleAttr) {
</span><span class="cx">         if (sheet())
</span><span class="cx">             sheet()-&gt;setTitle(value);
</span><span class="lines">@@ -127,10 +109,8 @@
</span><span class="cx">         m_styleSheetOwner.setMedia(value);
</span><span class="cx">         return;
</span><span class="cx">     }
</span><del>-    if (SVGLangSpace::parseAttribute(name, value))
-        return;
</del><span class="cx"> 
</span><del>-    ASSERT_NOT_REACHED();
</del><ins>+    SVGElement::parseAttribute(name, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void SVGStyleElement::finishParsingChildren()
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGStyleElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGStyleElement.h (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGStyleElement.h        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGStyleElement.h        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -49,7 +49,6 @@
</span><span class="cx"> private:
</span><span class="cx">     SVGStyleElement(const QualifiedName&amp;, Document&amp;, bool createdByParser);
</span><span class="cx"> 
</span><del>-    bool isSupportedAttribute(const QualifiedName&amp;);
</del><span class="cx">     virtual void parseAttribute(const QualifiedName&amp;, const AtomicString&amp;) override;
</span><span class="cx">     virtual InsertionNotificationRequest insertedInto(ContainerNode&amp;) override;
</span><span class="cx">     virtual void removedFrom(ContainerNode&amp;) override;
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGSymbolElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGSymbolElement.cpp (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGSymbolElement.cpp        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGSymbolElement.cpp        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -24,7 +24,6 @@
</span><span class="cx"> #include &quot;RenderSVGHiddenContainer.h&quot;
</span><span class="cx"> #include &quot;SVGFitToViewBox.h&quot;
</span><span class="cx"> #include &quot;SVGNames.h&quot;
</span><del>-#include &lt;wtf/NeverDestroyed.h&gt;
</del><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -52,46 +51,22 @@
</span><span class="cx">     return adoptRef(*new SVGSymbolElement(tagName, document));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool SVGSymbolElement::isSupportedAttribute(const QualifiedName&amp; attrName)
-{
-    static NeverDestroyed&lt;HashSet&lt;QualifiedName&gt;&gt; supportedAttributes;
-    if (supportedAttributes.get().isEmpty()) {
-        SVGLangSpace::addSupportedAttributes(supportedAttributes);
-        SVGExternalResourcesRequired::addSupportedAttributes(supportedAttributes);
-        SVGFitToViewBox::addSupportedAttributes(supportedAttributes);
-    }
-    return supportedAttributes.get().contains&lt;SVGAttributeHashTranslator&gt;(attrName);
-}
-
</del><span class="cx"> void SVGSymbolElement::parseAttribute(const QualifiedName&amp; name, const AtomicString&amp; value)
</span><span class="cx"> {
</span><del>-    if (!isSupportedAttribute(name)) {
-        SVGElement::parseAttribute(name, value);
-        return;
-    }
-
-    if (SVGLangSpace::parseAttribute(name, value))
-        return;
-    if (SVGExternalResourcesRequired::parseAttribute(name, value))
-        return;
-    if (SVGFitToViewBox::parseAttribute(this, name, value))
-        return;
-
-    ASSERT_NOT_REACHED();
</del><ins>+    SVGElement::parseAttribute(name, value);
+    SVGExternalResourcesRequired::parseAttribute(name, value);
+    SVGFitToViewBox::parseAttribute(this, name, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void SVGSymbolElement::svgAttributeChanged(const QualifiedName&amp; attrName)
</span><span class="cx"> {
</span><del>-    if (!isSupportedAttribute(attrName)) {
-        SVGElement::svgAttributeChanged(attrName);
</del><ins>+    if (attrName == SVGNames::viewBoxAttr) {
+        InstanceInvalidationGuard guard(*this);
+        updateRelativeLengthsInformation();
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    InstanceInvalidationGuard guard(*this);
-
-    // Every other property change is ignored.
-    if (attrName == SVGNames::viewBoxAttr)
-        updateRelativeLengthsInformation();
</del><ins>+    SVGElement::svgAttributeChanged(attrName);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool SVGSymbolElement::selfHasRelativeLengths() const
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGSymbolElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGSymbolElement.h (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGSymbolElement.h        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGSymbolElement.h        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -39,7 +39,6 @@
</span><span class="cx"> private:
</span><span class="cx">     SVGSymbolElement(const QualifiedName&amp;, Document&amp;);
</span><span class="cx"> 
</span><del>-    bool isSupportedAttribute(const QualifiedName&amp;);
</del><span class="cx">     virtual void parseAttribute(const QualifiedName&amp;, const AtomicString&amp;) override;
</span><span class="cx">     virtual void svgAttributeChanged(const QualifiedName&amp;) override;
</span><span class="cx">     virtual RenderPtr&lt;RenderElement&gt; createElementRenderer(Ref&lt;RenderStyle&gt;&amp;&amp;) override;
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGTRefElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGTRefElement.cpp (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGTRefElement.cpp        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGTRefElement.cpp        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -35,7 +35,6 @@
</span><span class="cx"> #include &quot;StyleInheritedData.h&quot;
</span><span class="cx"> #include &quot;Text.h&quot;
</span><span class="cx"> #include &quot;XLinkNames.h&quot;
</span><del>-#include &lt;wtf/NeverDestroyed.h&gt;
</del><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -177,44 +176,23 @@
</span><span class="cx">         document().accessSVGExtensions().addPendingResource(id, this);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool SVGTRefElement::isSupportedAttribute(const QualifiedName&amp; attrName)
-{
-    static NeverDestroyed&lt;HashSet&lt;QualifiedName&gt;&gt; supportedAttributes;
-    if (supportedAttributes.get().isEmpty())
-        SVGURIReference::addSupportedAttributes(supportedAttributes);
-    return supportedAttributes.get().contains&lt;SVGAttributeHashTranslator&gt;(attrName);
-}
-
</del><span class="cx"> void SVGTRefElement::parseAttribute(const QualifiedName&amp; name, const AtomicString&amp; value)
</span><span class="cx"> {
</span><del>-    if (!isSupportedAttribute(name)) {
-        SVGTextPositioningElement::parseAttribute(name, value);
-        return;
-    }
-
-    if (SVGURIReference::parseAttribute(name, value))
-        return;
-
-    ASSERT_NOT_REACHED();
</del><ins>+    SVGTextPositioningElement::parseAttribute(name, value);
+    SVGURIReference::parseAttribute(name, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void SVGTRefElement::svgAttributeChanged(const QualifiedName&amp; attrName)
</span><span class="cx"> {
</span><del>-    if (!isSupportedAttribute(attrName)) {
-        SVGTextPositioningElement::svgAttributeChanged(attrName);
-        return;
-    }
-
-    InstanceInvalidationGuard guard(*this);
-
</del><span class="cx">     if (SVGURIReference::isKnownAttribute(attrName)) {
</span><ins>+        InstanceInvalidationGuard guard(*this);
</ins><span class="cx">         buildPendingResource();
</span><span class="cx">         if (auto renderer = this-&gt;renderer())
</span><span class="cx">             RenderSVGResource::markForLayoutAndParentResourceInvalidation(*renderer);
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    ASSERT_NOT_REACHED();
</del><ins>+    SVGTextPositioningElement::svgAttributeChanged(attrName);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> RenderPtr&lt;RenderElement&gt; SVGTRefElement::createElementRenderer(Ref&lt;RenderStyle&gt;&amp;&amp; style)
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGTRefElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGTRefElement.h (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGTRefElement.h        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGTRefElement.h        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -28,21 +28,16 @@
</span><span class="cx"> 
</span><span class="cx"> class SVGTRefTargetEventListener;
</span><span class="cx"> 
</span><del>-class SVGTRefElement final : public SVGTextPositioningElement,
-                             public SVGURIReference {
</del><ins>+class SVGTRefElement final : public SVGTextPositioningElement, public SVGURIReference {
</ins><span class="cx"> public:
</span><span class="cx">     static Ref&lt;SVGTRefElement&gt; create(const QualifiedName&amp;, Document&amp;);
</span><span class="cx"> 
</span><del>-protected:
-    virtual void didNotifySubtreeInsertions(ContainerNode*) override;
-
</del><span class="cx"> private:
</span><span class="cx">     friend class SVGTRefTargetEventListener;
</span><span class="cx"> 
</span><span class="cx">     SVGTRefElement(const QualifiedName&amp;, Document&amp;);
</span><span class="cx">     virtual ~SVGTRefElement();
</span><span class="cx"> 
</span><del>-    bool isSupportedAttribute(const QualifiedName&amp;);
</del><span class="cx">     virtual void parseAttribute(const QualifiedName&amp;, const AtomicString&amp;) override;
</span><span class="cx">     virtual void svgAttributeChanged(const QualifiedName&amp;) override;
</span><span class="cx"> 
</span><span class="lines">@@ -52,6 +47,7 @@
</span><span class="cx"> 
</span><span class="cx">     virtual InsertionNotificationRequest insertedInto(ContainerNode&amp;) override;
</span><span class="cx">     virtual void removedFrom(ContainerNode&amp;) override;
</span><ins>+    virtual void didNotifySubtreeInsertions(ContainerNode*) override;
</ins><span class="cx"> 
</span><span class="cx">     virtual void clearTarget() override;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGTestscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGTests.cpp (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGTests.cpp        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGTests.cpp        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -22,7 +22,6 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;SVGTests.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;Attribute.h&quot;
</del><span class="cx"> #include &quot;DOMImplementation.h&quot;
</span><span class="cx"> #include &quot;HTMLNames.h&quot;
</span><span class="cx"> #include &quot;Language.h&quot;
</span><span class="lines">@@ -102,21 +101,14 @@
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool SVGTests::parseAttribute(const QualifiedName&amp; attributeName, const AtomicString&amp; value)
</del><ins>+void SVGTests::parseAttribute(const QualifiedName&amp; attributeName, const AtomicString&amp; value)
</ins><span class="cx"> {
</span><del>-    if (attributeName == requiredFeaturesAttr) {
</del><ins>+    if (attributeName == requiredFeaturesAttr)
</ins><span class="cx">         m_requiredFeatures.value.reset(value);
</span><del>-        return true;
-    }
-    if (attributeName == requiredExtensionsAttr) {
</del><ins>+    if (attributeName == requiredExtensionsAttr)
</ins><span class="cx">         m_requiredExtensions.value.reset(value);
</span><del>-        return true;
-    }
-    if (attributeName == systemLanguageAttr) {
</del><ins>+    if (attributeName == systemLanguageAttr)
</ins><span class="cx">         m_systemLanguage.value.reset(value);
</span><del>-        return true;
-    }
-    return false;
</del><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool SVGTests::isKnownAttribute(const QualifiedName&amp; attributeName)
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGTestsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGTests.h (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGTests.h        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGTests.h        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -37,10 +37,11 @@
</span><span class="cx">     static bool hasExtension(const String&amp;);
</span><span class="cx">     bool isValid() const;
</span><span class="cx"> 
</span><del>-    bool parseAttribute(const QualifiedName&amp;, const AtomicString&amp;);
</del><ins>+    void parseAttribute(const QualifiedName&amp;, const AtomicString&amp;);
+
</ins><span class="cx">     static bool isKnownAttribute(const QualifiedName&amp;);
</span><ins>+    static void addSupportedAttributes(HashSet&lt;QualifiedName&gt;&amp;);
</ins><span class="cx"> 
</span><del>-    static void addSupportedAttributes(HashSet&lt;QualifiedName&gt;&amp;);
</del><span class="cx">     static bool handleAttributeChange(SVGElement*, const QualifiedName&amp;);
</span><span class="cx"> 
</span><span class="cx">     static const SVGAttributeToPropertyMap&amp; attributeToPropertyMap();
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGTextContentElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGTextContentElement.cpp (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGTextContentElement.cpp        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGTextContentElement.cpp        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -228,36 +228,32 @@
</span><span class="cx"> 
</span><span class="cx"> void SVGTextContentElement::collectStyleForPresentationAttribute(const QualifiedName&amp; name, const AtomicString&amp; value, MutableStyleProperties&amp; style)
</span><span class="cx"> {
</span><del>-    if (!isSupportedAttribute(name))
-        SVGGraphicsElement::collectStyleForPresentationAttribute(name, value, style);
-    else if (name.matches(XMLNames::spaceAttr)) {
-        DEPRECATED_DEFINE_STATIC_LOCAL(const AtomicString, preserveString, (&quot;preserve&quot;, AtomicString::ConstructFromLiteral));
-
-        if (value == preserveString)
</del><ins>+    if (name.matches(XMLNames::spaceAttr)) {
+        if (value == &quot;preserve&quot;)
</ins><span class="cx">             addPropertyToPresentationAttributeStyle(style, CSSPropertyWhiteSpace, CSSValuePre);
</span><span class="cx">         else
</span><span class="cx">             addPropertyToPresentationAttributeStyle(style, CSSPropertyWhiteSpace, CSSValueNowrap);
</span><ins>+        return;
</ins><span class="cx">     }
</span><ins>+
+    SVGGraphicsElement::collectStyleForPresentationAttribute(name, value, style);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void SVGTextContentElement::parseAttribute(const QualifiedName&amp; name, const AtomicString&amp; value)
</span><span class="cx"> {
</span><span class="cx">     SVGParsingError parseError = NoError;
</span><span class="cx"> 
</span><del>-    if (!isSupportedAttribute(name))
-        SVGGraphicsElement::parseAttribute(name, value);
-    else if (name == SVGNames::lengthAdjustAttr) {
-        SVGLengthAdjustType propertyValue = SVGPropertyTraits&lt;SVGLengthAdjustType&gt;::fromString(value);
</del><ins>+    if (name == SVGNames::lengthAdjustAttr) {
+        auto propertyValue = SVGPropertyTraits&lt;SVGLengthAdjustType&gt;::fromString(value);
</ins><span class="cx">         if (propertyValue &gt; 0)
</span><span class="cx">             setLengthAdjustBaseValue(propertyValue);
</span><del>-    } else if (name == SVGNames::textLengthAttr) {
</del><ins>+    } else if (name == SVGNames::textLengthAttr)
</ins><span class="cx">         m_textLength.value = SVGLength::construct(LengthModeOther, value, parseError, ForbidNegativeLengths);
</span><del>-    } else if (SVGExternalResourcesRequired::parseAttribute(name, value)) {
-    } else if (SVGLangSpace::parseAttribute(name, value)) {
-    } else
-        ASSERT_NOT_REACHED();
</del><span class="cx"> 
</span><span class="cx">     reportAttributeParsingError(parseError, name, value);
</span><ins>+
+    SVGGraphicsElement::parseAttribute(name, value);
+    SVGExternalResourcesRequired::parseAttribute(name, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void SVGTextContentElement::svgAttributeChanged(const QualifiedName&amp; attrName)
</span><span class="lines">@@ -267,13 +263,13 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    InstanceInvalidationGuard guard(*this);
-
</del><span class="cx">     if (attrName == SVGNames::textLengthAttr)
</span><span class="cx">         m_specifiedTextLength = m_textLength.value;
</span><span class="cx"> 
</span><del>-    if (auto renderer = this-&gt;renderer())
</del><ins>+    if (auto renderer = this-&gt;renderer()) {
+        InstanceInvalidationGuard guard(*this);
</ins><span class="cx">         RenderSVGResource::markForLayoutAndParentResourceInvalidation(*renderer);
</span><ins>+    }
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool SVGTextContentElement::selfHasRelativeLengths() const
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGTextContentElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGTextContentElement.h (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGTextContentElement.h        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGTextContentElement.h        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -96,7 +96,6 @@
</span><span class="cx"> 
</span><span class="cx">     virtual bool isValid() const override { return SVGTests::isValid(); }
</span><span class="cx"> 
</span><del>-    bool isSupportedAttribute(const QualifiedName&amp;);
</del><span class="cx">     virtual void parseAttribute(const QualifiedName&amp;, const AtomicString&amp;) override;
</span><span class="cx">     virtual bool isPresentationAttribute(const QualifiedName&amp;) const override;
</span><span class="cx">     virtual void collectStyleForPresentationAttribute(const QualifiedName&amp;, const AtomicString&amp;, MutableStyleProperties&amp;) override;
</span><span class="lines">@@ -107,6 +106,8 @@
</span><span class="cx"> private:
</span><span class="cx">     virtual bool isTextContent() const override final { return true; }
</span><span class="cx"> 
</span><ins>+    static bool isSupportedAttribute(const QualifiedName&amp;);
+
</ins><span class="cx">     // Custom 'textLength' property
</span><span class="cx">     static void synchronizeTextLength(SVGElement* contextElement);
</span><span class="cx">     static Ref&lt;SVGAnimatedProperty&gt; lookupOrCreateTextLengthWrapper(SVGElement* contextElement);
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGTextElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGTextElement.cpp (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGTextElement.cpp        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGTextElement.cpp        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -21,7 +21,6 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;SVGTextElement.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;Attribute.h&quot;
</del><span class="cx"> #include &quot;RenderSVGResource.h&quot;
</span><span class="cx"> #include &quot;RenderSVGText.h&quot;
</span><span class="cx"> #include &quot;SVGNames.h&quot;
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGTextPathElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGTextPathElement.cpp (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGTextPathElement.cpp        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGTextPathElement.cpp        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -21,7 +21,6 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;SVGTextPathElement.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;Attribute.h&quot;
</del><span class="cx"> #include &quot;RenderSVGResource.h&quot;
</span><span class="cx"> #include &quot;RenderSVGTextPath.h&quot;
</span><span class="cx"> #include &quot;SVGNames.h&quot;
</span><span class="lines">@@ -85,9 +84,7 @@
</span><span class="cx"> {
</span><span class="cx">     SVGParsingError parseError = NoError;
</span><span class="cx"> 
</span><del>-    if (!isSupportedAttribute(name))
-        SVGTextContentElement::parseAttribute(name, value);
-    else if (name == SVGNames::startOffsetAttr)
</del><ins>+    if (name == SVGNames::startOffsetAttr)
</ins><span class="cx">         setStartOffsetBaseValue(SVGLength::construct(LengthModeOther, value, parseError));
</span><span class="cx">     else if (name == SVGNames::methodAttr) {
</span><span class="cx">         SVGTextPathMethodType propertyValue = SVGPropertyTraits&lt;SVGTextPathMethodType&gt;::fromString(value);
</span><span class="lines">@@ -97,11 +94,12 @@
</span><span class="cx">         SVGTextPathSpacingType propertyValue = SVGPropertyTraits&lt;SVGTextPathSpacingType&gt;::fromString(value);
</span><span class="cx">         if (propertyValue &gt; 0)
</span><span class="cx">             setSpacingBaseValue(propertyValue);
</span><del>-    } else if (SVGURIReference::parseAttribute(name, value)) {
-    } else
-        ASSERT_NOT_REACHED();
</del><ins>+    }
</ins><span class="cx"> 
</span><span class="cx">     reportAttributeParsingError(parseError, name, value);
</span><ins>+
+    SVGTextContentElement::parseAttribute(name, value);
+    SVGURIReference::parseAttribute(name, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void SVGTextPathElement::svgAttributeChanged(const QualifiedName&amp; attrName)
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGTextPathElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGTextPathElement.h (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGTextPathElement.h        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGTextPathElement.h        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -125,7 +125,7 @@
</span><span class="cx">     virtual InsertionNotificationRequest insertedInto(ContainerNode&amp;) override;
</span><span class="cx">     virtual void removedFrom(ContainerNode&amp;) override;
</span><span class="cx"> 
</span><del>-    bool isSupportedAttribute(const QualifiedName&amp;);
</del><ins>+    static bool isSupportedAttribute(const QualifiedName&amp;);
</ins><span class="cx">     virtual void parseAttribute(const QualifiedName&amp;, const AtomicString&amp;) override;
</span><span class="cx">     virtual void svgAttributeChanged(const QualifiedName&amp;) override;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGTextPositioningElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGTextPositioningElement.cpp (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGTextPositioningElement.cpp        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGTextPositioningElement.cpp        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -22,7 +22,6 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;SVGTextPositioningElement.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;Attribute.h&quot;
</del><span class="cx"> #include &quot;RenderSVGInline.h&quot;
</span><span class="cx"> #include &quot;RenderSVGResource.h&quot;
</span><span class="cx"> #include &quot;RenderSVGText.h&quot;
</span><span class="lines">@@ -30,7 +29,6 @@
</span><span class="cx"> #include &quot;SVGLengthList.h&quot;
</span><span class="cx"> #include &quot;SVGNames.h&quot;
</span><span class="cx"> #include &quot;SVGNumberList.h&quot;
</span><del>-#include &lt;wtf/NeverDestroyed.h&gt;
</del><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -56,26 +54,8 @@
</span><span class="cx">     registerAnimatedPropertiesForSVGTextPositioningElement();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool SVGTextPositioningElement::isSupportedAttribute(const QualifiedName&amp; attrName)
-{
-    static NeverDestroyed&lt;HashSet&lt;QualifiedName&gt;&gt; supportedAttributes;
-    if (supportedAttributes.get().isEmpty()) {
-        supportedAttributes.get().add(SVGNames::xAttr);
-        supportedAttributes.get().add(SVGNames::yAttr);
-        supportedAttributes.get().add(SVGNames::dxAttr);
-        supportedAttributes.get().add(SVGNames::dyAttr);
-        supportedAttributes.get().add(SVGNames::rotateAttr);
-    }
-    return supportedAttributes.get().contains&lt;SVGAttributeHashTranslator&gt;(attrName);
-}
-
</del><span class="cx"> void SVGTextPositioningElement::parseAttribute(const QualifiedName&amp; name, const AtomicString&amp; value)
</span><span class="cx"> {
</span><del>-    if (!isSupportedAttribute(name)) {
-        SVGTextContentElement::parseAttribute(name, value);
-        return;
-    }
-
</del><span class="cx">     if (name == SVGNames::xAttr) {
</span><span class="cx">         SVGLengthList newList;
</span><span class="cx">         newList.parse(value, LengthModeWidth);
</span><span class="lines">@@ -116,7 +96,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    ASSERT_NOT_REACHED();
</del><ins>+    SVGTextContentElement::parseAttribute(name, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void SVGTextPositioningElement::collectStyleForPresentationAttribute(const QualifiedName&amp; name, const AtomicString&amp; value, MutableStyleProperties&amp; style)
</span><span class="lines">@@ -135,33 +115,22 @@
</span><span class="cx"> 
</span><span class="cx"> void SVGTextPositioningElement::svgAttributeChanged(const QualifiedName&amp; attrName)
</span><span class="cx"> {
</span><del>-    if (!isSupportedAttribute(attrName)) {
-        SVGTextContentElement::svgAttributeChanged(attrName);
-        return;
-    }
</del><ins>+    if (attrName == SVGNames::xAttr || attrName == SVGNames::yAttr || attrName == SVGNames::dxAttr || attrName == SVGNames::dyAttr || attrName == SVGNames::rotateAttr) {
+        InstanceInvalidationGuard guard(*this);
</ins><span class="cx"> 
</span><del>-    InstanceInvalidationGuard guard(*this);
</del><ins>+        if (attrName != SVGNames::rotateAttr)
+            updateRelativeLengthsInformation();
</ins><span class="cx"> 
</span><del>-    bool updateRelativeLengths = attrName == SVGNames::xAttr
-                              || attrName == SVGNames::yAttr
-                              || attrName == SVGNames::dxAttr
-                              || attrName == SVGNames::dyAttr;
</del><ins>+        if (auto renderer = this-&gt;renderer()) {
+            if (auto* textAncestor = RenderSVGText::locateRenderSVGTextAncestor(*renderer))
+                textAncestor-&gt;setNeedsPositioningValuesUpdate();
+            RenderSVGResource::markForLayoutAndParentResourceInvalidation(*renderer);
+        }
</ins><span class="cx"> 
</span><del>-    if (updateRelativeLengths)
-        updateRelativeLengthsInformation();
-
-    auto renderer = this-&gt;renderer();
-    if (!renderer)
</del><span class="cx">         return;
</span><del>-
-    if (updateRelativeLengths || attrName == SVGNames::rotateAttr) {
-        if (auto* textAncestor = RenderSVGText::locateRenderSVGTextAncestor(*renderer))
-            textAncestor-&gt;setNeedsPositioningValuesUpdate();
-        RenderSVGResource::markForLayoutAndParentResourceInvalidation(*renderer);
-        return;
</del><span class="cx">     }
</span><span class="cx"> 
</span><del>-    ASSERT_NOT_REACHED();
</del><ins>+    SVGTextContentElement::svgAttributeChanged(attrName);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> SVGTextPositioningElement* SVGTextPositioningElement::elementFromRenderer(RenderBoxModelObject&amp; renderer)
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGTextPositioningElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGTextPositioningElement.h (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGTextPositioningElement.h        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGTextPositioningElement.h        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -34,12 +34,13 @@
</span><span class="cx"> protected:
</span><span class="cx">     SVGTextPositioningElement(const QualifiedName&amp;, Document&amp;);
</span><span class="cx"> 
</span><del>-    virtual bool isPresentationAttribute(const QualifiedName&amp;) const override final;
-    virtual void collectStyleForPresentationAttribute(const QualifiedName&amp;, const AtomicString&amp;, MutableStyleProperties&amp;) override final;
-    bool isSupportedAttribute(const QualifiedName&amp;);
</del><span class="cx">     virtual void parseAttribute(const QualifiedName&amp;, const AtomicString&amp;) override;
</span><span class="cx">     virtual void svgAttributeChanged(const QualifiedName&amp;) override;
</span><span class="cx"> 
</span><ins>+private:
+    virtual bool isPresentationAttribute(const QualifiedName&amp;) const override final;
+    virtual void collectStyleForPresentationAttribute(const QualifiedName&amp;, const AtomicString&amp;, MutableStyleProperties&amp;) override final;
+
</ins><span class="cx">     BEGIN_DECLARE_ANIMATED_PROPERTIES(SVGTextPositioningElement)
</span><span class="cx">         DECLARE_ANIMATED_LENGTH_LIST(X, x)
</span><span class="cx">         DECLARE_ANIMATED_LENGTH_LIST(Y, y)
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGURIReferencecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGURIReference.cpp (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGURIReference.cpp        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGURIReference.cpp        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -21,7 +21,6 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;SVGURIReference.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;Attribute.h&quot;
</del><span class="cx"> #include &quot;Document.h&quot;
</span><span class="cx"> #include &quot;Element.h&quot;
</span><span class="cx"> #include &quot;URL.h&quot;
</span><span class="lines">@@ -29,14 +28,10 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-bool SVGURIReference::parseAttribute(const QualifiedName&amp; name, const AtomicString&amp; value)
</del><ins>+void SVGURIReference::parseAttribute(const QualifiedName&amp; name, const AtomicString&amp; value)
</ins><span class="cx"> {
</span><del>-    if (name.matches(XLinkNames::hrefAttr)) {
</del><ins>+    if (name.matches(XLinkNames::hrefAttr))
</ins><span class="cx">         setHrefBaseValue(value);
</span><del>-        return true;
-    }
-
-    return false;
</del><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool SVGURIReference::isKnownAttribute(const QualifiedName&amp; attrName)
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGURIReferenceh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGURIReference.h (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGURIReference.h        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGURIReference.h        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -26,21 +26,18 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-class Attribute;
-class Element;
-
</del><span class="cx"> class SVGURIReference {
</span><span class="cx"> public:
</span><span class="cx">     virtual ~SVGURIReference() { }
</span><span class="cx"> 
</span><del>-    bool parseAttribute(const QualifiedName&amp;, const AtomicString&amp;);
-    bool isKnownAttribute(const QualifiedName&amp;);
-    void addSupportedAttributes(HashSet&lt;QualifiedName&gt;&amp;);
</del><ins>+    void parseAttribute(const QualifiedName&amp;, const AtomicString&amp;);
+    static bool isKnownAttribute(const QualifiedName&amp;);
+    static void addSupportedAttributes(HashSet&lt;QualifiedName&gt;&amp;);
</ins><span class="cx"> 
</span><span class="cx">     static String fragmentIdentifierFromIRIString(const String&amp;, Document&amp;);
</span><span class="cx">     static Element* targetElementFromIRIString(const String&amp;, Document&amp;, String* = 0, Document* = 0);
</span><span class="cx"> 
</span><del>-    static inline bool isExternalURIReference(const String&amp; uri, Document&amp; document)
</del><ins>+    static bool isExternalURIReference(const String&amp; uri, Document&amp; document)
</ins><span class="cx">     {
</span><span class="cx">         // Fragment-only URIs are always internal
</span><span class="cx">         if (uri.startsWith('#'))
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGUseElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGUseElement.cpp (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGUseElement.cpp        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGUseElement.cpp        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -98,7 +98,6 @@
</span><span class="cx"> 
</span><span class="cx">     SVGExternalResourcesRequired::parseAttribute(name, value);
</span><span class="cx">     SVGGraphicsElement::parseAttribute(name, value);
</span><del>-    SVGLangSpace::parseAttribute(name, value);
</del><span class="cx">     SVGURIReference::parseAttribute(name, value);
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGViewElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGViewElement.h (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGViewElement.h        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/SVGViewElement.h        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -50,7 +50,6 @@
</span><span class="cx">     SVGViewElement(const QualifiedName&amp;, Document&amp;);
</span><span class="cx"> 
</span><span class="cx">     // FIXME: svgAttributeChanged missing.
</span><del>-    bool isSupportedAttribute(const QualifiedName&amp;);
</del><span class="cx">     virtual void parseAttribute(const QualifiedName&amp;, const AtomicString&amp;) override;
</span><span class="cx"> 
</span><span class="cx">     virtual bool rendererIsNeeded(const RenderStyle&amp;) override { return false; }
</span></span></pre></div>
<a id="trunkSourceWebCoresvganimationSVGSMILElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/animation/SVGSMILElement.cpp (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/animation/SVGSMILElement.cpp        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/animation/SVGSMILElement.cpp        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -26,7 +26,6 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;SVGSMILElement.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;Attribute.h&quot;
</del><span class="cx"> #include &quot;CSSPropertyNames.h&quot;
</span><span class="cx"> #include &quot;Document.h&quot;
</span><span class="cx"> #include &quot;Event.h&quot;
</span></span></pre></div>
<a id="trunkSourceWebCoresvganimationSVGSMILElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/animation/SVGSMILElement.h (182120 => 182121)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/animation/SVGSMILElement.h        2015-03-29 20:38:07 UTC (rev 182120)
+++ trunk/Source/WebCore/svg/animation/SVGSMILElement.h        2015-03-29 20:40:15 UTC (rev 182121)
</span><span class="lines">@@ -42,7 +42,6 @@
</span><span class="cx">     SVGSMILElement(const QualifiedName&amp;, Document&amp;);
</span><span class="cx">     virtual ~SVGSMILElement();
</span><span class="cx"> 
</span><del>-    bool isSupportedAttribute(const QualifiedName&amp;);
</del><span class="cx">     virtual void parseAttribute(const QualifiedName&amp;, const AtomicString&amp;) override;
</span><span class="cx">     virtual void svgAttributeChanged(const QualifiedName&amp;) override;
</span><span class="cx">     virtual InsertionNotificationRequest insertedInto(ContainerNode&amp;) override;
</span><span class="lines">@@ -132,6 +131,8 @@
</span><span class="cx">     void endedActiveInterval();
</span><span class="cx">     virtual void updateAnimation(float percent, unsigned repeat, SVGSMILElement* resultElement) = 0;
</span><span class="cx"> 
</span><ins>+    static bool isSupportedAttribute(const QualifiedName&amp;);
+
</ins><span class="cx">     enum BeginOrEnd { Begin, End };
</span><span class="cx">     
</span><span class="cx">     SMILTime findInstanceTime(BeginOrEnd, SMILTime minimumTime, bool equalsMinimumOK) const;
</span></span></pre>
</div>
</div>

</body>
</html>