| Index: third_party/WebKit/Source/core/inspector/InspectorCSSAgent.cpp
|
| diff --git a/third_party/WebKit/Source/core/inspector/InspectorCSSAgent.cpp b/third_party/WebKit/Source/core/inspector/InspectorCSSAgent.cpp
|
| index ccabca73f8025629b7aead76fc05749f2ed7e002..e59106162c90a26d14ebf64b98c0087d2d4b49fe 100644
|
| --- a/third_party/WebKit/Source/core/inspector/InspectorCSSAgent.cpp
|
| +++ b/third_party/WebKit/Source/core/inspector/InspectorCSSAgent.cpp
|
| @@ -33,6 +33,7 @@
|
| #include "core/css/CSSComputedStyleDeclaration.h"
|
| #include "core/css/CSSDefaultStyleSheets.h"
|
| #include "core/css/CSSImportRule.h"
|
| +#include "core/css/CSSKeyframeRule.h"
|
| #include "core/css/CSSMediaRule.h"
|
| #include "core/css/CSSRule.h"
|
| #include "core/css/CSSRuleList.h"
|
| @@ -788,6 +789,33 @@ void InspectorCSSAgent::getMatchedStylesForNode(ErrorString* errorString, int no
|
| inheritedEntries = entries.release();
|
| }
|
|
|
| +void InspectorCSSAgent::getCSSAnimationsForNode(ErrorString* errorString, int nodeId, RefPtr<TypeBuilder::Array<TypeBuilder::CSS::CSSKeyframesRule>>& cssKeyframesRules)
|
| +{
|
| + Element* element = elementForId(errorString, nodeId);
|
| + if (!element) {
|
| + *errorString = "Node not found";
|
| + return;
|
| + }
|
| +
|
| + PseudoId elementPseudoId = element->pseudoId();
|
| + if (elementPseudoId) {
|
| + element = element->parentOrShadowHostElement();
|
| + if (!element) {
|
| + *errorString = "Pseudo element has no parent";
|
| + return;
|
| + }
|
| + }
|
| +
|
| + Document* ownerDocument = element->ownerDocument();
|
| + // A non-active document has no styles.
|
| + if (!ownerDocument->isActive())
|
| + return;
|
| +
|
| + StyleResolver& styleResolver = ownerDocument->ensureStyleResolver();
|
| + RefPtrWillBeRawPtr<CSSRuleList> keyframesRules = styleResolver.keyframesRulesForElement(element);
|
| + cssKeyframesRules = buildArrayForKeyframesRules(keyframesRules.get());
|
| +}
|
| +
|
| void InspectorCSSAgent::getInlineStylesForNode(ErrorString* errorString, int nodeId, RefPtr<TypeBuilder::CSS::CSSStyle>& inlineStyle, RefPtr<TypeBuilder::CSS::CSSStyle>& attributesStyle)
|
| {
|
| Element* element = elementForId(errorString, nodeId);
|
| @@ -1485,6 +1513,36 @@ PassRefPtr<TypeBuilder::Array<TypeBuilder::CSS::RuleMatch> > InspectorCSSAgent::
|
| return result;
|
| }
|
|
|
| +PassRefPtr<TypeBuilder::Array<TypeBuilder::CSS::CSSKeyframesRule>> InspectorCSSAgent::buildArrayForKeyframesRules(CSSRuleList* ruleList)
|
| +{
|
| + RefPtr<TypeBuilder::Array<TypeBuilder::CSS::CSSKeyframesRule>> result = TypeBuilder::Array<TypeBuilder::CSS::CSSKeyframesRule>::create();
|
| + if (!ruleList)
|
| + return result.release();
|
| +
|
| + // TODO(samli): Filter for unique animations.
|
| + for (unsigned i = 0; i < ruleList->length(); ++i) {
|
| + CSSKeyframesRule* rule = toCSSKeyframesRule(ruleList->item(i));
|
| + RefPtr<TypeBuilder::Array<TypeBuilder::CSS::CSSKeyframeRule>> keyframes = TypeBuilder::Array<TypeBuilder::CSS::CSSKeyframeRule>::create();
|
| + for (unsigned j = 0; j < rule->length(); ++j)
|
| + keyframes->addItem(buildObjectForKeyframeRule(rule->item(j)));
|
| + RefPtr<TypeBuilder::CSS::CSSKeyframesRule> keyframesRule = TypeBuilder::CSS::CSSKeyframesRule::create()
|
| + .setAnimationName(rule->name())
|
| + .setKeyframes(keyframes);
|
| + result->addItem(keyframesRule);
|
| + }
|
| +
|
| + return result;
|
| +}
|
| +
|
| +PassRefPtr<TypeBuilder::CSS::CSSKeyframeRule> InspectorCSSAgent::buildObjectForKeyframeRule(CSSKeyframeRule* keyframeRule)
|
| +{
|
| + RefPtrWillBeRawPtr<InspectorStyle> inspectorStyle = InspectorStyle::create(keyframeRule->style(), nullptr, nullptr);
|
| + RefPtr<TypeBuilder::CSS::CSSKeyframeRule> object = TypeBuilder::CSS::CSSKeyframeRule::create()
|
| + .setKeyText(keyframeRule->keyText())
|
| + .setStyle(inspectorStyle->buildObjectForStyle());
|
| + return object;
|
| +}
|
| +
|
| PassRefPtr<TypeBuilder::CSS::CSSStyle> InspectorCSSAgent::buildObjectForAttributesStyle(Element* element)
|
| {
|
| if (!element->isStyledElement())
|
|
|