| Index: Source/core/animation/Animation.cpp | 
| diff --git a/Source/core/animation/Animation.cpp b/Source/core/animation/Animation.cpp | 
| index fd325c1cb714640d6a37f30e0c1aa9012b5c865f..ae76eba8481c0d359b9843d589462fdca0666100 100644 | 
| --- a/Source/core/animation/Animation.cpp | 
| +++ b/Source/core/animation/Animation.cpp | 
| @@ -46,41 +46,41 @@ | 
|  | 
| namespace WebCore { | 
|  | 
| -PassRefPtr<Animation> Animation::create(Element* target, PassRefPtrWillBeRawPtr<AnimationEffect> effect, const Timing& timing, Priority priority, PassOwnPtr<EventDelegate> eventDelegate) | 
| +PassRefPtrWillBeRawPtr<Animation> Animation::create(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()); | 
| if (element) | 
| 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()); | 
| if (element) | 
| 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()); | 
| if (element) | 
| @@ -92,33 +92,39 @@ Animation::Animation(Element* target, PassRefPtrWillBeRawPtr<AnimationEffect> ef | 
| : TimedItem(timing, eventDelegate) | 
| , m_target(target) | 
| , m_effect(effect) | 
| -    , m_sampledEffect(0) | 
| +    , m_sampledEffect(nullptr) | 
| , m_priority(priority) | 
| { | 
| +#if !ENABLE(OILPAN) | 
| if (m_target) | 
| m_target->ensureActiveAnimations().addAnimation(this); | 
| +#endif | 
| } | 
|  | 
| Animation::~Animation() | 
| { | 
| +#if !ENABLE(OILPAN) | 
| if (m_target) | 
| m_target->activeAnimations()->notifyAnimationDestroyed(this); | 
| +#endif | 
| } | 
|  | 
| -void Animation::didAttach() | 
| +void Animation::attach(AnimationPlayer* player) | 
| { | 
| if (m_target) { | 
| -        m_target->ensureActiveAnimations().addPlayer(player()); | 
| +        m_target->ensureActiveAnimations().addPlayer(player); | 
| m_target->setNeedsAnimationStyleRecalc(); | 
| } | 
| +    TimedItem::attach(player); | 
| } | 
|  | 
| -void Animation::willDetach() | 
| +void Animation::detach() | 
| { | 
| if (m_target) | 
| m_target->activeAnimations()->removePlayer(player()); | 
| if (m_sampledEffect) | 
| clearEffects(); | 
| +    TimedItem::detach(); | 
| } | 
|  | 
| void Animation::specifiedTimingChanged() | 
| @@ -150,7 +156,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).add(sampledEffect.release()); | 
| } else { | 
| @@ -166,7 +172,7 @@ void Animation::clearEffects() | 
| ASSERT(m_sampledEffect); | 
|  | 
| m_sampledEffect->clear(); | 
| -    m_sampledEffect = 0; | 
| +    m_sampledEffect = nullptr; | 
| cancelAnimationOnCompositor(); | 
| m_target->setNeedsAnimationStyleRecalc(); | 
| invalidate(); | 
| @@ -225,21 +231,23 @@ double Animation::calculateTimeToEffectChange(bool forwards, double localTime, d | 
| void Animation::notifySampledEffectRemovedFromAnimationStack() | 
| { | 
| ASSERT(m_sampledEffect); | 
| -    m_sampledEffect = 0; | 
| +    m_sampledEffect = nullptr; | 
| } | 
|  | 
| +#if !ENABLE(OILPAN) | 
| void Animation::notifyElementDestroyed() | 
| { | 
| // If our player is kept alive just by the sampledEffect, we might get our | 
| // destructor called when we call SampledEffect::clear(), so we need to | 
| // clear m_sampledEffect first. | 
| -    m_target = 0; | 
| +    m_target = nullptr; | 
| clearEventDelegate(); | 
| SampledEffect* sampledEffect = m_sampledEffect; | 
| -    m_sampledEffect = 0; | 
| +    m_sampledEffect = nullptr; | 
| if (sampledEffect) | 
| sampledEffect->clear(); | 
| } | 
| +#endif | 
|  | 
| bool Animation::isCandidateForAnimationOnCompositor() const | 
| { | 
| @@ -300,4 +308,12 @@ void Animation::pauseAnimationForTestingOnCompositor(double pauseTime) | 
| CompositorAnimations::instance()->pauseAnimationForTestingOnCompositor(*m_target, m_compositorAnimationIds[i], pauseTime); | 
| } | 
|  | 
| +void Animation::trace(Visitor* visitor) | 
| +{ | 
| +    visitor->trace(m_target); | 
| +    visitor->trace(m_effect); | 
| +    visitor->trace(m_sampledEffect); | 
| +    TimedItem::trace(visitor); | 
| +} | 
| + | 
| } // namespace WebCore | 
|  |