| Index: Source/core/inspector/InspectorAnimationAgent.cpp
|
| diff --git a/Source/core/inspector/InspectorAnimationAgent.cpp b/Source/core/inspector/InspectorAnimationAgent.cpp
|
| index 4fcee8f04c0173285704de255beb964443906268..88b0eb24b3c18b53900edaa28455aa7ef0aaf74b 100644
|
| --- a/Source/core/inspector/InspectorAnimationAgent.cpp
|
| +++ b/Source/core/inspector/InspectorAnimationAgent.cpp
|
| @@ -9,7 +9,10 @@
|
| #include "core/animation/AnimationNode.h"
|
| #include "core/animation/AnimationPlayer.h"
|
| #include "core/animation/ElementAnimation.h"
|
| +#include "core/css/CSSKeyframeRule.h"
|
| +#include "core/css/CSSKeyframesRule.h"
|
| #include "core/inspector/InspectorDOMAgent.h"
|
| +#include "core/inspector/InspectorStyleSheet.h"
|
|
|
| namespace blink {
|
|
|
| @@ -35,6 +38,77 @@ void InspectorAnimationAgent::reset()
|
| m_idToAnimationPlayer.clear();
|
| }
|
|
|
| +static PassRefPtr<TypeBuilder::Animation::AnimationNode> buildObjectForAnimationNode(AnimationNode* animationNode)
|
| +{
|
| + RefPtr<TypeBuilder::Animation::AnimationNode> animationObject = TypeBuilder::Animation::AnimationNode::create()
|
| + .setStartDelay(animationNode->specifiedTiming().startDelay)
|
| + .setPlaybackRate(animationNode->specifiedTiming().playbackRate)
|
| + .setIterationStart(animationNode->specifiedTiming().iterationStart)
|
| + .setIterationCount(animationNode->specifiedTiming().iterationCount)
|
| + .setDuration(animationNode->duration())
|
| + .setDirection(animationNode->specifiedTiming().direction)
|
| + .setFillMode(animationNode->specifiedTiming().fillMode)
|
| + .setTimeFraction(animationNode->timeFraction())
|
| + .setName(animationNode->name());
|
| + return animationObject.release();
|
| +}
|
| +
|
| +static String playerId(AnimationPlayer& player)
|
| +{
|
| + return String::number(player.sequenceNumber());
|
| +}
|
| +
|
| +static PassRefPtr<TypeBuilder::Animation::AnimationPlayer> buildObjectForAnimationPlayer(AnimationPlayer& animationPlayer, PassRefPtr<TypeBuilder::Animation::KeyframesRule> keyframeRule = nullptr)
|
| +{
|
| + RefPtr<TypeBuilder::Animation::AnimationNode> animationObject = buildObjectForAnimationNode(animationPlayer.source());
|
| + if (keyframeRule)
|
| + animationObject->setKeyframesRule(keyframeRule);
|
| +
|
| + RefPtr<TypeBuilder::Animation::AnimationPlayer> playerObject = TypeBuilder::Animation::AnimationPlayer::create()
|
| + .setId(playerId(animationPlayer))
|
| + .setPausedState(animationPlayer.paused())
|
| + .setPlayState(animationPlayer.playState())
|
| + .setPlaybackRate(animationPlayer.playbackRate())
|
| + .setStartTime(animationPlayer.startTime())
|
| + .setCurrentTime(animationPlayer.currentTime())
|
| + .setSource(animationObject.release());
|
| + return playerObject.release();
|
| +}
|
| +
|
| +static PassRefPtr<TypeBuilder::Animation::KeyframeStyle> buildObjectForStyleKeyframe(StyleKeyframe* keyframe)
|
| +{
|
| + RefPtrWillBeRawPtr<InspectorStyle> inspectorStyle = InspectorStyle::create(InspectorCSSId(), keyframe->mutableProperties().ensureCSSStyleDeclaration(), 0);
|
| + RefPtr<TypeBuilder::Animation::KeyframeStyle> keyframeObject = TypeBuilder::Animation::KeyframeStyle::create()
|
| + .setOffset(keyframe->keyText())
|
| + .setStyle(inspectorStyle->buildObjectForStyle());
|
| + return keyframeObject.release();
|
| +}
|
| +
|
| +static PassRefPtr<TypeBuilder::Animation::KeyframesRule> buildObjectForStyleRuleKeyframes(const StyleRuleKeyframes* keyframesRule)
|
| +{
|
| + RefPtr<TypeBuilder::Array<TypeBuilder::Animation::KeyframeStyle> > keyframes = TypeBuilder::Array<TypeBuilder::Animation::KeyframeStyle>::create();
|
| + const WillBeHeapVector<RefPtrWillBeMember<StyleKeyframe> >& styleKeyframes = keyframesRule->keyframes();
|
| + for (const auto& styleKeyframe : styleKeyframes)
|
| + keyframes->addItem(buildObjectForStyleKeyframe(styleKeyframe.get()));
|
| +
|
| + RefPtr<TypeBuilder::Animation::KeyframesRule> keyframesObject = TypeBuilder::Animation::KeyframesRule::create()
|
| + .setKeyframes(keyframes);
|
| + keyframesObject->setName(keyframesRule->name());
|
| + return keyframesObject.release();
|
| +}
|
| +
|
| +static PassRefPtr<TypeBuilder::Animation::KeyframesRule> buildObjectForKeyframesRule(const Element& element, const AnimationPlayer& player)
|
| +{
|
| + StyleResolver& styleResolver = element.ownerDocument()->ensureStyleResolver();
|
| + // FIXME: Add support for web anim
|
| + CSSAnimations& cssAnimations = element.activeAnimations()->cssAnimations();
|
| + const AtomicString animationName = cssAnimations.getAnimationNameForInspector(player);
|
| + ASSERT(animationName);
|
| + const StyleRuleKeyframes* keyframes = cssAnimations.matchScopedKeyframesRule(&styleResolver, &element, animationName.impl());
|
| +
|
| + return buildObjectForStyleRuleKeyframes(keyframes);
|
| +}
|
| +
|
| void InspectorAnimationAgent::getAnimationPlayersForNode(ErrorString* errorString, int nodeId, RefPtr<TypeBuilder::Array<TypeBuilder::Animation::AnimationPlayer> >& animationPlayersArray)
|
| {
|
| animationPlayersArray = TypeBuilder::Array<TypeBuilder::Animation::AnimationPlayer>::create();
|
| @@ -46,7 +120,14 @@ void InspectorAnimationAgent::getAnimationPlayersForNode(ErrorString* errorStrin
|
| for (WillBeHeapVector<RefPtrWillBeMember<AnimationPlayer> >::iterator it = players.begin(); it != players.end(); ++it) {
|
| AnimationPlayer& player = *(it->get());
|
| m_idToAnimationPlayer.set(playerId(player), &player);
|
| - RefPtr<TypeBuilder::Animation::AnimationPlayer> animationPlayerObject = buildObjectForAnimationPlayer(player);
|
| + RefPtr<TypeBuilder::Animation::AnimationPlayer> animationPlayerObject;
|
| + // FIXME: Add support for web animations
|
| + if (!element->activeAnimations()->cssAnimations().getAnimationNameForInspector(player).isNull()) {
|
| + RefPtr<TypeBuilder::Animation::KeyframesRule> keyframeRule = buildObjectForKeyframesRule(*element, player);
|
| + animationPlayerObject = buildObjectForAnimationPlayer(player, keyframeRule.release());
|
| + } else {
|
| + animationPlayerObject = buildObjectForAnimationPlayer(player);
|
| + }
|
| animationPlayersArray->addItem(animationPlayerObject);
|
| }
|
| }
|
| @@ -97,39 +178,6 @@ AnimationPlayer* InspectorAnimationAgent::assertAnimationPlayer(ErrorString* err
|
| return player;
|
| }
|
|
|
| -String InspectorAnimationAgent::playerId(AnimationPlayer& player)
|
| -{
|
| - return String::number(player.sequenceNumber());
|
| -}
|
| -
|
| -PassRefPtr<TypeBuilder::Animation::AnimationPlayer> InspectorAnimationAgent::buildObjectForAnimationPlayer(AnimationPlayer& animationPlayer)
|
| -{
|
| - RefPtr<TypeBuilder::Animation::AnimationPlayer> playerObject = TypeBuilder::Animation::AnimationPlayer::create()
|
| - .setId(playerId(animationPlayer))
|
| - .setPausedState(animationPlayer.paused())
|
| - .setPlayState(animationPlayer.playState())
|
| - .setPlaybackRate(animationPlayer.playbackRate())
|
| - .setStartTime(animationPlayer.startTime())
|
| - .setCurrentTime(animationPlayer.currentTime())
|
| - .setSource(buildObjectForAnimationNode(*(animationPlayer.source())));
|
| - return playerObject.release();
|
| -}
|
| -
|
| -PassRefPtr<TypeBuilder::Animation::AnimationNode> InspectorAnimationAgent::buildObjectForAnimationNode(AnimationNode& animationNode)
|
| -{
|
| - RefPtr<TypeBuilder::Animation::AnimationNode> animationObject = TypeBuilder::Animation::AnimationNode::create()
|
| - .setStartDelay(animationNode.specifiedTiming().startDelay)
|
| - .setPlaybackRate(animationNode.specifiedTiming().playbackRate)
|
| - .setIterationStart(animationNode.specifiedTiming().iterationStart)
|
| - .setIterationCount(animationNode.specifiedTiming().iterationCount)
|
| - .setDuration(animationNode.duration())
|
| - .setDirection(animationNode.specifiedTiming().direction)
|
| - .setFillMode(animationNode.specifiedTiming().fillMode)
|
| - .setTimeFraction(animationNode.timeFraction())
|
| - .setName(animationNode.name());
|
| - return animationObject.release();
|
| -}
|
| -
|
| void InspectorAnimationAgent::trace(Visitor* visitor)
|
| {
|
| #if ENABLE(OILPAN)
|
|
|