Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(373)

Unified Diff: Source/core/animation/AnimationValue.h

Issue 1214593003: Move AnimationValue onto the heap (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/core/animation/AnimationType.h ('k') | Source/core/animation/CSSValueAnimationType.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/animation/AnimationValue.h
diff --git a/Source/core/animation/AnimationValue.h b/Source/core/animation/AnimationValue.h
index 9b13bce22c12aad5c2e106e222696acd6a8d2657..b39bc629e10f37770987f8d0c60df5351f408c80 100644
--- a/Source/core/animation/AnimationValue.h
+++ b/Source/core/animation/AnimationValue.h
@@ -13,48 +13,43 @@ namespace blink {
class AnimationType;
-struct AnimationValue {
-private:
- DISALLOW_ALLOCATION();
-
+class AnimationValue : public NoBaseWillBeGarbageCollectedFinalized<AnimationValue> {
public:
- const AnimationType* type;
- OwnPtrWillBeMember<InterpolableValue> interpolableValue;
- RefPtrWillBeMember<NonInterpolableValue> nonInterpolableValue;
-
- operator bool() const { return bool(type); }
-
- AnimationValue()
- : type(nullptr)
- , interpolableValue(nullptr)
- , nonInterpolableValue(nullptr)
- { }
-
- AnimationValue(const AnimationType* type, PassOwnPtrWillBeRawPtr<InterpolableValue> interpolableValue, RefPtrWillBeRawPtr<NonInterpolableValue> nonInterpolableValue)
- : type(type)
- , interpolableValue(interpolableValue)
- , nonInterpolableValue(nonInterpolableValue)
- { }
-
- void copyFrom(const AnimationValue& other)
+ static PassOwnPtrWillBeRawPtr<AnimationValue> create(const AnimationType& type, PassOwnPtrWillBeRawPtr<InterpolableValue> interpolableValue, PassRefPtrWillBeRawPtr<NonInterpolableValue> nonInterpolableValue = nullptr)
{
- type = other.type;
- interpolableValue = other.interpolableValue ? other.interpolableValue->clone() : nullptr;
- nonInterpolableValue = other.nonInterpolableValue;
+ return adoptPtrWillBeNoop(new AnimationValue(type, interpolableValue, nonInterpolableValue));
}
- void clear()
+ PassOwnPtrWillBeRawPtr<AnimationValue> clone() const
{
- type = nullptr;
- interpolableValue = nullptr;
- nonInterpolableValue = nullptr;
+ return create(m_type, m_interpolableValue->clone(), m_nonInterpolableValue);
}
+ const AnimationType& type() const { return m_type; }
+ const InterpolableValue& interpolableValue() const { return *m_interpolableValue; }
+ InterpolableValue& interpolableValue() { return *m_interpolableValue; }
+ const NonInterpolableValue* nonInterpolableValue() const { return m_nonInterpolableValue.get(); }
+
DEFINE_INLINE_TRACE()
{
- visitor->trace(interpolableValue);
- visitor->trace(nonInterpolableValue);
+ visitor->trace(m_interpolableValue);
+ visitor->trace(m_nonInterpolableValue);
}
+
+private:
+ AnimationValue(const AnimationType& type, PassOwnPtrWillBeRawPtr<InterpolableValue> interpolableValue, PassRefPtrWillBeRawPtr<NonInterpolableValue> nonInterpolableValue = nullptr)
+ : m_type(type)
+ , m_interpolableValue(interpolableValue)
+ , m_nonInterpolableValue(nonInterpolableValue)
+ {
+ ASSERT(this->m_interpolableValue);
+ }
+
+ const AnimationType& m_type;
+ OwnPtrWillBeMember<InterpolableValue> m_interpolableValue;
+ RefPtrWillBeMember<NonInterpolableValue> m_nonInterpolableValue;
+
+ friend class AnimationType;
};
} // namespace blink
« no previous file with comments | « Source/core/animation/AnimationType.h ('k') | Source/core/animation/CSSValueAnimationType.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698