Bug 1248340 - Part 6: Implement serialization for Frames.
We don't need to implement nsCSSValue::AppendToString for Frames because
the current implementation of eCSSUnit_Function is enough.
MozReview-Commit-ID: D0KU8TgiFLB
--- a/dom/animation/ComputedTimingFunction.cpp
+++ b/dom/animation/ComputedTimingFunction.cpp
@@ -148,16 +148,19 @@ ComputedTimingFunction::AppendToString(n
mTimingFunction.X2(),
mTimingFunction.Y2(),
aResult);
break;
case nsTimingFunction::Type::StepStart:
case nsTimingFunction::Type::StepEnd:
nsStyleUtil::AppendStepsTimingFunction(mType, mSteps, aResult);
break;
+ case nsTimingFunction::Type::Frames:
+ nsStyleUtil::AppendFramesTimingFunction(mFrames, aResult);
+ break;
default:
nsStyleUtil::AppendCubicBezierKeywordTimingFunction(mType, aResult);
break;
}
}
/* static */ int32_t
ComputedTimingFunction::Compare(const Maybe<ComputedTimingFunction>& aLhs,
--- a/layout/style/nsComputedDOMStyle.cpp
+++ b/layout/style/nsComputedDOMStyle.cpp
@@ -6556,16 +6556,19 @@ nsComputedDOMStyle::AppendTimingFunction
tmp);
break;
case nsTimingFunction::Type::StepStart:
case nsTimingFunction::Type::StepEnd:
nsStyleUtil::AppendStepsTimingFunction(aTimingFunction.mType,
aTimingFunction.mSteps,
tmp);
break;
+ case nsTimingFunction::Type::Frames:
+ nsStyleUtil::AppendFramesTimingFunction(aTimingFunction.mFrames, tmp);
+ break;
default:
nsStyleUtil::AppendCubicBezierKeywordTimingFunction(aTimingFunction.mType,
tmp);
break;
}
timingFunction->SetString(tmp);
aValueList->AppendCSSValue(timingFunction.forget());
}
--- a/layout/style/nsStyleUtil.cpp
+++ b/layout/style/nsStyleUtil.cpp
@@ -652,16 +652,25 @@ nsStyleUtil::AppendStepsTimingFunction(n
if (aType == nsTimingFunction::Type::StepStart) {
aResult.AppendLiteral(", start)");
} else {
aResult.AppendLiteral(")");
}
}
/* static */ void
+nsStyleUtil::AppendFramesTimingFunction(uint32_t aFrames,
+ nsAString& aResult)
+{
+ aResult.AppendLiteral("frames(");
+ aResult.AppendInt(aFrames);
+ aResult.AppendLiteral(")");
+}
+
+/* static */ void
nsStyleUtil::AppendCubicBezierTimingFunction(float aX1, float aY1,
float aX2, float aY2,
nsAString& aResult)
{
// set the value from the cubic-bezier control points
// (We could try to regenerate the keywords if we want.)
aResult.AppendLiteral("cubic-bezier(");
aResult.AppendFloat(aX1);
--- a/layout/style/nsStyleUtil.h
+++ b/layout/style/nsStyleUtil.h
@@ -82,16 +82,18 @@ public:
static void AppendCSSNumber(float aNumber, nsAString& aResult)
{
aResult.AppendFloat(aNumber);
}
static void AppendStepsTimingFunction(nsTimingFunction::Type aType,
uint32_t aSteps,
nsAString& aResult);
+ static void AppendFramesTimingFunction(uint32_t aFrames,
+ nsAString& aResult);
static void AppendCubicBezierTimingFunction(float aX1, float aY1,
float aX2, float aY2,
nsAString& aResult);
static void AppendCubicBezierKeywordTimingFunction(
nsTimingFunction::Type aType,
nsAString& aResult);
static void AppendSerializedFontSrc(const nsCSSValue& aValue,