Index: Source/core/css/parser/CSSPropertyParser.cpp |
diff --git a/Source/core/css/parser/CSSPropertyParser.cpp b/Source/core/css/parser/CSSPropertyParser.cpp |
index 09ce7ac4fa2bb41de1c6190f3f4523392c13f3b7..6bb18f41dcb44e202693c6f09b9c2e74f8e81777 100644 |
--- a/Source/core/css/parser/CSSPropertyParser.cpp |
+++ b/Source/core/css/parser/CSSPropertyParser.cpp |
@@ -3127,7 +3127,8 @@ PassRefPtrWillBeRawPtr<CSSValue> CSSPropertyParser::parseAnimationTimingFunction |
{ |
CSSParserValue* value = m_valueList->current(); |
if (value->id == CSSValueEase || value->id == CSSValueLinear || value->id == CSSValueEaseIn || value->id == CSSValueEaseOut |
- || value->id == CSSValueEaseInOut || value->id == CSSValueStepStart || value->id == CSSValueStepEnd) |
+ || value->id == CSSValueEaseInOut || value->id == CSSValueStepStart || value->id == CSSValueStepEnd |
+ || (value->id == CSSValueStepMiddle && RuntimeEnabledFeatures::webAnimationsAPIEnabled())) |
return cssValuePool().createIdentifierValue(value->id); |
// We must be a function. |
@@ -3143,7 +3144,7 @@ PassRefPtrWillBeRawPtr<CSSValue> CSSPropertyParser::parseAnimationTimingFunction |
// There are two values. |
int numSteps; |
- bool stepAtStart = false; |
+ StepsTimingFunction::StepAtPosition stepAtPosition = StepsTimingFunction::StepAtEnd; |
CSSParserValue* v = args->current(); |
if (!validUnit(v, FInteger)) |
@@ -3158,12 +3159,24 @@ PassRefPtrWillBeRawPtr<CSSValue> CSSPropertyParser::parseAnimationTimingFunction |
if (!isComma(v)) |
return nullptr; |
v = args->next(); |
- if (v->id != CSSValueStart && v->id != CSSValueEnd) |
+ switch (v->id) { |
+ case CSSValueMiddle: |
+ if (!RuntimeEnabledFeatures::webAnimationsAPIEnabled()) |
+ return nullptr; |
+ stepAtPosition = StepsTimingFunction::StepAtMiddle; |
+ break; |
+ case CSSValueStart: |
+ stepAtPosition = StepsTimingFunction::StepAtStart; |
+ break; |
+ case CSSValueEnd: |
+ stepAtPosition = StepsTimingFunction::StepAtEnd; |
+ break; |
+ default: |
return nullptr; |
- stepAtStart = v->id == CSSValueStart; |
+ } |
} |
- return CSSStepsTimingFunctionValue::create(numSteps, stepAtStart); |
+ return CSSStepsTimingFunctionValue::create(numSteps, stepAtPosition); |
} |
if (equalIgnoringCase(value->function->name, "cubic-bezier(")) { |