Chromium Code Reviews| Index: third_party/WebKit/Source/core/paint/ObjectPaintProperties.h |
| diff --git a/third_party/WebKit/Source/core/paint/ObjectPaintProperties.h b/third_party/WebKit/Source/core/paint/ObjectPaintProperties.h |
| index 5bce0886dd627a31c625c2b97bb204dfc29e7108..5708d1e51fe40a4cc0dfd46f2f6132fbd24a86bb 100644 |
| --- a/third_party/WebKit/Source/core/paint/ObjectPaintProperties.h |
| +++ b/third_party/WebKit/Source/core/paint/ObjectPaintProperties.h |
| @@ -6,6 +6,9 @@ |
| #define ObjectPaintProperties_h |
| #include "platform/graphics/paint/TransformPaintPropertyNode.h" |
| +#include "wtf/HashMap.h" |
| +#include "wtf/OwnPtr.h" |
| +#include "wtf/PassOwnPtr.h" |
| #include "wtf/PassRefPtr.h" |
| #include "wtf/RefPtr.h" |
| @@ -24,24 +27,38 @@ class ObjectPaintProperties { |
| WTF_MAKE_NONCOPYABLE(ObjectPaintProperties); |
| WTF_MAKE_FAST_ALLOCATED(ObjectPaintProperties); |
| public: |
| + // This is intended to be inherited by FrameView and LayoutObject to hold ownership to |
| + // ObjectPaintProperties. Ideally we should simply use an OwnPtr but at this moment we |
| + // use a global HashMap to avoid regressing non-SPv2 memory use. Thus we need this class |
| + // to maintain RAII. |
| + class Owner { |
|
jbroman
2015/10/14 15:11:58
So this exists because we don't want to pay sizeof
pdr.
2015/10/14 17:52:06
I like your approach of putting these functions on
trchen
2015/10/14 22:51:13
This is because LayoutSVGModelObject can't have la
|
| + public: |
| + ObjectPaintProperties* objectPaintProperties() const; |
| + ObjectPaintProperties& ensureObjectPaintProperties(); |
| + void setObjectPaintProperties(PassOwnPtr<ObjectPaintProperties>); |
|
jbroman
2015/10/14 15:11:58
It looks like this is only used for clearing. If s
trchen
2015/10/14 22:51:13
Makes sense. Done.
|
| + protected: |
| + ~Owner(); |
| + private: |
| + typedef HashMap<const ObjectPaintProperties::Owner*, OwnPtr<ObjectPaintProperties>> NodeMapping; |
|
pdr.
2015/10/14 17:52:06
For now, I think we can increase the size of Paint
trchen
2015/10/14 22:51:13
See explanation above.
|
| + static NodeMapping* s_nodeMapping; |
| + }; |
| + |
| static PassOwnPtr<ObjectPaintProperties> create() |
| { |
| return adoptPtr(new ObjectPaintProperties()); |
| } |
| - bool hasTransform() const { return m_transform; } |
| - void setTransform(PassRefPtr<TransformPaintPropertyNode> transform) { m_transform = transform; } |
| - const TransformPaintPropertyNode* transform() const { return m_transform.get(); } |
| + void setTransformNodeForSelf(PassRefPtr<TransformPaintPropertyNode> node) { m_transformNodeForSelf = node; } |
|
jbroman
2015/10/14 15:11:58
Any reason to make this more abstract? For Depreca
pdr.
2015/10/14 17:52:06
I think the goal was to avoid leaking paint inform
trchen
2015/10/14 22:51:13
The real question is who will be using this data?
pdr.
2015/10/15 04:53:51
We're thinking in the same way wrt the subsequence
jbroman
2015/10/15 14:29:10
This class is in core/; the merge algorithm, which
trchen
2015/10/15 23:24:31
Done.
|
| + const TransformPaintPropertyNode* transformNodeForSelf() const { return m_transformNodeForSelf.get(); } |
| - bool hasPerspective() const { return m_perspective; } |
| - void setPerspective(PassRefPtr<TransformPaintPropertyNode> perspective) { m_perspective = perspective; } |
| - const TransformPaintPropertyNode* perspective() const { return m_perspective.get(); } |
| + void setTransformNodeForDescendants(PassRefPtr<TransformPaintPropertyNode> node) { m_transformNodeForDescendants = node; } |
| + const TransformPaintPropertyNode* transformNodeForDescendants() const { return m_transformNodeForDescendants.get(); } |
| private: |
| ObjectPaintProperties() { } |
| - RefPtr<TransformPaintPropertyNode> m_transform; |
| - RefPtr<TransformPaintPropertyNode> m_perspective; |
| + RefPtr<TransformPaintPropertyNode> m_transformNodeForSelf; |
| + RefPtr<TransformPaintPropertyNode> m_transformNodeForDescendants; |
| }; |
| } // namespace blink |