| Index: Source/core/inspector/InspectorCSSAgent.cpp
|
| diff --git a/Source/core/inspector/InspectorCSSAgent.cpp b/Source/core/inspector/InspectorCSSAgent.cpp
|
| index 2d18ad58ca26b5b471aa29937c595664a74622c3..3c769c3333c02d2f52bdfae2ba2d9b35b807f2dc 100644
|
| --- a/Source/core/inspector/InspectorCSSAgent.cpp
|
| +++ b/Source/core/inspector/InspectorCSSAgent.cpp
|
| @@ -30,6 +30,12 @@
|
| #include "core/CSSPropertyNames.h"
|
| #include "core/InspectorTypeBuilder.h"
|
| #include "core/StylePropertyShorthand.h"
|
| +#include "core/animation/Animation.h"
|
| +#include "core/animation/AnimationEffect.h"
|
| +#include "core/animation/AnimationNode.h"
|
| +#include "core/animation/AnimationPlayer.h"
|
| +#include "core/animation/ElementAnimation.h"
|
| +#include "core/animation/KeyframeEffectModel.h"
|
| #include "core/css/CSSComputedStyleDeclaration.h"
|
| #include "core/css/CSSDefaultStyleSheets.h"
|
| #include "core/css/CSSImportRule.h"
|
| @@ -66,6 +72,7 @@
|
| #include "core/rendering/RenderObjectInlines.h"
|
| #include "core/rendering/RenderText.h"
|
| #include "core/rendering/RenderTextFragment.h"
|
| +#include "platform/Decimal.h"
|
| #include "platform/fonts/Font.h"
|
| #include "platform/fonts/GlyphBuffer.h"
|
| #include "platform/fonts/SimpleShaper.h"
|
| @@ -832,6 +839,54 @@ void InspectorCSSAgent::setStyleSheetText(ErrorString* errorString, const String
|
| *errorString = InspectorDOMAgent::toErrorString(exceptionState);
|
| }
|
|
|
| +void InspectorCSSAgent::getKeyframeStylesForNode(ErrorString* errorString, int sequenceNumber, RefPtr<TypeBuilder::Array<TypeBuilder::CSS::CSSRule> >& keyframeStyles)
|
| +{
|
| + keyframeStyles = TypeBuilder::Array<TypeBuilder::CSS::CSSRule>::create();
|
| + AnimationPlayer& player = *(m_domAgent->m_idToAnimationPlayer.get(sequenceNumber));
|
| + ASSERT(player.source());
|
| + // FIXME: Needs to consider AnimationGroup once added.
|
| + ASSERT(player.source()->isAnimation());
|
| + const Animation& animation = *toAnimation(player.source());
|
| + // FIXME: Needs to consider custom effects once added.
|
| + ASSERT(animation.effect()->isKeyframeEffectModel());
|
| + const KeyframeEffectModelBase& effect = *toKeyframeEffectModelBase(animation.effect());
|
| + WillBeHeapVector<RefPtrWillBeMember<Keyframe> > keyframes = KeyframeEffectModelBase::normalizedKeyframes(effect.getFrames());
|
| +
|
| + for (WillBeHeapVector<RefPtrWillBeMember<Keyframe> >::const_iterator i = keyframes.begin(); i != keyframes.end(); ++i) {
|
| + if (i->get()->isStringKeyframe()) {
|
| + // Convert keyframe into CSSStyleRule
|
| + const StringKeyframe& stringKeyframe = *toStringKeyframe(i->get());
|
| + RefPtr<StyleRule> styleRule = StyleRule::create();
|
| + styleRule->setProperties(stringKeyframe.propertySet());
|
| + if (!m_inspectorUserAgentStyleSheet)
|
| + m_inspectorUserAgentStyleSheet = CSSStyleSheet::create(CSSDefaultStyleSheets::instance().defaultStyleSheet());
|
| + RefPtr<CSSStyleRule> cssStyleRule = CSSStyleRule::create(styleRule.get(), m_inspectorUserAgentStyleSheet.get());
|
| +
|
| + // Convert offset
|
| + Decimal decimal = Decimal::fromDouble(stringKeyframe.offset() * 100);
|
| + String offset = decimal.toString();
|
| + offset.append("%");
|
| +
|
| + // Cannot set selector directly since isn't a valid selector and will be discarded
|
| + // Construct CSSRule from scratch
|
| + RefPtr<TypeBuilder::Array<TypeBuilder::CSS::Selector> > selectors = TypeBuilder::Array<TypeBuilder::CSS::Selector>::create();
|
| + selectors->addItem(TypeBuilder::CSS::Selector::create().setValue(offset).release());
|
| + RefPtr<TypeBuilder::CSS::SelectorList> selectorList = TypeBuilder::CSS::SelectorList::create()
|
| + .setSelectors(selectors)
|
| + .setText("")
|
| + .release();
|
| +
|
| + RefPtr<TypeBuilder::CSS::CSSRule> cssRule = TypeBuilder::CSS::CSSRule::create()
|
| + .setSelectorList(selectorList)
|
| + .setOrigin(TypeBuilder::CSS::StyleSheetOrigin::Inspector)
|
| + .setStyle(bindStyleSheet(cssStyleRule->parentStyleSheet())->buildObjectForStyle(cssStyleRule->style()))
|
| + .release();
|
| +
|
| + keyframeStyles->addItem(cssRule);
|
| + }
|
| + }
|
| +}
|
| +
|
| static bool extractRangeComponent(ErrorString* errorString, const RefPtr<JSONObject>& range, const String& component, unsigned& result)
|
| {
|
| int parsedValue = 0;
|
|
|