Bug 1248340 - Part 6: Implement serialization for Frames. draft
authorBoris Chiou <boris.chiou@gmail.com>
Fri, 24 Feb 2017 17:18:53 +0800
changeset 490056 de8948a508dc1c8e3ab9e4f9fff6a388ea4d923e
parent 490055 14cc0ccda3ff6325409dbd78f3c9e14e605a8a20
child 490057 d610d141376cbb27114b47a40d818c75a92699a5
push id46985
push userbmo:boris.chiou@gmail.com
push dateMon, 27 Feb 2017 16:23:37 +0000
bugs1248340
milestone54.0a1
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
dom/animation/ComputedTimingFunction.cpp
layout/style/nsComputedDOMStyle.cpp
layout/style/nsStyleUtil.cpp
layout/style/nsStyleUtil.h
--- 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,