| Index: Source/core/svg/SVGTextContentElement.cpp
|
| diff --git a/Source/core/svg/SVGTextContentElement.cpp b/Source/core/svg/SVGTextContentElement.cpp
|
| index 9674d921c1004d8ea61f2b77e43ef7d26ea9073c..feeda7f9af4927361a487652239e88b2540c7c2e 100644
|
| --- a/Source/core/svg/SVGTextContentElement.cpp
|
| +++ b/Source/core/svg/SVGTextContentElement.cpp
|
| @@ -200,17 +200,6 @@ void SVGTextContentElement::selectSubString(unsigned charnum, unsigned nchars, E
|
| document().frame()->selection().setSelection(VisibleSelection(start, end));
|
| }
|
|
|
| -bool SVGTextContentElement::isSupportedAttribute(const QualifiedName& attrName)
|
| -{
|
| - DEFINE_STATIC_LOCAL(HashSet<QualifiedName>, supportedAttributes, ());
|
| - if (supportedAttributes.isEmpty()) {
|
| - supportedAttributes.add(SVGNames::lengthAdjustAttr);
|
| - supportedAttributes.add(SVGNames::textLengthAttr);
|
| - supportedAttributes.add(XMLNames::spaceAttr);
|
| - }
|
| - return supportedAttributes.contains<SVGAttributeHashTranslator>(attrName);
|
| -}
|
| -
|
| bool SVGTextContentElement::isPresentationAttribute(const QualifiedName& name) const
|
| {
|
| if (name.matches(XMLNames::spaceAttr))
|
| @@ -220,9 +209,7 @@ bool SVGTextContentElement::isPresentationAttribute(const QualifiedName& name) c
|
|
|
| void SVGTextContentElement::collectStyleForPresentationAttribute(const QualifiedName& name, const AtomicString& value, MutableStylePropertySet* style)
|
| {
|
| - if (!isSupportedAttribute(name))
|
| - SVGGraphicsElement::collectStyleForPresentationAttribute(name, value, style);
|
| - else if (name.matches(XMLNames::spaceAttr)) {
|
| + if (name.matches(XMLNames::spaceAttr)) {
|
| DEFINE_STATIC_LOCAL(const AtomicString, preserveString, ("preserve", AtomicString::ConstructFromLiteral));
|
|
|
| if (value == preserveString) {
|
| @@ -232,23 +219,28 @@ void SVGTextContentElement::collectStyleForPresentationAttribute(const Qualified
|
| UseCounter::count(document(), UseCounter::WhiteSpaceNowrapFromXMLSpace);
|
| addPropertyToPresentationAttributeStyle(style, CSSPropertyWhiteSpace, CSSValueNowrap);
|
| }
|
| + } else {
|
| + SVGGraphicsElement::collectStyleForPresentationAttribute(name, value, style);
|
| }
|
| }
|
|
|
| void SVGTextContentElement::svgAttributeChanged(const QualifiedName& attrName)
|
| {
|
| - if (!isSupportedAttribute(attrName)) {
|
| - SVGGraphicsElement::svgAttributeChanged(attrName);
|
| - return;
|
| - }
|
| -
|
| if (attrName == SVGNames::textLengthAttr)
|
| m_textLengthIsSpecifiedByUser = true;
|
|
|
| - SVGElement::InvalidationGuard invalidationGuard(this);
|
| + if (attrName == SVGNames::textLengthAttr
|
| + || attrName == SVGNames::lengthAdjustAttr
|
| + || attrName == XMLNames::spaceAttr) {
|
| + SVGElement::InvalidationGuard invalidationGuard(this);
|
| +
|
| + if (LayoutObject* renderer = this->layoutObject())
|
| + markForLayoutAndParentResourceInvalidation(renderer);
|
| +
|
| + return;
|
| + }
|
|
|
| - if (LayoutObject* renderer = this->layoutObject())
|
| - markForLayoutAndParentResourceInvalidation(renderer);
|
| + SVGGraphicsElement::svgAttributeChanged(attrName);
|
| }
|
|
|
| bool SVGTextContentElement::selfHasRelativeLengths() const
|
|
|