| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "config.h" | 5 #include "config.h" |
| 6 | 6 |
| 7 #include "core/inspector/InspectorAnimationAgent.h" | 7 #include "core/inspector/InspectorAnimationAgent.h" |
| 8 | 8 |
| 9 #include "core/animation/Animation.h" | 9 #include "core/animation/Animation.h" |
| 10 #include "core/animation/AnimationEffect.h" | 10 #include "core/animation/AnimationEffect.h" |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 74 ComputedTimingProperties computedTiming; | 74 ComputedTimingProperties computedTiming; |
| 75 animation->computedTiming(computedTiming); | 75 animation->computedTiming(computedTiming); |
| 76 double delay = computedTiming.delay(); | 76 double delay = computedTiming.delay(); |
| 77 double duration = computedTiming.duration().getAsUnrestrictedDouble(); | 77 double duration = computedTiming.duration().getAsUnrestrictedDouble(); |
| 78 String easing = animation->specifiedTiming().timingFunction->toString(); | 78 String easing = animation->specifiedTiming().timingFunction->toString(); |
| 79 | 79 |
| 80 if (isTransition) { | 80 if (isTransition) { |
| 81 // Obtain keyframes and convert keyframes back to delay | 81 // Obtain keyframes and convert keyframes back to delay |
| 82 ASSERT(animation->effect()->isKeyframeEffectModel()); | 82 ASSERT(animation->effect()->isKeyframeEffectModel()); |
| 83 const KeyframeEffectModelBase* effect = toKeyframeEffectModelBase(animat
ion->effect()); | 83 const KeyframeEffectModelBase* effect = toKeyframeEffectModelBase(animat
ion->effect()); |
| 84 WillBeHeapVector<RefPtrWillBeMember<Keyframe> > keyframes = KeyframeEffe
ctModelBase::normalizedKeyframesForInspector(effect->getFrames()); | 84 WillBeHeapVector<RefPtrWillBeMember<Keyframe>> keyframes = KeyframeEffec
tModelBase::normalizedKeyframesForInspector(effect->getFrames()); |
| 85 if (keyframes.size() == 3) { | 85 if (keyframes.size() == 3) { |
| 86 delay = keyframes.at(1)->offset() * duration; | 86 delay = keyframes.at(1)->offset() * duration; |
| 87 duration -= delay; | 87 duration -= delay; |
| 88 easing = keyframes.at(1)->easing().toString(); | 88 easing = keyframes.at(1)->easing().toString(); |
| 89 } else { | 89 } else { |
| 90 easing = keyframes.at(0)->easing().toString(); | 90 easing = keyframes.at(0)->easing().toString(); |
| 91 } | 91 } |
| 92 } | 92 } |
| 93 | 93 |
| 94 RefPtr<TypeBuilder::Animation::AnimationNode> animationObject = TypeBuilder:
:Animation::AnimationNode::create() | 94 RefPtr<TypeBuilder::Animation::AnimationNode> animationObject = TypeBuilder:
:Animation::AnimationNode::create() |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 129 | 129 |
| 130 RefPtr<TypeBuilder::Animation::KeyframeStyle> keyframeObject = TypeBuilder::
Animation::KeyframeStyle::create() | 130 RefPtr<TypeBuilder::Animation::KeyframeStyle> keyframeObject = TypeBuilder::
Animation::KeyframeStyle::create() |
| 131 .setOffset(offset) | 131 .setOffset(offset) |
| 132 .setStyle(inspectorStyle->buildObjectForStyle()) | 132 .setStyle(inspectorStyle->buildObjectForStyle()) |
| 133 .setEasing(keyframe->easing().toString()); | 133 .setEasing(keyframe->easing().toString()); |
| 134 return keyframeObject.release(); | 134 return keyframeObject.release(); |
| 135 } | 135 } |
| 136 | 136 |
| 137 static PassRefPtr<TypeBuilder::Animation::KeyframesRule> buildObjectForStyleRule
Keyframes(const AnimationPlayer& player, const StyleRuleKeyframes* keyframesRule
) | 137 static PassRefPtr<TypeBuilder::Animation::KeyframesRule> buildObjectForStyleRule
Keyframes(const AnimationPlayer& player, const StyleRuleKeyframes* keyframesRule
) |
| 138 { | 138 { |
| 139 RefPtr<TypeBuilder::Array<TypeBuilder::Animation::KeyframeStyle> > keyframes
= TypeBuilder::Array<TypeBuilder::Animation::KeyframeStyle>::create(); | 139 RefPtr<TypeBuilder::Array<TypeBuilder::Animation::KeyframeStyle>> keyframes
= TypeBuilder::Array<TypeBuilder::Animation::KeyframeStyle>::create(); |
| 140 const WillBeHeapVector<RefPtrWillBeMember<StyleRuleKeyframe> >& styleKeyfram
es = keyframesRule->keyframes(); | 140 const WillBeHeapVector<RefPtrWillBeMember<StyleRuleKeyframe>>& styleKeyframe
s = keyframesRule->keyframes(); |
| 141 for (const auto& styleKeyframe : styleKeyframes) { | 141 for (const auto& styleKeyframe : styleKeyframes) { |
| 142 WillBeHeapVector<RefPtrWillBeMember<Keyframe> > normalizedKeyframes = Ke
yframeEffectModelBase::normalizedKeyframesForInspector(toKeyframeEffectModelBase
(toAnimation(player.source())->effect())->getFrames()); | 142 WillBeHeapVector<RefPtrWillBeMember<Keyframe>> normalizedKeyframes = Key
frameEffectModelBase::normalizedKeyframesForInspector(toKeyframeEffectModelBase(
toAnimation(player.source())->effect())->getFrames()); |
| 143 TimingFunction* easing = nullptr; | 143 TimingFunction* easing = nullptr; |
| 144 for (const auto& keyframe : normalizedKeyframes) { | 144 for (const auto& keyframe : normalizedKeyframes) { |
| 145 if (styleKeyframe->keys().contains(keyframe->offset())) | 145 if (styleKeyframe->keys().contains(keyframe->offset())) |
| 146 easing = &keyframe->easing(); | 146 easing = &keyframe->easing(); |
| 147 } | 147 } |
| 148 ASSERT(easing); | 148 ASSERT(easing); |
| 149 keyframes->addItem(buildObjectForStyleRuleKeyframe(styleKeyframe.get(),
*easing)); | 149 keyframes->addItem(buildObjectForStyleRuleKeyframe(styleKeyframe.get(),
*easing)); |
| 150 } | 150 } |
| 151 | 151 |
| 152 RefPtr<TypeBuilder::Animation::KeyframesRule> keyframesObject = TypeBuilder:
:Animation::KeyframesRule::create() | 152 RefPtr<TypeBuilder::Animation::KeyframesRule> keyframesObject = TypeBuilder:
:Animation::KeyframesRule::create() |
| 153 .setKeyframes(keyframes); | 153 .setKeyframes(keyframes); |
| 154 keyframesObject->setName(keyframesRule->name()); | 154 keyframesObject->setName(keyframesRule->name()); |
| 155 return keyframesObject.release(); | 155 return keyframesObject.release(); |
| 156 } | 156 } |
| 157 | 157 |
| 158 static PassRefPtr<TypeBuilder::Animation::KeyframesRule> buildObjectForAnimation
Keyframes(const Animation* animation) | 158 static PassRefPtr<TypeBuilder::Animation::KeyframesRule> buildObjectForAnimation
Keyframes(const Animation* animation) |
| 159 { | 159 { |
| 160 if (!animation->effect()->isKeyframeEffectModel()) | 160 if (!animation->effect()->isKeyframeEffectModel()) |
| 161 return nullptr; | 161 return nullptr; |
| 162 const KeyframeEffectModelBase* effect = toKeyframeEffectModelBase(animation-
>effect()); | 162 const KeyframeEffectModelBase* effect = toKeyframeEffectModelBase(animation-
>effect()); |
| 163 WillBeHeapVector<RefPtrWillBeMember<Keyframe> > normalizedKeyframes = Keyfra
meEffectModelBase::normalizedKeyframesForInspector(effect->getFrames()); | 163 WillBeHeapVector<RefPtrWillBeMember<Keyframe>> normalizedKeyframes = Keyfram
eEffectModelBase::normalizedKeyframesForInspector(effect->getFrames()); |
| 164 RefPtr<TypeBuilder::Array<TypeBuilder::Animation::KeyframeStyle> > keyframes
= TypeBuilder::Array<TypeBuilder::Animation::KeyframeStyle>::create(); | 164 RefPtr<TypeBuilder::Array<TypeBuilder::Animation::KeyframeStyle>> keyframes
= TypeBuilder::Array<TypeBuilder::Animation::KeyframeStyle>::create(); |
| 165 | 165 |
| 166 for (const auto& keyframe : normalizedKeyframes) { | 166 for (const auto& keyframe : normalizedKeyframes) { |
| 167 // Ignore CSS Transitions | 167 // Ignore CSS Transitions |
| 168 if (!keyframe.get()->isStringKeyframe()) | 168 if (!keyframe.get()->isStringKeyframe()) |
| 169 continue; | 169 continue; |
| 170 const StringKeyframe* stringKeyframe = toStringKeyframe(keyframe.get()); | 170 const StringKeyframe* stringKeyframe = toStringKeyframe(keyframe.get()); |
| 171 keyframes->addItem(buildObjectForStringKeyframe(stringKeyframe)); | 171 keyframes->addItem(buildObjectForStringKeyframe(stringKeyframe)); |
| 172 } | 172 } |
| 173 RefPtr<TypeBuilder::Animation::KeyframesRule> keyframesObject = TypeBuilder:
:Animation::KeyframesRule::create() | 173 RefPtr<TypeBuilder::Animation::KeyframesRule> keyframesObject = TypeBuilder:
:Animation::KeyframesRule::create() |
| 174 .setKeyframes(keyframes); | 174 .setKeyframes(keyframes); |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 208 .setPausedState(player.paused()) | 208 .setPausedState(player.paused()) |
| 209 .setPlayState(player.playState()) | 209 .setPlayState(player.playState()) |
| 210 .setPlaybackRate(player.playbackRate()) | 210 .setPlaybackRate(player.playbackRate()) |
| 211 .setStartTime(player.startTime()) | 211 .setStartTime(player.startTime()) |
| 212 .setCurrentTime(player.currentTime()) | 212 .setCurrentTime(player.currentTime()) |
| 213 .setSource(animationObject.release()) | 213 .setSource(animationObject.release()) |
| 214 .setType(animationType); | 214 .setType(animationType); |
| 215 return playerObject.release(); | 215 return playerObject.release(); |
| 216 } | 216 } |
| 217 | 217 |
| 218 PassRefPtr<TypeBuilder::Array<TypeBuilder::Animation::AnimationPlayer> > Inspect
orAnimationAgent::buildArrayForAnimationPlayers(Element& element, const WillBeHe
apVector<RefPtrWillBeMember<AnimationPlayer> > players) | 218 PassRefPtr<TypeBuilder::Array<TypeBuilder::Animation::AnimationPlayer>> Inspecto
rAnimationAgent::buildArrayForAnimationPlayers(Element& element, const WillBeHea
pVector<RefPtrWillBeMember<AnimationPlayer>> players) |
| 219 { | 219 { |
| 220 RefPtr<TypeBuilder::Array<TypeBuilder::Animation::AnimationPlayer> > animati
onPlayersArray = TypeBuilder::Array<TypeBuilder::Animation::AnimationPlayer>::cr
eate(); | 220 RefPtr<TypeBuilder::Array<TypeBuilder::Animation::AnimationPlayer>> animatio
nPlayersArray = TypeBuilder::Array<TypeBuilder::Animation::AnimationPlayer>::cre
ate(); |
| 221 for (const auto& it : players) { | 221 for (const auto& it : players) { |
| 222 AnimationPlayer& player = *(it.get()); | 222 AnimationPlayer& player = *(it.get()); |
| 223 Animation* animation = toAnimation(player.source()); | 223 Animation* animation = toAnimation(player.source()); |
| 224 if (!element.contains(animation->target())) | 224 if (!element.contains(animation->target())) |
| 225 continue; | 225 continue; |
| 226 m_idToAnimationPlayer.set(playerId(player), &player); | 226 m_idToAnimationPlayer.set(playerId(player), &player); |
| 227 animationPlayersArray->addItem(buildObjectForAnimationPlayer(player)); | 227 animationPlayersArray->addItem(buildObjectForAnimationPlayer(player)); |
| 228 } | 228 } |
| 229 return animationPlayersArray.release(); | 229 return animationPlayersArray.release(); |
| 230 } | 230 } |
| 231 | 231 |
| 232 void InspectorAnimationAgent::getAnimationPlayersForNode(ErrorString* errorStrin
g, int nodeId, bool includeSubtreeAnimations, RefPtr<TypeBuilder::Array<TypeBuil
der::Animation::AnimationPlayer> >& animationPlayersArray) | 232 void InspectorAnimationAgent::getAnimationPlayersForNode(ErrorString* errorStrin
g, int nodeId, bool includeSubtreeAnimations, RefPtr<TypeBuilder::Array<TypeBuil
der::Animation::AnimationPlayer>>& animationPlayersArray) |
| 233 { | 233 { |
| 234 Element* element = m_domAgent->assertElement(errorString, nodeId); | 234 Element* element = m_domAgent->assertElement(errorString, nodeId); |
| 235 if (!element) | 235 if (!element) |
| 236 return; | 236 return; |
| 237 m_idToAnimationPlayer.clear(); | 237 m_idToAnimationPlayer.clear(); |
| 238 WillBeHeapVector<RefPtrWillBeMember<AnimationPlayer> > players; | 238 WillBeHeapVector<RefPtrWillBeMember<AnimationPlayer>> players; |
| 239 if (!includeSubtreeAnimations) | 239 if (!includeSubtreeAnimations) |
| 240 players = ElementAnimation::getAnimationPlayers(*element); | 240 players = ElementAnimation::getAnimationPlayers(*element); |
| 241 else | 241 else |
| 242 players = element->ownerDocument()->timeline().getAnimationPlayers(); | 242 players = element->ownerDocument()->timeline().getAnimationPlayers(); |
| 243 animationPlayersArray = buildArrayForAnimationPlayers(*element, players); | 243 animationPlayersArray = buildArrayForAnimationPlayers(*element, players); |
| 244 } | 244 } |
| 245 | 245 |
| 246 void InspectorAnimationAgent::pauseAnimationPlayer(ErrorString* errorString, con
st String& id, RefPtr<TypeBuilder::Animation::AnimationPlayer>& animationPlayer) | 246 void InspectorAnimationAgent::pauseAnimationPlayer(ErrorString* errorString, con
st String& id, RefPtr<TypeBuilder::Animation::AnimationPlayer>& animationPlayer) |
| 247 { | 247 { |
| 248 AnimationPlayer* player = assertAnimationPlayer(errorString, id); | 248 AnimationPlayer* player = assertAnimationPlayer(errorString, id); |
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 323 { | 323 { |
| 324 #if ENABLE(OILPAN) | 324 #if ENABLE(OILPAN) |
| 325 visitor->trace(m_idToAnimationPlayer); | 325 visitor->trace(m_idToAnimationPlayer); |
| 326 visitor->trace(m_domAgent); | 326 visitor->trace(m_domAgent); |
| 327 visitor->trace(m_element); | 327 visitor->trace(m_element); |
| 328 #endif | 328 #endif |
| 329 InspectorBaseAgent::trace(visitor); | 329 InspectorBaseAgent::trace(visitor); |
| 330 } | 330 } |
| 331 | 331 |
| 332 } | 332 } |
| OLD | NEW |