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

Unified Diff: Source/core/css/resolver/CSSToStyleMap.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: Merged patch into fresh branch (to avoid scary rebase) 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
« no previous file with comments | « Source/core/css/parser/CSSPropertyParser.cpp ('k') | Source/platform/animation/TimingFunction.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/css/resolver/CSSToStyleMap.cpp
diff --git a/Source/core/css/resolver/CSSToStyleMap.cpp b/Source/core/css/resolver/CSSToStyleMap.cpp
index 04622787915d680a92a983f62357410b1f12ba7a..28e4e8e636dff8fb4236cd9f8026fe3365b7b17b 100644
--- a/Source/core/css/resolver/CSSToStyleMap.cpp
+++ b/Source/core/css/resolver/CSSToStyleMap.cpp
@@ -479,6 +479,9 @@ PassRefPtr<TimingFunction> CSSToStyleMap::animationTimingFunction(CSSValue* valu
case CSSValueStepStart:
return StepsTimingFunction::preset(StepsTimingFunction::Start);
break;
+ case CSSValueStepMiddle:
+ return StepsTimingFunction::preset(StepsTimingFunction::Middle);
+ break;
case CSSValueStepEnd:
return StepsTimingFunction::preset(StepsTimingFunction::End);
break;
@@ -493,7 +496,7 @@ PassRefPtr<TimingFunction> CSSToStyleMap::animationTimingFunction(CSSValue* valu
return CubicBezierTimingFunction::create(cubicTimingFunction->x1(), cubicTimingFunction->y1(), cubicTimingFunction->x2(), cubicTimingFunction->y2());
} else if (value->isStepsTimingFunctionValue()) {
CSSStepsTimingFunctionValue* stepsTimingFunction = toCSSStepsTimingFunctionValue(value);
- return StepsTimingFunction::create(stepsTimingFunction->numberOfSteps(), stepsTimingFunction->stepAtStart());
+ return StepsTimingFunction::create(stepsTimingFunction->numberOfSteps(), stepsTimingFunction->stepAtPosition());
}
return nullptr;
@@ -502,8 +505,15 @@ PassRefPtr<TimingFunction> CSSToStyleMap::animationTimingFunction(CSSValue* valu
void CSSToStyleMap::mapAnimationTimingFunction(CSSAnimationData* animation, CSSValue* value) const
{
RefPtr<TimingFunction> timingFunction = animationTimingFunction(value, true);
- if (timingFunction)
- animation->setTimingFunction(timingFunction);
+ if (timingFunction) {
+ // Step middle timing functions are supported up to this point for use in the Web Animations API,
+ // but should not be supported for CSS Animations and Transitions.
+ bool isStepMiddleFunction = (timingFunction->type() == TimingFunction::StepsFunction) && (toStepsTimingFunction(*timingFunction).stepAtPosition() == StepsTimingFunction::StepAtMiddle);
+ if (isStepMiddleFunction)
+ animation->setTimingFunction(CubicBezierTimingFunction::preset(CubicBezierTimingFunction::Ease));
+ else
+ animation->setTimingFunction(timingFunction);
+ }
}
void CSSToStyleMap::mapNinePieceImage(RenderStyle* mutableStyle, CSSPropertyID property, CSSValue* value, NinePieceImage& image)
« no previous file with comments | « Source/core/css/parser/CSSPropertyParser.cpp ('k') | Source/platform/animation/TimingFunction.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698