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 e49567e8c600c24c9ee25e5cadec956b711fd187..2c08955b6cce97d7d5f455be1cefdd2d108aa1e4 100644 |
--- a/third_party/WebKit/Source/core/inspector/InspectorCSSAgent.cpp |
+++ b/third_party/WebKit/Source/core/inspector/InspectorCSSAgent.cpp |
@@ -371,7 +371,8 @@ public: |
enum Type { |
SetRuleSelector, |
SetStyleText, |
- SetMediaRuleText |
+ SetMediaRuleText, |
+ SetKeyframeKey |
}; |
ModifyRuleAction(Type type, InspectorStyleSheet* styleSheet, const SourceRange& range, const String& text) |
@@ -398,6 +399,8 @@ public: |
return m_styleSheet->setStyleText(m_newRange, m_oldText, nullptr, nullptr, exceptionState); |
case SetMediaRuleText: |
return m_styleSheet->setMediaRuleText(m_newRange, m_oldText, nullptr, nullptr, exceptionState); |
+ case SetKeyframeKey: |
+ return m_styleSheet->setKeyframeKey(m_newRange, m_oldText, nullptr, nullptr, exceptionState); |
default: |
ASSERT_NOT_REACHED(); |
} |
@@ -416,6 +419,9 @@ public: |
case SetMediaRuleText: |
m_cssRule = m_styleSheet->setMediaRuleText(m_oldRange, m_newText, &m_newRange, &m_oldText, exceptionState); |
break; |
+ case SetKeyframeKey: |
+ m_cssRule = m_styleSheet->setKeyframeKey(m_oldRange, m_newText, &m_newRange, &m_oldText, exceptionState); |
+ break; |
default: |
ASSERT_NOT_REACHED(); |
} |
@@ -986,8 +992,10 @@ void InspectorCSSAgent::getCSSAnimationsForNode(ErrorString* errorString, int no |
continue; |
RefPtr<TypeBuilder::Array<TypeBuilder::CSS::CSSKeyframeRule>> keyframes = TypeBuilder::Array<TypeBuilder::CSS::CSSKeyframeRule>::create(); |
- for (unsigned j = 0; j < cssKeyframesRule->length(); ++j) |
- keyframes->addItem(buildObjectForKeyframeRule(cssKeyframesRule->item(j))); |
+ for (unsigned j = 0; j < cssKeyframesRule->length(); ++j) { |
+ InspectorStyleSheet* inspectorStyleSheet = bindStyleSheet(cssKeyframesRule->parentStyleSheet()); |
+ keyframes->addItem(inspectorStyleSheet->buildObjectForKeyframeRule(cssKeyframesRule->item(j))); |
+ } |
InspectorStyleSheet* inspectorStyleSheet = bindStyleSheet(cssKeyframesRule->parentStyleSheet()); |
RefPtrWillBeRawPtr<CSSRuleSourceData> sourceData = inspectorStyleSheet->sourceDataForRule(cssKeyframesRule); |
@@ -1183,6 +1191,36 @@ void InspectorCSSAgent::setRuleSelector(ErrorString* errorString, const String& |
*errorString = InspectorDOMAgent::toErrorString(exceptionState); |
} |
+void InspectorCSSAgent::setKeyframeKey(ErrorString* errorString, const String& styleSheetId, const RefPtr<JSONObject>& range, const String& keyText, RefPtr<TypeBuilder::CSS::Value>& result) |
+{ |
+ FrontendOperationScope scope; |
+ InspectorStyleSheet* inspectorStyleSheet = assertInspectorStyleSheetForId(errorString, styleSheetId); |
+ if (!inspectorStyleSheet) { |
+ *errorString = "Stylesheet not found"; |
+ return; |
+ } |
+ SourceRange keyRange; |
+ if (!jsonRangeToSourceRange(errorString, inspectorStyleSheet, range, &keyRange)) |
+ return; |
+ |
+ TrackExceptionState exceptionState; |
+ RefPtrWillBeRawPtr<ModifyRuleAction> action = adoptRefWillBeNoop(new ModifyRuleAction(ModifyRuleAction::SetKeyframeKey, inspectorStyleSheet, keyRange, keyText)); |
+ bool success = m_domAgent->history()->perform(action, exceptionState); |
+ if (success) { |
+ RefPtrWillBeRawPtr<CSSKeyframeRule> rule = toCSSKeyframeRule(action->takeRule().get()); |
+ InspectorStyleSheet* inspectorStyleSheet = bindStyleSheet(rule->parentStyleSheet()); |
+ if (!inspectorStyleSheet) { |
+ *errorString = "Failed to get inspector style sheet for rule."; |
+ return; |
+ } |
+ |
+ RefPtrWillBeRawPtr<CSSRuleSourceData> sourceData = inspectorStyleSheet->sourceDataForRule(rule); |
+ result = TypeBuilder::CSS::Value::create().setText(rule->keyText()); |
+ result->setRange(inspectorStyleSheet->buildSourceRangeObject(sourceData->ruleHeaderRange)); |
+ } |
+ *errorString = InspectorDOMAgent::toErrorString(exceptionState); |
+} |
+ |
void InspectorCSSAgent::setStyleText(ErrorString* errorString, const String& styleSheetId, const RefPtr<JSONObject>& range, const String& text, RefPtr<TypeBuilder::CSS::CSSStyle>& result) |
{ |
FrontendOperationScope scope; |
@@ -1720,19 +1758,6 @@ PassRefPtr<TypeBuilder::Array<TypeBuilder::CSS::RuleMatch> > InspectorCSSAgent:: |
return result; |
} |
-PassRefPtr<TypeBuilder::CSS::CSSKeyframeRule> InspectorCSSAgent::buildObjectForKeyframeRule(CSSKeyframeRule* keyframeRule) |
-{ |
- InspectorStyleSheet* inspectorStyleSheet = bindStyleSheet(keyframeRule->parentStyleSheet()); |
- RefPtrWillBeRawPtr<CSSRuleSourceData> sourceData = inspectorStyleSheet->sourceDataForRule(keyframeRule); |
- RefPtr<TypeBuilder::CSS::Value> keyText = TypeBuilder::CSS::Value::create().setText(keyframeRule->keyText()); |
- keyText->setRange(inspectorStyleSheet->buildSourceRangeObject(sourceData->ruleHeaderRange)); |
- RefPtr<TypeBuilder::CSS::CSSKeyframeRule> object = TypeBuilder::CSS::CSSKeyframeRule::create() |
- // TODO(samli): keyText() normalises 'from' and 'to' keyword values. |
- .setKeyText(keyText) |
- .setStyle(inspectorStyleSheet->buildObjectForStyle(keyframeRule->style())); |
- return object; |
-} |
- |
PassRefPtr<TypeBuilder::CSS::CSSStyle> InspectorCSSAgent::buildObjectForAttributesStyle(Element* element) |
{ |
if (!element->isStyledElement()) |