Bug 1354947 - Add equal operators for comparing ComputedTimingFunction with nsTimingFunction. r?birtles draft
authorHiroyuki Ikezoe <hikezoe@mozilla.com>
Sat, 13 May 2017 16:34:38 +0900
changeset 577318 53e5516b62721f7700c32a4e110b0024063fce65
parent 577317 39581b9d0093df165534ccb04f926177d29d7192
child 577319 d9b937ed5ba68d2545e35ae1b28235dd80a63621
push id58655
push userhikezoe@mozilla.com
push dateSat, 13 May 2017 07:47:48 +0000
reviewersbirtles
bugs1354947
milestone55.0a1
Bug 1354947 - Add equal operators for comparing ComputedTimingFunction with nsTimingFunction. r?birtles MozReview-Commit-ID: 7pQQP3xlKot
dom/animation/ComputedTimingFunction.h
--- a/dom/animation/ComputedTimingFunction.h
+++ b/dom/animation/ComputedTimingFunction.h
@@ -75,16 +75,30 @@ public:
            (HasSpline() ?
             mTimingFunction == aOther.mTimingFunction :
             mStepsOrFrames == aOther.mStepsOrFrames);
   }
   bool operator!=(const ComputedTimingFunction& aOther) const
   {
     return !(*this == aOther);
   }
+  bool operator==(const nsTimingFunction& aOther) const
+  {
+    return mType == aOther.mType &&
+           (HasSpline()
+            ? mTimingFunction.X1() == aOther.mFunc.mX1 &&
+              mTimingFunction.Y1() == aOther.mFunc.mY1 &&
+              mTimingFunction.X2() == aOther.mFunc.mX2 &&
+              mTimingFunction.Y2() == aOther.mFunc.mY2
+            : mStepsOrFrames == aOther.mStepsOrFrames);
+  }
+  bool operator!=(const nsTimingFunction& aOther) const
+  {
+    return !(*this == aOther);
+  }
   int32_t Compare(const ComputedTimingFunction& aRhs) const;
   void AppendToString(nsAString& aResult) const;
 
   static double GetPortion(const Maybe<ComputedTimingFunction>& aFunction,
                            double aPortion,
                            BeforeFlag aBeforeFlag)
   {
     return aFunction ? aFunction->GetValue(aPortion, aBeforeFlag) : aPortion;
@@ -100,11 +114,28 @@ private:
     : mType(aType)
     , mStepsOrFrames(aStepsOrFrames) { }
 
   nsTimingFunction::Type mType = nsTimingFunction::Type::Linear;
   nsSMILKeySpline mTimingFunction;
   uint32_t mStepsOrFrames;
 };
 
+inline bool
+operator==(const Maybe<ComputedTimingFunction>& aLHS,
+           const nsTimingFunction& aRHS)
+{
+  if (aLHS.isNothing()) {
+    return aRHS.mType == nsTimingFunction::Type::Linear;
+  }
+  return aLHS.value() == aRHS;
+}
+
+inline bool
+operator!=(const Maybe<ComputedTimingFunction>& aLHS,
+           const nsTimingFunction& aRHS)
+{
+  return !(aLHS == aRHS);
+}
+
 } // namespace mozilla
 
 #endif // mozilla_ComputedTimingFunction_h