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..eff4d8683cd5c586f186880a41027dadfa0e886b 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 |
pdr.
2015/10/15 04:53:52
Would it be possible to use a simpler approach to
pdr.
2015/10/15 22:05:59
Talked with Tien-Ren about this and wanted to brai
trchen
2015/10/15 23:24:31
Nah it's pretty simple to support. Also we always
|
+ // 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 { |
+ public: |
+ ObjectPaintProperties* objectPaintProperties() const; |
+ ObjectPaintProperties& ensureObjectPaintProperties(); |
+ void clearObjectPaintProperties(); |
+ protected: |
+ ~Owner(); |
+ private: |
+ typedef HashMap<const ObjectPaintProperties::Owner*, OwnPtr<ObjectPaintProperties>> NodeMapping; |
+ 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; } |
+ 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 |