Index: Source/core/animation/Animation.cpp |
diff --git a/Source/core/animation/Animation.cpp b/Source/core/animation/Animation.cpp |
index bf7e0262e533f82c5c48090f67cf9509995bb299..ff8f6444387acd9a8e39c09500e8d61159e57470 100644 |
--- a/Source/core/animation/Animation.cpp |
+++ b/Source/core/animation/Animation.cpp |
@@ -46,39 +46,39 @@ |
namespace WebCore { |
-PassRefPtr<Animation> Animation::create(PassRefPtr<Element> target, PassRefPtrWillBeRawPtr<AnimationEffect> effect, const Timing& timing, Priority priority, PassOwnPtr<EventDelegate> eventDelegate) |
+PassRefPtrWillBeRawPtr<Animation> Animation::create(PassRefPtr<Element> target, PassRefPtrWillBeRawPtr<AnimationEffect> effect, const Timing& timing, Priority priority, PassOwnPtr<EventDelegate> eventDelegate) |
{ |
- return adoptRef(new Animation(target, effect, timing, priority, eventDelegate)); |
+ return adoptRefWillBeNoop(new Animation(target, effect, timing, priority, eventDelegate)); |
} |
-PassRefPtr<Animation> Animation::create(Element* element, PassRefPtrWillBeRawPtr<AnimationEffect> effect, const Dictionary& timingInputDictionary) |
+PassRefPtrWillBeRawPtr<Animation> Animation::create(Element* element, PassRefPtrWillBeRawPtr<AnimationEffect> effect, const Dictionary& timingInputDictionary) |
{ |
ASSERT(RuntimeEnabledFeatures::webAnimationsAPIEnabled()); |
return create(element, effect, TimingInput::convert(timingInputDictionary)); |
} |
-PassRefPtr<Animation> Animation::create(Element* element, PassRefPtrWillBeRawPtr<AnimationEffect> effect, double duration) |
+PassRefPtrWillBeRawPtr<Animation> Animation::create(Element* element, PassRefPtrWillBeRawPtr<AnimationEffect> effect, double duration) |
{ |
ASSERT(RuntimeEnabledFeatures::webAnimationsAPIEnabled()); |
return create(element, effect, TimingInput::convert(duration)); |
} |
-PassRefPtr<Animation> Animation::create(Element* element, PassRefPtrWillBeRawPtr<AnimationEffect> effect) |
+PassRefPtrWillBeRawPtr<Animation> Animation::create(Element* element, PassRefPtrWillBeRawPtr<AnimationEffect> effect) |
{ |
ASSERT(RuntimeEnabledFeatures::webAnimationsAPIEnabled()); |
return create(element, effect, Timing()); |
} |
-PassRefPtr<Animation> Animation::create(Element* element, const Vector<Dictionary>& keyframeDictionaryVector, const Dictionary& timingInputDictionary, ExceptionState& exceptionState) |
+PassRefPtrWillBeRawPtr<Animation> Animation::create(Element* element, const Vector<Dictionary>& keyframeDictionaryVector, const Dictionary& timingInputDictionary, ExceptionState& exceptionState) |
{ |
ASSERT(RuntimeEnabledFeatures::webAnimationsAPIEnabled()); |
UseCounter::count(element->document(), UseCounter::AnimationConstructorKeyframeListEffectObjectTiming); |
return create(element, EffectInput::convert(element, keyframeDictionaryVector, exceptionState), TimingInput::convert(timingInputDictionary)); |
} |
-PassRefPtr<Animation> Animation::create(Element* element, const Vector<Dictionary>& keyframeDictionaryVector, double duration, ExceptionState& exceptionState) |
+PassRefPtrWillBeRawPtr<Animation> Animation::create(Element* element, const Vector<Dictionary>& keyframeDictionaryVector, double duration, ExceptionState& exceptionState) |
{ |
ASSERT(RuntimeEnabledFeatures::webAnimationsAPIEnabled()); |
UseCounter::count(element->document(), UseCounter::AnimationConstructorKeyframeListEffectDoubleTiming); |
return create(element, EffectInput::convert(element, keyframeDictionaryVector, exceptionState), TimingInput::convert(duration)); |
} |
-PassRefPtr<Animation> Animation::create(Element* element, const Vector<Dictionary>& keyframeDictionaryVector, ExceptionState& exceptionState) |
+PassRefPtrWillBeRawPtr<Animation> Animation::create(Element* element, const Vector<Dictionary>& keyframeDictionaryVector, ExceptionState& exceptionState) |
{ |
ASSERT(RuntimeEnabledFeatures::webAnimationsAPIEnabled()); |
UseCounter::count(element->document(), UseCounter::AnimationConstructorKeyframeListEffectNoTiming); |
@@ -89,27 +89,31 @@ Animation::Animation(PassRefPtr<Element> target, PassRefPtrWillBeRawPtr<Animatio |
: TimedItem(timing, eventDelegate) |
, m_target(target) |
, m_effect(effect) |
- , m_sampledEffect(0) |
+ , m_sampledEffect(nullptr) |
, m_priority(priority) |
{ |
} |
-void Animation::didAttach() |
+void Animation::attach(AnimationPlayer* player) |
{ |
if (m_target) { |
- m_target->ensureActiveAnimations().players().add(player()); |
+ m_target->ensureActiveAnimations().players().add(player); |
m_target->setNeedsAnimationStyleRecalc(); |
} |
+ TimedItem::attach(player); |
} |
-void Animation::willDetach() |
+void Animation::detach() |
{ |
if (m_target) { |
+#if !ENABLE(OILPAN) |
m_target->activeAnimations()->players().remove(player()); |
+#endif |
m_target->setNeedsAnimationStyleRecalc(); |
} |
if (m_sampledEffect) |
clearEffects(); |
+ TimedItem::detach(); |
} |
void Animation::specifiedTimingChanged() |
@@ -137,7 +141,7 @@ void Animation::applyEffects() |
if (m_sampledEffect) { |
m_sampledEffect->setInterpolations(interpolations.release()); |
} else if (!interpolations->isEmpty()) { |
- OwnPtr<SampledEffect> sampledEffect = SampledEffect::create(this, interpolations.release()); |
+ OwnPtrWillBeRawPtr<SampledEffect> sampledEffect = SampledEffect::create(this, interpolations.release()); |
m_sampledEffect = sampledEffect.get(); |
ensureAnimationStack(m_target.get()).add(sampledEffect.release()); |
} else { |
@@ -152,8 +156,8 @@ void Animation::clearEffects() |
ASSERT(player()); |
ASSERT(m_sampledEffect); |
- m_sampledEffect->clear(); |
- m_sampledEffect = 0; |
+ m_sampledEffect->detach(); |
+ m_sampledEffect = nullptr; |
cancelAnimationOnCompositor(); |
m_target->setNeedsAnimationStyleRecalc(); |
invalidate(); |
@@ -212,7 +216,7 @@ double Animation::calculateTimeToEffectChange(bool forwards, double localTime, d |
void Animation::notifySampledEffectRemovedFromAnimationStack() |
{ |
ASSERT(m_sampledEffect); |
- m_sampledEffect = 0; |
+ m_sampledEffect = nullptr; |
} |
bool Animation::isCandidateForAnimationOnCompositor() const |
@@ -274,4 +278,11 @@ void Animation::pauseAnimationForTestingOnCompositor(double pauseTime) |
CompositorAnimations::instance()->pauseAnimationForTestingOnCompositor(*m_target.get(), m_compositorAnimationIds[i], pauseTime); |
} |
+void Animation::trace(Visitor* visitor) |
+{ |
+ visitor->trace(m_effect); |
+ visitor->trace(m_sampledEffect); |
+ TimedItem::trace(visitor); |
+} |
+ |
} // namespace WebCore |