|
Lines 1-3
Source/WebCore/ChangeLog_sec1
|
|
|
1 |
2018-02-15 Said Abou-Hallawa <sabouhallawa@apple.com> |
| 2 |
|
| 3 |
Make all the SVGElements' attributes be RefCounted objects |
| 4 |
https://bugs.webkit.org/show_bug.cgi?id=168586 |
| 5 |
|
| 6 |
Reviewed by NOBODY (OOPS!). |
| 7 |
|
| 8 |
The SVG tear-off objects have been causing many memory which have been |
| 9 |
difficult to track. The SVG tear-off objects are created on demand. More |
| 10 |
specifically, they are created when animating the SVGElement's attribute |
| 11 |
or when creating a DOM object for that attribute. The problem is these |
| 12 |
tear-off objects hold a raw reference to the SVGElement's attribute. To |
| 13 |
keep this reference valid, both the SVGElement and the tear-off object |
| 14 |
used to hold a RefPtr to each other which was causing a memory leak. When |
| 15 |
this strong double referencing was relaxed by using WeakPtr or raw pointer |
| 16 |
from one side to the other, memory bugs started to occur. A more subtle |
| 17 |
problem can happen when the tear-off object is created for an element in |
| 18 |
a list attribute. Even if both the SVGElement and the tear-off exist in |
| 19 |
memory, accessing freed memory may still happen if the list attribute was |
| 20 |
reallocated. |
| 21 |
|
| 22 |
The current state of the code can not guarantee the validity of the reference |
| 23 |
which is held by the tear-off object to the SVGElement's attribute. To fix |
| 24 |
this issue, all the SVGElement's attributes have to be RefCounted objects. |
| 25 |
|
| 26 |
Creating different classes for every data type of the SVG attributes does |
| 27 |
not look the cleanest solution. Besides, there are cases where the union |
| 28 |
SVGAnimatedType is used to represent all the data types. So here is the |
| 29 |
outline of this patch: |
| 30 |
|
| 31 |
-- Create the class SVGValue which is a variant of all the SVG attribute |
| 32 |
basic data types including the type of the elements in the SVG attribute |
| 33 |
lists. |
| 34 |
|
| 35 |
-- Change SVGAnimatedType to hold two SVGValues. The second one is optional |
| 36 |
and only used for animated types which requires two data types. |
| 37 |
|
| 38 |
-- Change all the attributes of all the SVGElement to be of type RefPtr<SVGValue>. |
| 39 |
|
| 40 |
-- Change all the list attributes to be of type Vector<RefPtr<SVGValue>>. |
| 41 |
|
| 42 |
-- Change all the tear-off objects to hold RefPtr<SVGValue> instead of |
| 43 |
holding a raw reference. |
| 44 |
|
| 45 |
* Sources.txt: |
| 46 |
* WebCore.xcodeproj/project.pbxproj: |
| 47 |
Add new files for SVGValue and SVGListVlaues. Move definitions from |
| 48 |
SVGMarkerElement.h to SVGMarkerTypes.h. Move definitions of SVGRectTraits.h |
| 49 |
to SVGPropertyTraits.h. |
| 50 |
|
| 51 |
* rendering/svg/SVGPathData.cpp: |
| 52 |
(WebCore::pathFromPolygonElement): |
| 53 |
(WebCore::pathFromPolylineElement): |
| 54 |
* rendering/svg/SVGTextLayoutAttributesBuilder.cpp: |
| 55 |
(WebCore::updateCharacterData): |
| 56 |
* svg/SVGAngle.h: |
| 57 |
(WebCore::SVGAngle::create): Replace the parameter SVGAngleValue& by |
| 58 |
RefPtr<SVGValue>. |
| 59 |
(WebCore::SVGAngle::SVGAngle): |
| 60 |
* svg/SVGAnimateMotionElement.cpp: |
| 61 |
(WebCore::parsePoint): Deleted. Moved to SVGParserUtilities.cpp. |
| 62 |
|
| 63 |
* svg/SVGAnimatedAngle.cpp: |
| 64 |
(WebCore::SVGAnimatedAngleAnimator::constructFromString): |
| 65 |
Use the SVGPropertyTraits::fromString to create the data members of the |
| 66 |
SVGAnimatedType. |
| 67 |
(WebCore::SVGAnimatedAngleAnimator::startAnimValAnimation): |
| 68 |
constructFromBaseValues() now returns a unique_ptr<SVGAnimatedType>. |
| 69 |
(WebCore::SVGAnimatedAngleAnimator::resetAnimValToBaseVal): |
| 70 |
Don't pass SVGAnimatedType getter to resetFromBaseValues(). The PropertyTYpe |
| 71 |
can be used to get the data element from the SVGAnimatedType. |
| 72 |
(WebCore::SVGAnimatedAngleAnimator::addAnimatedTypes): |
| 73 |
Cast the SVGValue elements to the required data members. |
| 74 |
(WebCore::SVGAnimatedAngleAnimator::calculateAnimatedValue): Ditto. |
| 75 |
|
| 76 |
* svg/SVGAnimatedBoolean.cpp: |
| 77 |
(WebCore::SVGAnimatedBooleanAnimator::constructFromString): |
| 78 |
(WebCore::SVGAnimatedBooleanAnimator::startAnimValAnimation): |
| 79 |
(WebCore::SVGAnimatedBooleanAnimator::resetAnimValToBaseVal): |
| 80 |
(WebCore::SVGAnimatedBooleanAnimator::calculateAnimatedValue): |
| 81 |
Ditto. |
| 82 |
|
| 83 |
* svg/SVGAnimatedColor.cpp: |
| 84 |
(WebCore::SVGAnimatedColorAnimator::constructFromString): |
| 85 |
(WebCore::SVGAnimatedColorAnimator::addAnimatedTypes): |
| 86 |
(WebCore::SVGAnimatedColorAnimator::calculateAnimatedValue): |
| 87 |
Ditto. |
| 88 |
|
| 89 |
* svg/SVGAnimatedEnumeration.cpp: |
| 90 |
(WebCore::SVGAnimatedEnumerationAnimator::constructFromString): |
| 91 |
(WebCore::SVGAnimatedEnumerationAnimator::startAnimValAnimation): |
| 92 |
(WebCore::SVGAnimatedEnumerationAnimator::resetAnimValToBaseVal): |
| 93 |
(WebCore::SVGAnimatedEnumerationAnimator::calculateAnimatedValue): |
| 94 |
Ditto. |
| 95 |
|
| 96 |
* svg/SVGAnimatedInteger.cpp: |
| 97 |
(WebCore::SVGAnimatedIntegerAnimator::constructFromString): |
| 98 |
(WebCore::SVGAnimatedIntegerAnimator::startAnimValAnimation): |
| 99 |
(WebCore::SVGAnimatedIntegerAnimator::resetAnimValToBaseVal): |
| 100 |
(WebCore::SVGAnimatedIntegerAnimator::addAnimatedTypes): |
| 101 |
(WebCore::SVGAnimatedIntegerAnimator::calculateAnimatedValue): |
| 102 |
Ditto. |
| 103 |
|
| 104 |
* svg/SVGAnimatedIntegerOptionalInteger.cpp: |
| 105 |
(WebCore::SVGAnimatedIntegerOptionalIntegerAnimator::constructFromString): |
| 106 |
(WebCore::SVGAnimatedIntegerOptionalIntegerAnimator::startAnimValAnimation): |
| 107 |
(WebCore::SVGAnimatedIntegerOptionalIntegerAnimator::resetAnimValToBaseVal): |
| 108 |
(WebCore::SVGAnimatedIntegerOptionalIntegerAnimator::addAnimatedTypes): |
| 109 |
(WebCore::SVGAnimatedIntegerOptionalIntegerAnimator::calculateAnimatedValue): |
| 110 |
Ditto. |
| 111 |
|
| 112 |
* svg/SVGAnimatedLength.cpp: |
| 113 |
(WebCore::SVGAnimatedLengthAnimator::constructFromString): |
| 114 |
(WebCore::SVGAnimatedLengthAnimator::startAnimValAnimation): |
| 115 |
(WebCore::SVGAnimatedLengthAnimator::resetAnimValToBaseVal): |
| 116 |
(WebCore::SVGAnimatedLengthAnimator::addAnimatedTypes): |
| 117 |
(WebCore::SVGAnimatedLengthAnimator::calculateAnimatedValue): |
| 118 |
Ditto. |
| 119 |
|
| 120 |
* svg/SVGAnimatedLengthList.cpp: |
| 121 |
(WebCore::SVGAnimatedLengthListAnimator::constructFromString): |
| 122 |
(WebCore::SVGAnimatedLengthListAnimator::startAnimValAnimation): |
| 123 |
(WebCore::SVGAnimatedLengthListAnimator::resetAnimValToBaseVal): |
| 124 |
(WebCore::SVGAnimatedLengthListAnimator::addAnimatedTypes): |
| 125 |
(WebCore::SVGAnimatedLengthListAnimator::calculateAnimatedValue): |
| 126 |
Ditto. |
| 127 |
|
| 128 |
* svg/SVGAnimatedNumber.cpp: |
| 129 |
(WebCore::SVGAnimatedNumberAnimator::constructFromString): |
| 130 |
(WebCore::SVGAnimatedNumberAnimator::startAnimValAnimation): |
| 131 |
(WebCore::SVGAnimatedNumberAnimator::resetAnimValToBaseVal): |
| 132 |
(WebCore::SVGAnimatedNumberAnimator::addAnimatedTypes): |
| 133 |
(WebCore::parseNumberFromString): |
| 134 |
(WebCore::SVGAnimatedNumberAnimator::calculateAnimatedValue): |
| 135 |
Ditto. |
| 136 |
|
| 137 |
* svg/SVGAnimatedNumberList.cpp: |
| 138 |
(WebCore::SVGAnimatedNumberListAnimator::constructFromString): |
| 139 |
(WebCore::SVGAnimatedNumberListAnimator::startAnimValAnimation): |
| 140 |
(WebCore::SVGAnimatedNumberListAnimator::resetAnimValToBaseVal): |
| 141 |
(WebCore::SVGAnimatedNumberListAnimator::addAnimatedTypes): |
| 142 |
(WebCore::SVGAnimatedNumberListAnimator::calculateAnimatedValue): |
| 143 |
Ditto. |
| 144 |
|
| 145 |
* svg/SVGAnimatedNumberOptionalNumber.cpp: |
| 146 |
(WebCore::SVGAnimatedNumberOptionalNumberAnimator::constructFromString): |
| 147 |
(WebCore::SVGAnimatedNumberOptionalNumberAnimator::startAnimValAnimation): |
| 148 |
(WebCore::SVGAnimatedNumberOptionalNumberAnimator::resetAnimValToBaseVal): |
| 149 |
(WebCore::SVGAnimatedNumberOptionalNumberAnimator::addAnimatedTypes): |
| 150 |
(WebCore::SVGAnimatedNumberOptionalNumberAnimator::calculateAnimatedValue): |
| 151 |
Ditto. |
| 152 |
|
| 153 |
* svg/SVGAnimatedPath.cpp: |
| 154 |
(WebCore::SVGAnimatedPathAnimator::constructFromString): |
| 155 |
(WebCore::SVGAnimatedPathAnimator::startAnimValAnimation): |
| 156 |
(WebCore::SVGAnimatedPathAnimator::resetAnimValToBaseVal): |
| 157 |
(WebCore::SVGAnimatedPathAnimator::addAnimatedTypes): |
| 158 |
(WebCore::SVGAnimatedPathAnimator::calculateAnimatedValue): |
| 159 |
Ditto. |
| 160 |
|
| 161 |
* svg/SVGAnimatedPointList.cpp: |
| 162 |
(WebCore::SVGAnimatedPointListAnimator::constructFromString): |
| 163 |
(WebCore::SVGAnimatedPointListAnimator::startAnimValAnimation): |
| 164 |
(WebCore::SVGAnimatedPointListAnimator::resetAnimValToBaseVal): |
| 165 |
(WebCore::SVGAnimatedPointListAnimator::addAnimatedTypes): |
| 166 |
(WebCore::SVGAnimatedPointListAnimator::calculateAnimatedValue): |
| 167 |
Ditto. |
| 168 |
|
| 169 |
* svg/SVGAnimatedPreserveAspectRatio.cpp: |
| 170 |
(WebCore::SVGAnimatedPreserveAspectRatioAnimator::constructFromString): |
| 171 |
(WebCore::SVGAnimatedPreserveAspectRatioAnimator::startAnimValAnimation): |
| 172 |
(WebCore::SVGAnimatedPreserveAspectRatioAnimator::resetAnimValToBaseVal): |
| 173 |
(WebCore::SVGAnimatedPreserveAspectRatioAnimator::calculateAnimatedValue): |
| 174 |
Ditto. |
| 175 |
|
| 176 |
* svg/SVGAnimatedRect.cpp: |
| 177 |
(WebCore::SVGAnimatedRectAnimator::constructFromString): |
| 178 |
(WebCore::SVGAnimatedRectAnimator::startAnimValAnimation): |
| 179 |
(WebCore::SVGAnimatedRectAnimator::resetAnimValToBaseVal): |
| 180 |
(WebCore::SVGAnimatedRectAnimator::addAnimatedTypes): |
| 181 |
(WebCore::SVGAnimatedRectAnimator::calculateAnimatedValue): |
| 182 |
Ditto. |
| 183 |
|
| 184 |
* svg/SVGAnimatedString.cpp: |
| 185 |
(WebCore::SVGAnimatedStringAnimator::constructFromString): |
| 186 |
(WebCore::SVGAnimatedStringAnimator::startAnimValAnimation): |
| 187 |
(WebCore::SVGAnimatedStringAnimator::resetAnimValToBaseVal): |
| 188 |
(WebCore::SVGAnimatedStringAnimator::calculateAnimatedValue): |
| 189 |
Ditto. |
| 190 |
|
| 191 |
* svg/SVGAnimatedTransformList.cpp: |
| 192 |
(WebCore::SVGAnimatedTransformListAnimator::constructFromString): |
| 193 |
(WebCore::SVGAnimatedTransformListAnimator::startAnimValAnimation): |
| 194 |
(WebCore::SVGAnimatedTransformListAnimator::resetAnimValToBaseVal): |
| 195 |
(WebCore::SVGAnimatedTransformListAnimator::addAnimatedTypes): |
| 196 |
(WebCore::SVGAnimatedTransformListAnimator::calculateAnimatedValue): |
| 197 |
(WebCore::SVGAnimatedTransformListAnimator::calculateDistance): |
| 198 |
Ditto. |
| 199 |
|
| 200 |
* svg/SVGAnimatedType.cpp: Removed. |
| 201 |
* svg/SVGAnimatedType.h: |
| 202 |
(WebCore::SVGAnimatedType::SVGAnimatedType): |
| 203 |
(WebCore::SVGAnimatedType::create): |
| 204 |
(WebCore::SVGAnimatedType::type const): |
| 205 |
(WebCore::SVGAnimatedType::valueAsString const): |
| 206 |
(WebCore::SVGAnimatedType::setValueAsString): |
| 207 |
(WebCore::SVGAnimatedType::supportsAnimVal): |
| 208 |
(WebCore::SVGAnimatedType::valueAnimatedType): |
| 209 |
(WebCore::SVGAnimatedType::angleAndEnumeration const): Deleted. |
| 210 |
(WebCore::SVGAnimatedType::boolean const): Deleted. |
| 211 |
(WebCore::SVGAnimatedType::color const): Deleted. |
| 212 |
(WebCore::SVGAnimatedType::enumeration const): Deleted. |
| 213 |
(WebCore::SVGAnimatedType::integer const): Deleted. |
| 214 |
(WebCore::SVGAnimatedType::integerOptionalInteger const): Deleted. |
| 215 |
(WebCore::SVGAnimatedType::length const): Deleted. |
| 216 |
(WebCore::SVGAnimatedType::lengthList const): Deleted. |
| 217 |
(WebCore::SVGAnimatedType::number const): Deleted. |
| 218 |
(WebCore::SVGAnimatedType::numberList const): Deleted. |
| 219 |
(WebCore::SVGAnimatedType::numberOptionalNumber const): Deleted. |
| 220 |
(WebCore::SVGAnimatedType::path const): Deleted. |
| 221 |
(WebCore::SVGAnimatedType::pointList const): Deleted. |
| 222 |
(WebCore::SVGAnimatedType::preserveAspectRatio const): Deleted. |
| 223 |
(WebCore::SVGAnimatedType::rect const): Deleted. |
| 224 |
(WebCore::SVGAnimatedType::string const): Deleted. |
| 225 |
(WebCore::SVGAnimatedType::transformList const): Deleted. |
| 226 |
(WebCore::SVGAnimatedType::angleAndEnumeration): Deleted. |
| 227 |
(WebCore::SVGAnimatedType::boolean): Deleted. |
| 228 |
(WebCore::SVGAnimatedType::color): Deleted. |
| 229 |
(WebCore::SVGAnimatedType::enumeration): Deleted. |
| 230 |
(WebCore::SVGAnimatedType::integer): Deleted. |
| 231 |
(WebCore::SVGAnimatedType::integerOptionalInteger): Deleted. |
| 232 |
(WebCore::SVGAnimatedType::length): Deleted. |
| 233 |
(WebCore::SVGAnimatedType::lengthList): Deleted. |
| 234 |
(WebCore::SVGAnimatedType::number): Deleted. |
| 235 |
(WebCore::SVGAnimatedType::numberList): Deleted. |
| 236 |
(WebCore::SVGAnimatedType::numberOptionalNumber): Deleted. |
| 237 |
(WebCore::SVGAnimatedType::path): Deleted. |
| 238 |
(WebCore::SVGAnimatedType::pointList): Deleted. |
| 239 |
(WebCore::SVGAnimatedType::preserveAspectRatio): Deleted. |
| 240 |
(WebCore::SVGAnimatedType::rect): Deleted. |
| 241 |
(WebCore::SVGAnimatedType::string): Deleted. |
| 242 |
(WebCore::SVGAnimatedType::transformList): Deleted. |
| 243 |
Simplify SVGAnimatedType. It is now a struct which has two RefPtr<SVGValue>. |
| 244 |
The second pointer can be null expect with the types with two values. |
| 245 |
|
| 246 |
* svg/SVGAnimatedTypeAnimator.h: |
| 247 |
(WebCore::SVGAnimatedTypeAnimator::constructFromBaseValue): Construct the |
| 248 |
animated SVGValue from the SVGValue of the base value before starting the |
| 249 |
animation. |
| 250 |
(WebCore::SVGAnimatedTypeAnimator::resetFromBaseValue): Reset the animated |
| 251 |
SVGVAlue to the SVGValue of the base value before ending the animation. |
| 252 |
(WebCore::SVGAnimatedTypeAnimator::constructFromBaseValues): Same as |
| 253 |
constructFromBaseValue() but for two-SVGAvlues animated types. |
| 254 |
(WebCore::SVGAnimatedTypeAnimator::resetFromBaseValues): Same as |
| 255 |
resetFromBaseValue() but for two-SVGAvlues animated types. |
| 256 |
(WebCore::SVGAnimatedTypeAnimator::executeAction): |
| 257 |
|
| 258 |
* svg/SVGAnimationElement.h: |
| 259 |
* svg/SVGComponentTransferFunctionElement.cpp: |
| 260 |
(WebCore::SVGComponentTransferFunctionElement::transferFunction const): |
| 261 |
* svg/SVGCursorElement.cpp: |
| 262 |
(WebCore::SVGCursorElement::SVGCursorElement): Explicitly create an |
| 263 |
SVGLengthValue which will implicitly force calling the constructor of |
| 264 |
SVGSynchronizableAnimatedProperty. |
| 265 |
|
| 266 |
* svg/SVGEllipseElement.cpp: |
| 267 |
(WebCore::SVGEllipseElement::SVGEllipseElement): |
| 268 |
* svg/SVGFEColorMatrixElement.cpp: |
| 269 |
(WebCore::SVGFEColorMatrixElement::setFilterEffectAttribute): |
| 270 |
(WebCore::SVGFEColorMatrixElement::build): |
| 271 |
* svg/SVGFEConvolveMatrixElement.cpp: |
| 272 |
(WebCore::SVGFEConvolveMatrixElement::build): |
| 273 |
* svg/SVGFilterElement.cpp: |
| 274 |
(WebCore::SVGFilterElement::SVGFilterElement): |
| 275 |
* svg/SVGFilterPrimitiveStandardAttributes.cpp: |
| 276 |
(WebCore::SVGFilterPrimitiveStandardAttributes::SVGFilterPrimitiveStandardAttributes): |
| 277 |
* svg/SVGForeignObjectElement.cpp: |
| 278 |
(WebCore::SVGForeignObjectElement::SVGForeignObjectElement): |
| 279 |
* svg/SVGImageElement.cpp: |
| 280 |
(WebCore::SVGImageElement::SVGImageElement): |
| 281 |
Ditto. |
| 282 |
|
| 283 |
* svg/SVGLength.h: |
| 284 |
(WebCore::SVGLength::create): |
| 285 |
(WebCore::SVGLength::SVGLength): |
| 286 |
* svg/SVGLengthList.h: |
| 287 |
(WebCore::SVGLengthList::create): |
| 288 |
(WebCore::SVGLengthList::SVGLengthList): |
| 289 |
* svg/SVGLengthListValues.cpp: |
| 290 |
(WebCore::SVGLengthListValues::parse): |
| 291 |
(WebCore::SVGLengthListValues::valueAsString const): |
| 292 |
* svg/SVGLengthListValues.h: |
| 293 |
(WebCore::SVGPropertyTraits<SVGLengthListValues>::initialValue): |
| 294 |
(WebCore::SVGPropertyTraits<SVGLengthListValues>::fromString): |
| 295 |
(WebCore::SVGPropertyTraits<SVGLengthListValues>::parse): |
| 296 |
(WebCore::SVGPropertyTraits<SVGLengthListValues>::toString): |
| 297 |
SVGLengthListValues is now a vector of RefPtr<SVGValue>. However the |
| 298 |
only expected value in the elements of this vector is SVGLengthValue. |
| 299 |
|
| 300 |
* svg/SVGLengthValue.h: |
| 301 |
(WebCore::SVGPropertyTraits<SVGLengthValue>::parse): |
| 302 |
(WebCore::SVGPropertyTraits<SVGLengthValue>::toString): |
| 303 |
* svg/SVGLinearGradientElement.cpp: |
| 304 |
(WebCore::SVGLinearGradientElement::SVGLinearGradientElement): |
| 305 |
* svg/SVGListValues.cpp: Added. |
| 306 |
(WebCore::SVGListValues<PropertyType>::resize): |
| 307 |
(WebCore::SVGListValues<PropertyType>::deepCopy const): |
| 308 |
|
| 309 |
* svg/SVGListValues.h: Added. |
| 310 |
(WebCore::SVGListValues::SVGListValues): |
| 311 |
(WebCore::SVGListValues::propertyAt const): |
| 312 |
(WebCore::SVGListValues::propertyAt): |
| 313 |
(WebCore::SVGListValues::firstProperty const): |
| 314 |
(WebCore::SVGListValues::firstProperty): |
| 315 |
(WebCore::SVGListValues::lastProperty const): |
| 316 |
(WebCore::SVGListValues::lastProperty): |
| 317 |
(WebCore::SVGListValues::properties const): |
| 318 |
This is the base class of all the SVG list attributes. We need to have |
| 319 |
the implementation of some function be in a source file to work around |
| 320 |
header file dependency issues. The SVG list attributes can be one of |
| 321 |
SVGValue data members but at the same time it is vector of RefPtr<SVGValue>. |
| 322 |
|
| 323 |
* svg/SVGMarkerElement.cpp: |
| 324 |
(WebCore::SVGMarkerElement::SVGMarkerElement): |
| 325 |
(WebCore::SVGMarkerElement::synchronizeOrientType): |
| 326 |
(WebCore::SVGMarkerElement::orientType const): |
| 327 |
* svg/SVGMarkerElement.h: |
| 328 |
(WebCore::SVGPropertyTraits<SVGMarkerUnitsType>::highestEnumValue): Deleted. |
| 329 |
(WebCore::SVGPropertyTraits<SVGMarkerUnitsType>::toString): Deleted. |
| 330 |
(WebCore::SVGPropertyTraits<SVGMarkerUnitsType>::fromString): Deleted. |
| 331 |
(WebCore::SVGIDLEnumLimits<SVGMarkerOrientType>::highestExposedEnumValue): Deleted. |
| 332 |
(WebCore::SVGPropertyTraits<SVGMarkerOrientType>::highestEnumValue): Deleted. |
| 333 |
(WebCore::SVGPropertyTraits<SVGMarkerOrientType>::fromString): Deleted. |
| 334 |
This code is moved to the new file SVGMarkerTypes.h. |
| 335 |
|
| 336 |
* svg/SVGMarkerTypes.h: Added. |
| 337 |
(WebCore::SVGPropertyTraits<SVGMarkerUnitsType>::highestEnumValue): |
| 338 |
(WebCore::SVGPropertyTraits<SVGMarkerUnitsType>::toString): |
| 339 |
(WebCore::SVGPropertyTraits<SVGMarkerUnitsType>::fromString): |
| 340 |
(WebCore::SVGPropertyTraits<SVGMarkerOrientType>::highestEnumValue): |
| 341 |
(WebCore::SVGPropertyTraits<SVGMarkerOrientType>::fromString): |
| 342 |
(WebCore::SVGIDLEnumLimits<SVGMarkerOrientType>::highestExposedEnumValue): |
| 343 |
* svg/SVGMaskElement.cpp: |
| 344 |
(WebCore::SVGMaskElement::SVGMaskElement): |
| 345 |
* svg/SVGMatrix.h: |
| 346 |
(WebCore::SVGMatrix::create): |
| 347 |
(WebCore::SVGMatrix::translate): |
| 348 |
(WebCore::SVGMatrix::scale): |
| 349 |
(WebCore::SVGMatrix::scaleNonUniform): |
| 350 |
(WebCore::SVGMatrix::rotate): |
| 351 |
(WebCore::SVGMatrix::rotateFromVector): |
| 352 |
(WebCore::SVGMatrix::flipX): |
| 353 |
(WebCore::SVGMatrix::flipY): |
| 354 |
(WebCore::SVGMatrix::skewX): |
| 355 |
(WebCore::SVGMatrix::skewY): |
| 356 |
(WebCore::SVGMatrix::SVGMatrix): |
| 357 |
* svg/SVGNumber.h: |
| 358 |
(WebCore::SVGNumber::create): |
| 359 |
(WebCore::SVGNumber::SVGNumber): |
| 360 |
* svg/SVGNumberList.h: |
| 361 |
(WebCore::SVGNumberList::create): |
| 362 |
(WebCore::SVGNumberList::SVGNumberList): |
| 363 |
* svg/SVGNumberListValues.cpp: |
| 364 |
(WebCore::SVGNumberListValues::parse): |
| 365 |
(WebCore::SVGNumberListValues::valueAsString const): |
| 366 |
* svg/SVGNumberListValues.h: |
| 367 |
(WebCore::SVGPropertyTraits<SVGNumberListValues>::fromString): |
| 368 |
(WebCore::SVGPropertyTraits<SVGNumberListValues>::toString): |
| 369 |
|
| 370 |
* svg/SVGParserUtilities.cpp: |
| 371 |
(WebCore::parsePoint): This function was moved from SVGAnimateMotionElement.cpp. |
| 372 |
(WebCore::pointsListFromSVGData): |
| 373 |
|
| 374 |
* svg/SVGParserUtilities.h: |
| 375 |
|
| 376 |
* svg/SVGPathByteStream.h: |
| 377 |
(WebCore::SVGPathByteStream::SVGPathByteStream): |
| 378 |
(WebCore::SVGPathByteStream::operator=): |
| 379 |
(WebCore::SVGPathByteStream::operator== const): |
| 380 |
(WebCore::SVGPathByteStream::operator!= const): |
| 381 |
(WebCore::SVGPathByteStream::copy const): |
| 382 |
(WebCore::SVGPathByteStream::append): |
| 383 |
(WebCore::SVGPathByteStream::isEmpty const): |
| 384 |
(WebCore::SVGPropertyTraits<SVGPathByteStream>::initialValue): |
| 385 |
(WebCore::SVGPropertyTraits<SVGPathByteStream>::fromString): |
| 386 |
Add copy constructor and assignment operator. |
| 387 |
|
| 388 |
* svg/SVGPathElement.cpp: |
| 389 |
(WebCore::SVGPathElement::SVGPathElement): |
| 390 |
(WebCore::SVGPathElement::svgAttributeChanged): |
| 391 |
(WebCore::SVGPathElement::lookupOrCreateDWrapper): |
| 392 |
(WebCore::SVGPathElement::synchronizeD): |
| 393 |
(WebCore::SVGPathElement::pathSegListChanged): |
| 394 |
|
| 395 |
* svg/SVGPathSegList.cpp: |
| 396 |
(WebCore::SVGPathSegList::clearContextAndRoles): |
| 397 |
(WebCore::SVGPathSegList::clear): |
| 398 |
(WebCore::SVGPathSegList::replaceItem): |
| 399 |
* svg/SVGPathSegList.h: |
| 400 |
Access SVGPathSegListValues through valuesProperty() instead of m_values |
| 401 |
which is now a RefPtr<SVGValue>. |
| 402 |
|
| 403 |
* svg/SVGPathSegListBuilder.cpp: |
| 404 |
(WebCore::SVGPathSegListBuilder::moveTo): |
| 405 |
(WebCore::SVGPathSegListBuilder::lineTo): |
| 406 |
(WebCore::SVGPathSegListBuilder::lineToHorizontal): |
| 407 |
(WebCore::SVGPathSegListBuilder::lineToVertical): |
| 408 |
(WebCore::SVGPathSegListBuilder::curveToCubic): |
| 409 |
(WebCore::SVGPathSegListBuilder::curveToCubicSmooth): |
| 410 |
(WebCore::SVGPathSegListBuilder::curveToQuadratic): |
| 411 |
(WebCore::SVGPathSegListBuilder::curveToQuadraticSmooth): |
| 412 |
(WebCore::SVGPathSegListBuilder::arcTo): |
| 413 |
(WebCore::SVGPathSegListBuilder::closePath): |
| 414 |
Store a new RefPtr<SVGValue> for every SVGPathSeg. |
| 415 |
|
| 416 |
* svg/SVGPathSegListSource.cpp: |
| 417 |
(WebCore::SVGPathSegListSource::parseSVGSegmentType): |
| 418 |
(WebCore::SVGPathSegListSource::nextCommand): |
| 419 |
* svg/SVGPathSegListValues.h: |
| 420 |
|
| 421 |
* svg/SVGPathUtilities.cpp: |
| 422 |
(WebCore::appendSVGPathByteStreamFromSVGPathSeg): |
| 423 |
(WebCore::addToSVGPathByteStream): |
| 424 |
Answer Simon's questions which were added in r190844. |
| 425 |
|
| 426 |
* svg/SVGPoint.h: |
| 427 |
(WebCore::SVGPoint::create): |
| 428 |
(WebCore::SVGPoint::SVGPoint): |
| 429 |
* svg/SVGPointList.h: |
| 430 |
(WebCore::SVGPointList::create): |
| 431 |
(WebCore::SVGPointList::SVGPointList): |
| 432 |
* svg/SVGPointListValues.cpp: |
| 433 |
(WebCore::SVGPointListValues::valueAsString const): |
| 434 |
* svg/SVGPointListValues.h: |
| 435 |
(WebCore::SVGPropertyTraits<SVGPointListValues>::fromString): |
| 436 |
* svg/SVGPolyElement.cpp: |
| 437 |
(WebCore::SVGPolyElement::parseAttribute): |
| 438 |
(WebCore::SVGPolyElement::synchronizePoints): |
| 439 |
* svg/SVGPolyElement.h: |
| 440 |
(WebCore::SVGPolyElement::pointList const): |
| 441 |
* svg/SVGPreserveAspectRatio.h: |
| 442 |
(WebCore::SVGPreserveAspectRatio::create): |
| 443 |
(WebCore::SVGPreserveAspectRatio::SVGPreserveAspectRatio): |
| 444 |
* svg/SVGPreserveAspectRatioValue.cpp: |
| 445 |
(WebCore::SVGPreserveAspectRatioValue::SVGPreserveAspectRatioValue): |
| 446 |
* svg/SVGPreserveAspectRatioValue.h: |
| 447 |
(WebCore::SVGPropertyTraits<SVGPreserveAspectRatioValue>::fromString): |
| 448 |
* svg/SVGRadialGradientElement.cpp: |
| 449 |
(WebCore::SVGRadialGradientElement::SVGRadialGradientElement): |
| 450 |
* svg/SVGRect.h: |
| 451 |
(WebCore::SVGRect::create): |
| 452 |
(WebCore::SVGRect::SVGRect): |
| 453 |
|
| 454 |
* svg/SVGRectTraits.h: Removed. This struct was moved to SVGPropertyTraits.h |
| 455 |
|
| 456 |
* svg/SVGSVGElement.cpp: |
| 457 |
(WebCore::SVGSVGElement::SVGSVGElement): |
| 458 |
(WebCore::SVGSVGElement::setCurrentTranslate): |
| 459 |
* svg/SVGSVGElement.h: |
| 460 |
(WebCore::SVGSVGElement::currentTranslateValue): |
| 461 |
* svg/SVGStringList.h: |
| 462 |
* svg/SVGStringListValues.cpp: |
| 463 |
(WebCore::SVGStringListValues::reset): |
| 464 |
(WebCore::SVGStringListValues::parse): |
| 465 |
(WebCore::SVGStringListValues::valueAsString const): |
| 466 |
* svg/SVGStringListValues.h: |
| 467 |
* svg/SVGTests.cpp: |
| 468 |
(WebCore::SVGTests::SVGTests): |
| 469 |
(WebCore::SVGTests::isValid const): |
| 470 |
(WebCore::SVGTests::parseAttribute): |
| 471 |
(WebCore::SVGTests::synchronizeAttribute): |
| 472 |
* svg/SVGTextContentElement.cpp: |
| 473 |
(WebCore::SVGTextContentElement::SVGTextContentElement): |
| 474 |
(WebCore::SVGTextContentElement::textLengthAnimated): |
| 475 |
(WebCore::SVGTextContentElement::parseAttribute): |
| 476 |
(WebCore::SVGTextContentElement::svgAttributeChanged): |
| 477 |
* svg/SVGTextPathElement.cpp: |
| 478 |
(WebCore::SVGTextPathElement::SVGTextPathElement): |
| 479 |
* svg/SVGTransform.h: |
| 480 |
(WebCore::SVGTransform::create): |
| 481 |
(WebCore::SVGTransform::SVGTransform): |
| 482 |
* svg/SVGTransformList.h: |
| 483 |
* svg/SVGTransformListValues.cpp: |
| 484 |
(WebCore::SVGTransformListValues::consolidate): |
| 485 |
(WebCore::SVGTransformListValues::concatenate const): |
| 486 |
(WebCore::SVGTransformListValues::valueAsString const): |
| 487 |
* svg/SVGTransformListValues.h: |
| 488 |
(WebCore::SVGPropertyTraits<SVGTransformListValues>::fromString): |
| 489 |
* svg/SVGTransformValue.h: |
| 490 |
(WebCore::SVGPropertyTraits<SVGTransformValue>::initialValue): |
| 491 |
(WebCore::SVGPropertyTraits<SVGTransformValue>::toString): |
| 492 |
* svg/SVGTransformable.cpp: |
| 493 |
(WebCore::SVGTransformable::parseTransformAttribute): |
| 494 |
* svg/SVGUseElement.cpp: |
| 495 |
(WebCore::SVGUseElement::SVGUseElement): |
| 496 |
|
| 497 |
* svg/SVGValue.h: Added. |
| 498 |
(WebCore::toStringVisitor::operator()): This visitor returns the string |
| 499 |
of the alternative of SVGValueVariant. |
| 500 |
(WebCore::parseVisitor::parseVisitor): |
| 501 |
(WebCore::parseVisitor::operator()): This replaces the alternative of |
| 502 |
SVGValueVariant with the value we get from parsing the string of an |
| 503 |
attribute. |
| 504 |
(WebCore::SVGValue::create): |
| 505 |
(WebCore::SVGValue::is const): |
| 506 |
(WebCore::SVGValue::operator const PropertyType& const): |
| 507 |
(WebCore::SVGValue::operator PropertyType&): |
| 508 |
(WebCore::SVGValue::toString const): |
| 509 |
(WebCore::SVGValue::parse): |
| 510 |
(WebCore::SVGValue::SVGValue): |
| 511 |
|
| 512 |
* svg/SVGViewElement.cpp: |
| 513 |
(WebCore::SVGViewElement::SVGViewElement): |
| 514 |
(WebCore::SVGViewElement::parseAttribute): |
| 515 |
* svg/SVGViewElement.h: |
| 516 |
|
| 517 |
* svg/SVGViewSpec.cpp: |
| 518 |
(WebCore::SVGViewSpec::SVGViewSpec): Initialize pointers with the default |
| 519 |
values. |
| 520 |
(WebCore::SVGViewSpec::transformString const): |
| 521 |
(WebCore::SVGViewSpec::viewBoxString const): |
| 522 |
(WebCore::SVGViewSpec::preserveAspectRatioString const): |
| 523 |
(WebCore::SVGViewSpec::reset): |
| 524 |
(WebCore::SVGViewSpec::parseViewSpec): |
| 525 |
* svg/SVGViewSpec.h: |
| 526 |
|
| 527 |
* svg/properties/SVGAnimatedEnumerationPropertyTearOff.h: |
| 528 |
No need for the casting currentAnimatedValue() method since the base class |
| 529 |
method now returns a RefPtr<SVGValue>. The casting will happen when getting |
| 530 |
the enum value from the SVGValue. |
| 531 |
|
| 532 |
* svg/properties/SVGAnimatedListPropertyTearOff.h: |
| 533 |
(WebCore::SVGAnimatedListPropertyTearOff::create): |
| 534 |
(WebCore::SVGAnimatedListPropertyTearOff::currentAnimatedValue): |
| 535 |
(WebCore::SVGAnimatedListPropertyTearOff::currentAnimatedValue const): |
| 536 |
(WebCore::SVGAnimatedListPropertyTearOff::currentBaseValue const): |
| 537 |
(WebCore::SVGAnimatedListPropertyTearOff::animationStarted): |
| 538 |
(WebCore::SVGAnimatedListPropertyTearOff::animationEnded): |
| 539 |
(WebCore::SVGAnimatedListPropertyTearOff::synchronizeWrappersIfNeeded): |
| 540 |
(WebCore::SVGAnimatedListPropertyTearOff::animValWillChange): |
| 541 |
(WebCore::SVGAnimatedListPropertyTearOff::animValDidChange): |
| 542 |
(WebCore::SVGAnimatedListPropertyTearOff::SVGAnimatedListPropertyTearOff): |
| 543 |
* svg/properties/SVGAnimatedPathSegListPropertyTearOff.h: |
| 544 |
* svg/properties/SVGAnimatedProperty.h: |
| 545 |
(WebCore::SVGAnimatedProperty::lookupOrCreateWrapper): |
| 546 |
* svg/properties/SVGAnimatedPropertyMacros.h: |
| 547 |
(WebCore::SVGSynchronizableAnimatedProperty::SVGSynchronizableAnimatedProperty): |
| 548 |
* svg/properties/SVGAnimatedPropertyTearOff.h: |
| 549 |
* svg/properties/SVGAnimatedStaticPropertyTearOff.h: |
| 550 |
(WebCore::SVGAnimatedStaticPropertyTearOff::baseVal): |
| 551 |
(WebCore::SVGAnimatedStaticPropertyTearOff::animVal): |
| 552 |
(WebCore::SVGAnimatedStaticPropertyTearOff::setBaseVal): |
| 553 |
(WebCore::SVGAnimatedStaticPropertyTearOff::create): |
| 554 |
(WebCore::SVGAnimatedStaticPropertyTearOff::currentAnimatedValue): |
| 555 |
(WebCore::SVGAnimatedStaticPropertyTearOff::currentAnimatedValue const): |
| 556 |
(WebCore::SVGAnimatedStaticPropertyTearOff::currentBaseValue const): |
| 557 |
(WebCore::SVGAnimatedStaticPropertyTearOff::animationStarted): |
| 558 |
(WebCore::SVGAnimatedStaticPropertyTearOff::animationEnded): |
| 559 |
(WebCore::SVGAnimatedStaticPropertyTearOff::SVGAnimatedStaticPropertyTearOff): |
| 560 |
* svg/properties/SVGAnimatedTransformListPropertyTearOff.h: |
| 561 |
|
| 562 |
* svg/properties/SVGListProperty.h: |
| 563 |
(WebCore::SVGListProperty::setValuesAndWrappers): |
| 564 |
(WebCore::SVGListProperty::clearValues): |
| 565 |
(WebCore::SVGListProperty::clearValuesAndWrappers): |
| 566 |
(WebCore::SVGListProperty::numberOfItems const): |
| 567 |
(WebCore::SVGListProperty::initializeValues): |
| 568 |
(WebCore::SVGListProperty::initializeValuesAndWrappers): |
| 569 |
(WebCore::SVGListProperty::canGetItem): |
| 570 |
(WebCore::SVGListProperty::getItemValues): |
| 571 |
(WebCore::SVGListProperty::getItemValuesAndWrappers): |
| 572 |
(WebCore::SVGListProperty::insertItemBeforeValues): |
| 573 |
(WebCore::SVGListProperty::insertItemBeforeValuesAndWrappers): |
| 574 |
(WebCore::SVGListProperty::canReplaceItem): |
| 575 |
(WebCore::SVGListProperty::replaceItemValues): |
| 576 |
(WebCore::SVGListProperty::replaceItemValuesAndWrappers): |
| 577 |
(WebCore::SVGListProperty::canRemoveItem): |
| 578 |
(WebCore::SVGListProperty::removeItemValues): |
| 579 |
(WebCore::SVGListProperty::removeItemValuesAndWrappers): |
| 580 |
(WebCore::SVGListProperty::appendItemValues): |
| 581 |
(WebCore::SVGListProperty::appendItemValuesAndWrappers): |
| 582 |
(WebCore::SVGListProperty::values const): |
| 583 |
(WebCore::SVGListProperty::valuesProperty const): |
| 584 |
(WebCore::SVGListProperty::SVGListProperty): |
| 585 |
(WebCore::SVGListProperty::values): Deleted. |
| 586 |
(WebCore::SVGListProperty::~SVGListProperty): Deleted. |
| 587 |
No need for m_ownsValues anymore. m_values is now a RefPtr<SVGValue>. It |
| 588 |
will be deleted once the ref-count becomes zero. |
| 589 |
|
| 590 |
* svg/properties/SVGListPropertyTearOff.h: |
| 591 |
(WebCore::SVGListPropertyTearOff::create): |
| 592 |
(WebCore::SVGListPropertyTearOff::findItem const): |
| 593 |
(WebCore::SVGListPropertyTearOff::removeItemFromList): |
| 594 |
(WebCore::SVGListPropertyTearOff::SVGListPropertyTearOff): |
| 595 |
* svg/properties/SVGMatrixTearOff.h: |
| 596 |
* svg/properties/SVGPropertyTearOff.h: |
| 597 |
(WebCore::SVGPropertyTearOff::value const): |
| 598 |
(WebCore::SVGPropertyTearOff::propertyReference): |
| 599 |
(WebCore::SVGPropertyTearOff::setValue): |
| 600 |
(WebCore::SVGPropertyTearOff::SVGPropertyTearOff): |
| 601 |
(WebCore::SVGPropertyTearOff::~SVGPropertyTearOff): |
| 602 |
|
| 603 |
* svg/properties/SVGPropertyTraits.h: |
| 604 |
(WebCore::SVGPropertyTraits<bool>::fromString): |
| 605 |
(WebCore::SVGPropertyTraits<Color>::initialValue): |
| 606 |
(WebCore::SVGPropertyTraits<Color>::fromString): |
| 607 |
(WebCore::SVGPropertyTraits<Color>::parse): |
| 608 |
(WebCore::SVGPropertyTraits<Color>::toString): |
| 609 |
(WebCore::SVGPropertyTraits<int>::fromString): |
| 610 |
(WebCore::SVGPropertyTraits<float>::fromString): |
| 611 |
(WebCore::SVGPropertyTraits<float>::parse): |
| 612 |
(WebCore::SVGPropertyTraits<FloatPoint>::initialValue): |
| 613 |
(WebCore::SVGPropertyTraits<FloatPoint>::fromString): |
| 614 |
(WebCore::SVGPropertyTraits<FloatPoint>::parse): |
| 615 |
(WebCore::SVGPropertyTraits<FloatPoint>::toString): |
| 616 |
(WebCore::SVGPropertyTraits<FloatRect>::initialValue): |
| 617 |
(WebCore::SVGPropertyTraits<FloatRect>::fromString): |
| 618 |
(WebCore::SVGPropertyTraits<FloatRect>::parse): |
| 619 |
(WebCore::SVGPropertyTraits<FloatRect>::toString): |
| 620 |
(WebCore::SVGPropertyTraits<String>::fromString): |
| 621 |
(WebCore::SVGPropertyTraits<String>::parse): |
| 622 |
(WebCore::SVGPropertyTraits<String>::toString): |
| 623 |
Have all the SVGPropertyTraits with no specific SVG type be in one file. |
| 624 |
|
| 625 |
* svg/properties/SVGStaticListPropertyTearOff.h: |
| 626 |
(WebCore::SVGStaticListPropertyTearOff::SVGStaticListPropertyTearOff): |
| 627 |
* svg/properties/SVGStaticPropertyTearOff.h: |
| 628 |
|
| 1 |
2018-02-15 Zan Dobersek <zdobersek@igalia.com> |
629 |
2018-02-15 Zan Dobersek <zdobersek@igalia.com> |
| 2 |
|
630 |
|
| 3 |
HarfBuzzFace: rework cache entry reference holding |
631 |
HarfBuzzFace: rework cache entry reference holding |