This work is a step towards https://bugs.webkit.org/show_bug.cgi?id=168586.
1. A new class, named SVGValue, will be added. This class is RefCounted. It is also a variant of the all the types of the list elements.
2. A new template class, named SVGValueList will be added. This class is derived from Vector<RefPtr<SVGValue>>. It provides easy access to the underlaying data members. It handles the copy assignment such that the underlaying data members are copied not referenced.
3. All the list properties classes will be derived form SVGValueList. For example SVGNumberListValues will be derived from SVGValueList<float>.
4. When an item is added to the values of a tear-off object, a new RefPtr<SVGValue> is created to hold the new data.
5. When an item of the values of a tear-off object is referenced by a wrapper, the reference of the underlaying data member is obtained form the RefPtr<SVGValue>.
The patch of this bug will add the overhead of saving all the data of the list properties as RefCounted objects. It will not make the code more secure. All the raw references and raw pointers from the values to the wrappers will remain the same. But it will make changing all SVG attributes to be RefCounted a lot easier.
Created attachment 338049 [details]
Created attachment 338051 [details]
Created attachment 338066 [details]
This is already done in https://bugs.webkit.org/show_bug.cgi?id=191237.
*** This bug has been marked as a duplicate of bug 191237 ***