| 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())
|
|
|