Index: Source/core/css/parser/BisonCSSParser-in.cpp |
diff --git a/Source/core/css/parser/BisonCSSParser-in.cpp b/Source/core/css/parser/BisonCSSParser-in.cpp |
index 9e1eff2d08631ace0f83833351b22cdc5e2b8e86..bc8ca5783eaa73c3d4bdb51cbf73bfa65a5d3b0e 100644 |
--- a/Source/core/css/parser/BisonCSSParser-in.cpp |
+++ b/Source/core/css/parser/BisonCSSParser-in.cpp |
@@ -4324,7 +4324,8 @@ PassRefPtr<CSSValue> BisonCSSParser::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. |
@@ -4340,7 +4341,7 @@ PassRefPtr<CSSValue> BisonCSSParser::parseAnimationTimingFunction() |
// There are two values. |
int numSteps; |
- bool stepAtStart = false; |
+ StepsTimingFunction::StepAtPosition stepAtPosition = StepsTimingFunction::StepAtEnd; |
CSSParserValue* v = args->current(); |
if (!validUnit(v, FInteger)) |
@@ -4355,12 +4356,25 @@ PassRefPtr<CSSValue> BisonCSSParser::parseAnimationTimingFunction() |
if (!isComma(v)) |
return 0; |
v = args->next(); |
- if (v->id != CSSValueStart && v->id != CSSValueEnd) |
+ switch (v->id) { |
+ case CSSValueMiddle: |
+ if (RuntimeEnabledFeatures::webAnimationsAPIEnabled()) |
+ stepAtPosition = StepsTimingFunction::StepAtMiddle; |
+ else |
+ return 0; |
alancutter (OOO until 2018)
2014/02/19 03:17:45
Avoiding else branches by returning earlier is pre
rjwright
2014/02/24 11:17:46
Done.
|
+ break; |
+ case CSSValueStart: |
+ stepAtPosition = StepsTimingFunction::StepAtStart; |
+ break; |
+ case CSSValueEnd: |
+ stepAtPosition = StepsTimingFunction::StepAtEnd; |
+ break; |
+ default: |
return 0; |
- stepAtStart = v->id == CSSValueStart; |
+ } |
} |
- return CSSStepsTimingFunctionValue::create(numSteps, stepAtStart); |
+ return CSSStepsTimingFunctionValue::create(numSteps, stepAtPosition); |
} |
if (equalIgnoringCase(value->function->name, "cubic-bezier(")) { |