Chromium Code Reviews| 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 ae0346ac52cb820480b22e85061f3bb905b9bd67..ec442d14f4a7fb064bdb5c682c8c1513a67c63d0 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" |
| @@ -787,6 +788,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); |
| @@ -1482,6 +1510,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++) |
|
lushnikov
2015/10/06 23:01:34
++j
samli
2015/10/08 17:37:31
Done.
|
| + keyframes->addItem(buildObjectForKeyframeRule(rule->item(j))); |
| + RefPtr<TypeBuilder::CSS::CSSKeyframesRule> keyframesRule = TypeBuilder::CSS::CSSKeyframesRule::create() |
| + .setName(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()) |