Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(421)

Unified Diff: Source/core/css/parser/BisonCSSParser-in.cpp

Issue 149363002: Web Animations API: Implement step-middle and steps(x, middle) timing functions. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Fix TimingFunctionTestHelperTest Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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;
+ 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(")) {

Powered by Google App Engine
This is Rietveld 408576698