Changeset 179695 in webkit
- Timestamp:
- Feb 5, 2015 10:07:10 AM (9 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 58 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r179693 r179695 1 2015-02-05 Darin Adler <darin@apple.com> 2 3 Move InstanceInvalidationGuard/UpdateBlocker to SVGElement from SVGElementInstance 4 https://bugs.webkit.org/show_bug.cgi?id=141148 5 6 Reviewed by Brent Fulgham and Anders Carlsson. 7 8 Inspired by this change Rob Buis made in Blink: 9 10 http://src.chromium.org/viewvc/blink?view=revision&revision=173343 11 12 I actually wrote the whole thing and then discovered we did it almost identically. 13 14 * svg/SVGAnimatedTypeAnimator.cpp: 15 (WebCore::SVGElementAnimatedPropertyList::setInstanceUpdatesBlocked): Added this 16 helper function to get around a circular header dependency. 17 * svg/SVGAnimatedTypeAnimator.h: 18 (WebCore::SVGAnimatedTypeAnimator::executeAction): Use setInstanceUpdatesBlocked. 19 20 * svg/SVGElement.cpp: 21 (WebCore::SVGElement::removedFrom): Use invalidateInstances. 22 (WebCore::SVGElement::finishParsingChildren): Ditto. 23 (WebCore::SVGElement::svgAttributeChanged): Ditto. 24 (WebCore::SVGElement::childrenChanged): Ditto. 25 (WebCore::SVGElement::setInstanceUpdatesBlocked): Added an assertion that will 26 catch anyone who nests InstanceUpdateBlocker by accident. 27 (WebCore::SVGElement::invalidateInstances): Moved this here from 28 SVGElementInstance::invalidateAllInstancesOfElement. I had already modified this 29 so it had nothing to do with SVGElementInstance, so it was a simple matter of 30 converting this into a member function. Added a FIXME about the mysterious 31 updateStyleIfNeeded that makes multiple tests fail if it's removed. 32 33 * svg/SVGElement.h: Added public InstanceUpdateBlocker class, protected 34 InstanceInvalidationGuard class, and private invalidateInstances function. 35 Unlike the ones in SVGElementInstance these use references so they are then 36 not copyable without using the WTF_MAKE_NONCOPYABLE macro. 37 38 * svg/SVGElementInstance.cpp: 39 (WebCore::SVGElementInstance::invalidateAllInstancesOfElement): Deleted. 40 (WebCore::SVGElementInstance::InstanceUpdateBlocker::InstanceUpdateBlocker): Deleted. 41 (WebCore::SVGElementInstance::InstanceUpdateBlocker::~InstanceUpdateBlocker): Deleted. 42 * svg/SVGElementInstance.h: Removed InvalidationGuard, InstanceUpdateBlocker, and 43 invalidateAllInstancesOfElement. Didn't do any further cleanup since we soon will 44 delete this entire file. 45 46 * svg/SVGAElement.cpp: 47 (WebCore::SVGAElement::svgAttributeChanged): Updated to use new name and reference 48 instead of pointer. 49 * svg/SVGAnimateElementBase.cpp: 50 (WebCore::applyCSSPropertyToTargetAndInstances): Ditto. 51 (WebCore::removeCSSPropertyFromTargetAndInstances): Ditto. 52 (WebCore::notifyTargetAndInstancesAboutAnimValChange): Ditto. 53 * svg/SVGAnimatedPath.cpp: 54 (WebCore::SVGAnimatedPathAnimator::startAnimValAnimation): Ditto. 55 * svg/SVGCircleElement.cpp: 56 (WebCore::SVGCircleElement::svgAttributeChanged): Ditto. 57 * svg/SVGClipPathElement.cpp: 58 (WebCore::SVGClipPathElement::svgAttributeChanged): Ditto. 59 * svg/SVGComponentTransferFunctionElement.cpp: 60 (WebCore::SVGComponentTransferFunctionElement::svgAttributeChanged): Ditto. 61 * svg/SVGCursorElement.cpp: 62 (WebCore::SVGCursorElement::svgAttributeChanged): Ditto. 63 * svg/SVGEllipseElement.cpp: 64 (WebCore::SVGEllipseElement::svgAttributeChanged): Ditto. 65 * svg/SVGFEBlendElement.cpp: 66 (WebCore::SVGFEBlendElement::svgAttributeChanged): Ditto. 67 * svg/SVGFEColorMatrixElement.cpp: 68 (WebCore::SVGFEColorMatrixElement::svgAttributeChanged): Ditto. 69 * svg/SVGFECompositeElement.cpp: 70 (WebCore::SVGFECompositeElement::svgAttributeChanged): Ditto. 71 * svg/SVGFEConvolveMatrixElement.cpp: 72 (WebCore::SVGFEConvolveMatrixElement::svgAttributeChanged): Ditto. 73 * svg/SVGFEDiffuseLightingElement.cpp: 74 (WebCore::SVGFEDiffuseLightingElement::svgAttributeChanged): Ditto. 75 * svg/SVGFEDisplacementMapElement.cpp: 76 (WebCore::SVGFEDisplacementMapElement::svgAttributeChanged): Ditto. 77 * svg/SVGFEDropShadowElement.cpp: 78 (WebCore::SVGFEDropShadowElement::svgAttributeChanged): Ditto. 79 * svg/SVGFEGaussianBlurElement.cpp: 80 (WebCore::SVGFEGaussianBlurElement::svgAttributeChanged): Ditto. 81 * svg/SVGFEImageElement.cpp: 82 (WebCore::SVGFEImageElement::svgAttributeChanged): Ditto. 83 * svg/SVGFELightElement.cpp: 84 (WebCore::SVGFELightElement::svgAttributeChanged): Ditto. 85 * svg/SVGFEMergeNodeElement.cpp: 86 (WebCore::SVGFEMergeNodeElement::svgAttributeChanged): Ditto. 87 * svg/SVGFEMorphologyElement.cpp: 88 (WebCore::SVGFEMorphologyElement::svgAttributeChanged): Ditto. 89 * svg/SVGFEOffsetElement.cpp: 90 (WebCore::SVGFEOffsetElement::svgAttributeChanged): Ditto. 91 * svg/SVGFESpecularLightingElement.cpp: 92 (WebCore::SVGFESpecularLightingElement::svgAttributeChanged): Ditto. 93 * svg/SVGFETileElement.cpp: 94 (WebCore::SVGFETileElement::svgAttributeChanged): Ditto. 95 * svg/SVGFETurbulenceElement.cpp: 96 (WebCore::SVGFETurbulenceElement::svgAttributeChanged): Ditto. 97 * svg/SVGFilterElement.cpp: 98 (WebCore::SVGFilterElement::svgAttributeChanged): Ditto. 99 * svg/SVGFilterPrimitiveStandardAttributes.cpp: 100 (WebCore::SVGFilterPrimitiveStandardAttributes::svgAttributeChanged): Ditto. 101 * svg/SVGForeignObjectElement.cpp: 102 (WebCore::SVGForeignObjectElement::svgAttributeChanged): Ditto. 103 * svg/SVGGElement.cpp: 104 (WebCore::SVGGElement::svgAttributeChanged): Ditto. 105 * svg/SVGGradientElement.cpp: 106 (WebCore::SVGGradientElement::svgAttributeChanged): Ditto. 107 * svg/SVGGraphicsElement.cpp: 108 (WebCore::SVGGraphicsElement::svgAttributeChanged): Ditto. 109 * svg/SVGImageElement.cpp: 110 (WebCore::SVGImageElement::svgAttributeChanged): Ditto. 111 * svg/SVGLineElement.cpp: 112 (WebCore::SVGLineElement::svgAttributeChanged): Ditto. 113 * svg/SVGLinearGradientElement.cpp: 114 (WebCore::SVGLinearGradientElement::svgAttributeChanged): Ditto. 115 * svg/SVGMPathElement.cpp: 116 (WebCore::SVGMPathElement::svgAttributeChanged): Ditto. 117 * svg/SVGMarkerElement.cpp: 118 (WebCore::SVGMarkerElement::svgAttributeChanged): Ditto. 119 * svg/SVGMaskElement.cpp: 120 (WebCore::SVGMaskElement::svgAttributeChanged): Ditto. 121 * svg/SVGPathElement.cpp: 122 (WebCore::SVGPathElement::svgAttributeChanged): Ditto. 123 * svg/SVGPatternElement.cpp: 124 (WebCore::SVGPatternElement::svgAttributeChanged): Ditto. 125 * svg/SVGPolyElement.cpp: 126 (WebCore::SVGPolyElement::svgAttributeChanged): Ditto. 127 * svg/SVGRadialGradientElement.cpp: 128 (WebCore::SVGRadialGradientElement::svgAttributeChanged): Ditto. 129 * svg/SVGRectElement.cpp: 130 (WebCore::SVGRectElement::svgAttributeChanged): Ditto. 131 * svg/SVGSVGElement.cpp: 132 (WebCore::SVGSVGElement::svgAttributeChanged): Ditto. 133 * svg/SVGScriptElement.cpp: 134 (WebCore::SVGScriptElement::svgAttributeChanged): Ditto. 135 * svg/SVGStopElement.cpp: 136 (WebCore::SVGStopElement::svgAttributeChanged): Ditto. 137 * svg/SVGSymbolElement.cpp: 138 (WebCore::SVGSymbolElement::svgAttributeChanged): Ditto. 139 * svg/SVGTRefElement.cpp: 140 (WebCore::SVGTRefElement::svgAttributeChanged): Ditto. 141 * svg/SVGTextContentElement.cpp: 142 (WebCore::SVGTextContentElement::svgAttributeChanged): Ditto. 143 * svg/SVGTextPathElement.cpp: 144 (WebCore::SVGTextPathElement::svgAttributeChanged): Ditto. 145 * svg/SVGTextPositioningElement.cpp: 146 (WebCore::SVGTextPositioningElement::svgAttributeChanged): Ditto. 147 * svg/SVGUseElement.cpp: 148 (WebCore::SVGUseElement::svgAttributeChanged): Ditto. 149 * svg/animation/SVGSMILElement.cpp: 150 (WebCore::SVGSMILElement::svgAttributeChanged): Ditto. 151 1 152 2015-02-05 Brent Fulgham <bfulgham@apple.com> 2 153 -
trunk/Source/WebCore/svg/SVGAElement.cpp
r179555 r179695 127 127 } 128 128 129 SVGElementInstance::InvalidationGuard invalidationGuard(this);129 InstanceInvalidationGuard guard(*this); 130 130 131 131 // Unlike other SVG*Element classes, SVGAElement only listens to SVGURIReference changes -
trunk/Source/WebCore/svg/SVGAnimateElementBase.cpp
r179555 r179695 259 259 CSSPropertyID id = cssPropertyID(attributeName.localName()); 260 260 261 SVGElement Instance::InstanceUpdateBlocker blocker(&targetElement);261 SVGElement::InstanceUpdateBlocker blocker(targetElement); 262 262 applyCSSPropertyToTarget(targetElement, id, valueAsString); 263 263 … … 275 275 CSSPropertyID id = cssPropertyID(attributeName.localName()); 276 276 277 SVGElement Instance::InstanceUpdateBlocker blocker(&targetElement);277 SVGElement::InstanceUpdateBlocker blocker(targetElement); 278 278 removeCSSPropertyFromTarget(targetElement, id); 279 279 … … 294 294 return; 295 295 296 SVGElement Instance::InstanceUpdateBlocker blocker(&targetElement);296 SVGElement::InstanceUpdateBlocker blocker(targetElement); 297 297 notifyTargetAboutAnimValChange(targetElement, attributeName); 298 298 -
trunk/Source/WebCore/svg/SVGAnimatedPath.cpp
r179555 r179695 55 55 result.append(castAnimatedPropertyToActualType<SVGAnimatedPathSegListPropertyTearOff>(it->properties[0].get())); 56 56 57 SVGElement Instance::InstanceUpdateBlocker blocker(property->contextElement());57 SVGElement::InstanceUpdateBlocker blocker(*property->contextElement()); 58 58 59 59 size_t resultSize = result.size(); -
trunk/Source/WebCore/svg/SVGAnimatedTypeAnimator.cpp
r179555 r179695 84 84 } 85 85 86 void SVGAnimatedTypeAnimator::setInstanceUpdatesBlocked(SVGElement& element, bool blocked) 87 { 88 element.setInstanceUpdatesBlocked(blocked); 89 } 90 86 91 } // namespace WebCore -
trunk/Source/WebCore/svg/SVGAnimatedTypeAnimator.h
r179555 r179695 190 190 void executeAction(AnimationAction action, const SVGElementAnimatedPropertyList& animatedTypes, unsigned whichProperty, typename AnimValType::ContentType* type = 0) 191 191 { 192 SVGElementInstance::InstanceUpdateBlocker blocker(animatedTypes[0].element); 192 // FIXME: Can't use SVGElement::InstanceUpdateBlocker because of circular header dependency. Would be nice to untangle this. 193 setInstanceUpdatesBlocked(*animatedTypes[0].element, true); 193 194 194 195 SVGElementAnimatedPropertyList::const_iterator end = animatedTypes.end(); … … 217 218 } 218 219 } 219 } 220 221 setInstanceUpdatesBlocked(*animatedTypes[0].element, false); 222 } 223 224 static void setInstanceUpdatesBlocked(SVGElement&, bool); 220 225 }; 221 226 -
trunk/Source/WebCore/svg/SVGCircleElement.cpp
r179555 r179695 105 105 } 106 106 107 SVGElementInstance::InvalidationGuard invalidationGuard(this);107 InstanceInvalidationGuard guard(*this); 108 108 109 109 if (attrName == SVGNames::cxAttr -
trunk/Source/WebCore/svg/SVGClipPathElement.cpp
r179555 r179695 97 97 } 98 98 99 SVGElementInstance::InvalidationGuard invalidationGuard(this);99 InstanceInvalidationGuard guard(*this); 100 100 101 101 if (RenderObject* object = renderer()) -
trunk/Source/WebCore/svg/SVGComponentTransferFunctionElement.cpp
r179555 r179695 132 132 } 133 133 134 SVGElementInstance::InvalidationGuard invalidationGuard(this);134 InstanceInvalidationGuard guard(*this); 135 135 136 136 invalidateFilterPrimitiveParent(this); -
trunk/Source/WebCore/svg/SVGCursorElement.cpp
r179555 r179695 122 122 } 123 123 124 SVGElementInstance::InvalidationGuard invalidationGuard(this);124 InstanceInvalidationGuard guard(*this); 125 125 126 126 // Any change of a cursor specific attribute triggers this recalc. -
trunk/Source/WebCore/svg/SVGElement.cpp
r179555 r179695 393 393 document().accessSVGExtensions().removeAllElementReferencesForTarget(this); 394 394 } 395 SVGElementInstance::invalidateAllInstancesOfElement(this);395 invalidateInstances(); 396 396 } 397 397 … … 714 714 // Notify all the elements which have references to this element to rebuild their shadow and render 715 715 // trees, e.g. a <use> element references a target element before this target element is defined. 716 SVGElementInstance::invalidateAllInstancesOfElement(this);716 invalidateInstances(); 717 717 } 718 718 … … 1045 1045 CSSPropertyID propId = cssPropertyIdForSVGAttributeName(attrName); 1046 1046 if (propId > 0) { 1047 SVGElementInstance::invalidateAllInstancesOfElement(this);1047 invalidateInstances(); 1048 1048 return; 1049 1049 } … … 1051 1051 if (attrName == HTMLNames::classAttr) { 1052 1052 classAttributeChanged(className()); 1053 SVGElementInstance::invalidateAllInstancesOfElement(this);1053 invalidateInstances(); 1054 1054 return; 1055 1055 } … … 1062 1062 if (inDocument()) 1063 1063 buildPendingResourcesIfNeeded(); 1064 SVGElementInstance::invalidateAllInstancesOfElement(this);1064 invalidateInstances(); 1065 1065 return; 1066 1066 } … … 1104 1104 if (change.source == ChildChangeSourceParser) 1105 1105 return; 1106 SVGElementInstance::invalidateAllInstancesOfElement(this);1106 invalidateInstances(); 1107 1107 } 1108 1108 … … 1131 1131 void SVGElement::setInstanceUpdatesBlocked(bool value) 1132 1132 { 1133 // Catch any callers that calls setInstanceUpdatesBlocked(true) twice in a row. 1134 // That probably indicates nested use of InstanceUpdateBlocker and a bug. 1135 ASSERT(!value || !instanceUpdatesBlocked()); 1136 1133 1137 if (m_svgRareData) 1134 1138 m_svgRareData->setInstanceUpdatesBlocked(value); … … 1202 1206 } 1203 1207 1204 } 1208 void SVGElement::invalidateInstances() 1209 { 1210 if (!inDocument()) 1211 return; 1212 1213 if (instanceUpdatesBlocked()) 1214 return; 1215 1216 auto& instances = this->instances(); 1217 if (instances.isEmpty()) 1218 return; 1219 1220 // Mark all use elements referencing 'element' for rebuilding 1221 do { 1222 SVGElement* instance = *instances.begin(); 1223 if (SVGUseElement* element = instance->correspondingUseElement()) { 1224 ASSERT(element->inDocument()); 1225 element->invalidateShadowTree(); 1226 } 1227 instance->setCorrespondingElement(nullptr); 1228 } while (!instances.isEmpty()); 1229 1230 // FIXME: Why is this needed? 1231 document().updateStyleIfNeeded(); 1232 } 1233 1234 } -
trunk/Source/WebCore/svg/SVGElement.h
r179555 r179695 156 156 void callClearTarget() { clearTarget(); } 157 157 158 class InstanceUpdateBlocker; 159 158 160 protected: 159 161 SVGElement(const QualifiedName&, Document&); … … 184 186 void updateRelativeLengthsInformation(bool hasRelativeLengths, SVGElement*); 185 187 188 class InstanceInvalidationGuard; 189 186 190 private: 187 191 friend class SVGElementInstance; … … 200 204 virtual bool filterOutAnimatableAttribute(const QualifiedName&) const; 201 205 #endif 206 207 void invalidateInstances(); 202 208 203 209 std::unique_ptr<SVGElementRareData> m_svgRareData; … … 209 215 END_DECLARE_ANIMATED_PROPERTIES 210 216 217 }; 218 219 class SVGElement::InstanceInvalidationGuard { 220 public: 221 InstanceInvalidationGuard(SVGElement&); 222 ~InstanceInvalidationGuard(); 223 private: 224 SVGElement& m_element; 225 }; 226 227 class SVGElement::InstanceUpdateBlocker { 228 public: 229 InstanceUpdateBlocker(SVGElement&); 230 ~InstanceUpdateBlocker(); 231 private: 232 SVGElement& m_element; 211 233 }; 212 234 … … 223 245 }; 224 246 247 inline SVGElement::InstanceInvalidationGuard::InstanceInvalidationGuard(SVGElement& element) 248 : m_element(element) 249 { 250 } 251 252 inline SVGElement::InstanceInvalidationGuard::~InstanceInvalidationGuard() 253 { 254 m_element.invalidateInstances(); 255 } 256 257 inline SVGElement::InstanceUpdateBlocker::InstanceUpdateBlocker(SVGElement& element) 258 : m_element(element) 259 { 260 m_element.setInstanceUpdatesBlocked(true); 261 } 262 263 inline SVGElement::InstanceUpdateBlocker::~InstanceUpdateBlocker() 264 { 265 m_element.setInstanceUpdatesBlocked(false); 266 } 267 225 268 inline bool Node::hasTagName(const SVGQualifiedName& name) const 226 269 { -
trunk/Source/WebCore/svg/SVGElementInstance.cpp
r179555 r179695 168 168 } 169 169 170 void SVGElementInstance::invalidateAllInstancesOfElement(SVGElement* element)171 {172 if (!element || !element->inDocument())173 return;174 175 if (element->instanceUpdatesBlocked())176 return;177 178 auto& instances = element->instances();179 if (instances.isEmpty())180 return;181 182 // Mark all use elements referencing 'element' for rebuilding183 do {184 SVGElement* instance = *instances.begin();185 if (SVGUseElement* element = instance->correspondingUseElement()) {186 ASSERT(element->inDocument());187 element->invalidateShadowTree();188 }189 instance->setCorrespondingElement(nullptr);190 } while (!instances.isEmpty());191 192 element->document().updateStyleIfNeeded();193 }194 195 170 EventTargetInterface SVGElementInstance::eventTargetInterface() const 196 171 { … … 241 216 } 242 217 243 SVGElementInstance::InstanceUpdateBlocker::InstanceUpdateBlocker(SVGElement* targetElement) 244 : m_targetElement(targetElement) 245 { 246 if (m_targetElement) 247 m_targetElement->setInstanceUpdatesBlocked(true); 248 } 249 250 SVGElementInstance::InstanceUpdateBlocker::~InstanceUpdateBlocker() 251 { 252 if (m_targetElement) 253 m_targetElement->setInstanceUpdatesBlocked(false); 254 } 255 256 } 218 } -
trunk/Source/WebCore/svg/SVGElementInstance.h
r179555 r179695 71 71 72 72 Document* ownerDocument() const; 73 74 class InvalidationGuard {75 WTF_MAKE_NONCOPYABLE(InvalidationGuard);76 public:77 InvalidationGuard(SVGElement* element) : m_element(element) { }78 ~InvalidationGuard() { SVGElementInstance::invalidateAllInstancesOfElement(m_element); }79 private:80 SVGElement* m_element;81 };82 83 class InstanceUpdateBlocker {84 WTF_MAKE_NONCOPYABLE(InstanceUpdateBlocker);85 public:86 InstanceUpdateBlocker(SVGElement* targetElement);87 ~InstanceUpdateBlocker();88 89 private:90 SVGElement* m_targetElement;91 };92 93 static void invalidateAllInstancesOfElement(SVGElement*);94 73 95 74 using TreeShared<SVGElementInstance>::ref; -
trunk/Source/WebCore/svg/SVGEllipseElement.cpp
r179555 r179695 109 109 } 110 110 111 SVGElementInstance::InvalidationGuard invalidationGuard(this);111 InstanceInvalidationGuard guard(*this); 112 112 113 113 if (attrName == SVGNames::cxAttr -
trunk/Source/WebCore/svg/SVGFEBlendElement.cpp
r179555 r179695 112 112 } 113 113 114 SVGElementInstance::InvalidationGuard invalidationGuard(this);114 InstanceInvalidationGuard guard(*this); 115 115 116 116 if (attrName == SVGNames::modeAttr) { -
trunk/Source/WebCore/svg/SVGFEColorMatrixElement.cpp
r179555 r179695 116 116 } 117 117 118 SVGElementInstance::InvalidationGuard invalidationGuard(this);118 InstanceInvalidationGuard guard(*this); 119 119 120 120 if (attrName == SVGNames::typeAttr || attrName == SVGNames::valuesAttr) { -
trunk/Source/WebCore/svg/SVGFECompositeElement.cpp
r179555 r179695 152 152 } 153 153 154 SVGElementInstance::InvalidationGuard invalidationGuard(this);154 InstanceInvalidationGuard guard(*this); 155 155 156 156 if (attrName == SVGNames::operatorAttr -
trunk/Source/WebCore/svg/SVGFEConvolveMatrixElement.cpp
r179555 r179695 258 258 } 259 259 260 SVGElementInstance::InvalidationGuard invalidationGuard(this);260 InstanceInvalidationGuard guard(*this); 261 261 262 262 if (attrName == SVGNames::edgeModeAttr -
trunk/Source/WebCore/svg/SVGFEDiffuseLightingElement.cpp
r179555 r179695 175 175 } 176 176 177 SVGElementInstance::InvalidationGuard invalidationGuard(this);177 InstanceInvalidationGuard guard(*this); 178 178 179 179 if (attrName == SVGNames::surfaceScaleAttr -
trunk/Source/WebCore/svg/SVGFEDisplacementMapElement.cpp
r179555 r179695 133 133 } 134 134 135 SVGElementInstance::InvalidationGuard invalidationGuard(this);135 InstanceInvalidationGuard guard(*this); 136 136 137 137 if (attrName == SVGNames::xChannelSelectorAttr || attrName == SVGNames::yChannelSelectorAttr || attrName == SVGNames::scaleAttr) { -
trunk/Source/WebCore/svg/SVGFEDropShadowElement.cpp
r179555 r179695 136 136 } 137 137 138 SVGElementInstance::InvalidationGuard invalidationGuard(this);138 InstanceInvalidationGuard guard(*this); 139 139 140 140 if (attrName == SVGNames::inAttr -
trunk/Source/WebCore/svg/SVGFEGaussianBlurElement.cpp
r179555 r179695 131 131 } 132 132 133 SVGElementInstance::InvalidationGuard invalidationGuard(this);133 InstanceInvalidationGuard guard(*this); 134 134 135 135 if (attrName == SVGNames::inAttr -
trunk/Source/WebCore/svg/SVGFEImageElement.cpp
r179555 r179695 156 156 } 157 157 158 SVGElementInstance::InvalidationGuard invalidationGuard(this);158 InstanceInvalidationGuard guard(*this); 159 159 160 160 if (attrName == SVGNames::preserveAspectRatioAttr) { -
trunk/Source/WebCore/svg/SVGFELightElement.cpp
r179555 r179695 171 171 } 172 172 173 SVGElementInstance::InvalidationGuard invalidationGuard(this);173 InstanceInvalidationGuard guard(*this); 174 174 175 175 if (attrName == SVGNames::azimuthAttr -
trunk/Source/WebCore/svg/SVGFEMergeNodeElement.cpp
r179555 r179695 82 82 } 83 83 84 SVGElementInstance::InvalidationGuard invalidationGuard(this);84 InstanceInvalidationGuard guard(*this); 85 85 86 86 if (attrName == SVGNames::inAttr) { -
trunk/Source/WebCore/svg/SVGFEMorphologyElement.cpp
r179555 r179695 142 142 } 143 143 144 SVGElementInstance::InvalidationGuard invalidationGuard(this);144 InstanceInvalidationGuard guard(*this); 145 145 146 146 if (attrName == SVGNames::operatorAttr || attrName == SVGNames::radiusAttr) { -
trunk/Source/WebCore/svg/SVGFEOffsetElement.cpp
r179555 r179695 98 98 } 99 99 100 SVGElementInstance::InvalidationGuard invalidationGuard(this);100 InstanceInvalidationGuard guard(*this); 101 101 102 102 if (attrName == SVGNames::inAttr || attrName == SVGNames::dxAttr || attrName == SVGNames::dyAttr) { -
trunk/Source/WebCore/svg/SVGFESpecularLightingElement.cpp
r179555 r179695 186 186 } 187 187 188 SVGElementInstance::InvalidationGuard invalidationGuard(this);188 InstanceInvalidationGuard guard(*this); 189 189 190 190 if (attrName == SVGNames::surfaceScaleAttr -
trunk/Source/WebCore/svg/SVGFETileElement.cpp
r179555 r179695 82 82 } 83 83 84 SVGElementInstance::InvalidationGuard invalidationGuard(this);84 InstanceInvalidationGuard guard(*this); 85 85 86 86 if (attrName == SVGNames::inAttr) { -
trunk/Source/WebCore/svg/SVGFETurbulenceElement.cpp
r179555 r179695 156 156 } 157 157 158 SVGElementInstance::InvalidationGuard invalidationGuard(this);158 InstanceInvalidationGuard guard(*this); 159 159 160 160 if (attrName == SVGNames::baseFrequencyAttr -
trunk/Source/WebCore/svg/SVGFilterElement.cpp
r179555 r179695 166 166 } 167 167 168 SVGElementInstance::InvalidationGuard invalidationGuard(this);168 InstanceInvalidationGuard guard(*this); 169 169 170 170 if (attrName == SVGNames::xAttr -
trunk/Source/WebCore/svg/SVGFilterPrimitiveStandardAttributes.cpp
r179555 r179695 113 113 } 114 114 115 SVGElementInstance::InvalidationGuard invalidationGuard(this);115 InstanceInvalidationGuard guard(*this); 116 116 invalidate(); 117 117 } -
trunk/Source/WebCore/svg/SVGForeignObjectElement.cpp
r179555 r179695 113 113 } 114 114 115 SVGElementInstance::InvalidationGuard invalidationGuard(this);115 InstanceInvalidationGuard guard(*this); 116 116 117 117 if (attrName == SVGNames::widthAttr -
trunk/Source/WebCore/svg/SVGGElement.cpp
r179555 r179695 83 83 } 84 84 85 SVGElementInstance::InvalidationGuard invalidationGuard(this);85 InstanceInvalidationGuard guard(*this); 86 86 87 87 if (auto renderer = this->renderer()) -
trunk/Source/WebCore/svg/SVGGradientElement.cpp
r179555 r179695 120 120 } 121 121 122 SVGElementInstance::InvalidationGuard invalidationGuard(this);122 InstanceInvalidationGuard guard(*this); 123 123 124 124 if (RenderObject* object = renderer()) -
trunk/Source/WebCore/svg/SVGGraphicsElement.cpp
r179555 r179695 138 138 } 139 139 140 SVGElementInstance::InvalidationGuard invalidationGuard(this);140 InstanceInvalidationGuard guard(*this); 141 141 142 142 if (SVGTests::handleAttributeChange(this, attrName)) -
trunk/Source/WebCore/svg/SVGImageElement.cpp
r179555 r179695 123 123 } 124 124 125 SVGElementInstance::InvalidationGuard invalidationGuard(this);125 InstanceInvalidationGuard guard(*this); 126 126 127 127 if (attrName == SVGNames::widthAttr -
trunk/Source/WebCore/svg/SVGLineElement.cpp
r179555 r179695 108 108 } 109 109 110 SVGElementInstance::InvalidationGuard invalidationGuard(this);110 InstanceInvalidationGuard guard(*this); 111 111 112 112 bool isLengthAttribute = attrName == SVGNames::x1Attr -
trunk/Source/WebCore/svg/SVGLinearGradientElement.cpp
r179555 r179695 110 110 } 111 111 112 SVGElementInstance::InvalidationGuard invalidationGuard(this);112 InstanceInvalidationGuard guard(*this); 113 113 114 114 updateRelativeLengthsInformation(); -
trunk/Source/WebCore/svg/SVGMPathElement.cpp
r179555 r179695 141 141 } 142 142 143 SVGElementInstance::InvalidationGuard invalidationGuard(this);143 InstanceInvalidationGuard guard(*this); 144 144 145 145 if (SVGURIReference::isKnownAttribute(attrName)) { -
trunk/Source/WebCore/svg/SVGMarkerElement.cpp
r179555 r179695 167 167 } 168 168 169 SVGElementInstance::InvalidationGuard invalidationGuard(this);169 InstanceInvalidationGuard guard(*this); 170 170 171 171 if (attrName == SVGNames::refXAttr -
trunk/Source/WebCore/svg/SVGMaskElement.cpp
r179555 r179695 135 135 } 136 136 137 SVGElementInstance::InvalidationGuard invalidationGuard(this);137 InstanceInvalidationGuard guard(*this); 138 138 139 139 if (attrName == SVGNames::xAttr -
trunk/Source/WebCore/svg/SVGPathElement.cpp
r179555 r179695 260 260 } 261 261 262 SVGElementInstance::InvalidationGuard invalidationGuard(this);262 InstanceInvalidationGuard guard(*this); 263 263 264 264 RenderSVGPath* renderer = downcast<RenderSVGPath>(this->renderer()); -
trunk/Source/WebCore/svg/SVGPatternElement.cpp
r179555 r179695 160 160 } 161 161 162 SVGElementInstance::InvalidationGuard invalidationGuard(this);162 InstanceInvalidationGuard guard(*this); 163 163 164 164 if (attrName == SVGNames::xAttr -
trunk/Source/WebCore/svg/SVGPolyElement.cpp
r179555 r179695 110 110 } 111 111 112 SVGElementInstance::InvalidationGuard invalidationGuard(this);112 InstanceInvalidationGuard guard(*this); 113 113 114 114 auto* renderer = downcast<RenderSVGShape>(this->renderer()); -
trunk/Source/WebCore/svg/SVGRadialGradientElement.cpp
r179555 r179695 122 122 } 123 123 124 SVGElementInstance::InvalidationGuard invalidationGuard(this);124 InstanceInvalidationGuard guard(*this); 125 125 126 126 updateRelativeLengthsInformation(); -
trunk/Source/WebCore/svg/SVGRectElement.cpp
r179555 r179695 121 121 } 122 122 123 SVGElementInstance::InvalidationGuard invalidationGuard(this);123 InstanceInvalidationGuard guard(*this); 124 124 125 125 if (attrName == SVGNames::xAttr -
trunk/Source/WebCore/svg/SVGSVGElement.cpp
r179555 r179695 301 301 } 302 302 303 SVGElementInstance::InvalidationGuard invalidationGuard(this);303 InstanceInvalidationGuard guard(*this); 304 304 305 305 if (updateRelativeLengthsOrViewBox -
trunk/Source/WebCore/svg/SVGScriptElement.cpp
r179555 r179695 99 99 } 100 100 101 SVGElementInstance::InvalidationGuard invalidationGuard(this);101 InstanceInvalidationGuard guard(*this); 102 102 103 103 if (attrName == SVGNames::typeAttr || attrName == HTMLNames::onerrorAttr) -
trunk/Source/WebCore/svg/SVGStopElement.cpp
r179555 r179695 87 87 } 88 88 89 SVGElementInstance::InvalidationGuard invalidationGuard(this);89 InstanceInvalidationGuard guard(*this); 90 90 91 91 if (attrName == SVGNames::offsetAttr) { -
trunk/Source/WebCore/svg/SVGSymbolElement.cpp
r179555 r179695 89 89 } 90 90 91 SVGElementInstance::InvalidationGuard invalidationGuard(this);91 InstanceInvalidationGuard guard(*this); 92 92 93 93 // Every other property change is ignored. -
trunk/Source/WebCore/svg/SVGTRefElement.cpp
r179555 r179695 207 207 } 208 208 209 SVGElementInstance::InvalidationGuard invalidationGuard(this);209 InstanceInvalidationGuard guard(*this); 210 210 211 211 if (SVGURIReference::isKnownAttribute(attrName)) { -
trunk/Source/WebCore/svg/SVGTextContentElement.cpp
r179555 r179695 269 269 } 270 270 271 SVGElementInstance::InvalidationGuard invalidationGuard(this);271 InstanceInvalidationGuard guard(*this); 272 272 273 273 if (attrName == SVGNames::textLengthAttr) -
trunk/Source/WebCore/svg/SVGTextPathElement.cpp
r179555 r179695 113 113 } 114 114 115 SVGElementInstance::InvalidationGuard invalidationGuard(this);115 InstanceInvalidationGuard guard(*this); 116 116 117 117 if (SVGURIReference::isKnownAttribute(attrName)) { -
trunk/Source/WebCore/svg/SVGTextPositioningElement.cpp
r179555 r179695 142 142 } 143 143 144 SVGElementInstance::InvalidationGuard invalidationGuard(this);144 InstanceInvalidationGuard guard(*this); 145 145 146 146 bool updateRelativeLengths = attrName == SVGNames::xAttr -
trunk/Source/WebCore/svg/SVGUseElement.cpp
r179555 r179695 224 224 } 225 225 226 SVGElementInstance::InvalidationGuard invalidationGuard(this);226 InstanceInvalidationGuard guard(*this); 227 227 228 228 if (attrName == SVGNames::xAttr || attrName == SVGNames::yAttr || attrName == SVGNames::widthAttr || attrName == SVGNames::heightAttr) { -
trunk/Source/WebCore/svg/animation/SVGSMILElement.cpp
r179555 r179695 500 500 setAttributeName(constructQualifiedName(this, fastGetAttribute(SVGNames::attributeNameAttr))); 501 501 else if (attrName.matches(XLinkNames::hrefAttr)) { 502 SVGElementInstance::InvalidationGuard invalidationGuard(this);502 InstanceInvalidationGuard guard(*this); 503 503 buildPendingResource(); 504 504 } else if (inDocument()) {
Note: See TracChangeset
for help on using the changeset viewer.