Bug 1420928 - Add a function that calculates combined duration with a given position in the transition-property list. r?boris draft
authorHiroyuki Ikezoe <hikezoe@mozilla.com>
Fri, 05 Jan 2018 06:24:08 +0900
changeset 715989 45a1e6f671f4574949564ed1168427d3d42428a2
parent 715988 cec9ac0d727d19ac373f6c62c1b08018a7085af3
child 715990 8d10936acf94ebae3f8c97fd4ab5469cc5008403
push id94292
push userhikezoe@mozilla.com
push dateThu, 04 Jan 2018 22:06:10 +0000
reviewersboris
bugs1420928
milestone59.0a1
Bug 1420928 - Add a function that calculates combined duration with a given position in the transition-property list. r?boris MozReview-Commit-ID: 9YOII9lqtRq
layout/style/nsStyleStruct.h
--- a/layout/style/nsStyleStruct.h
+++ b/layout/style/nsStyleStruct.h
@@ -2621,16 +2621,24 @@ struct MOZ_NEEDS_MEMMOVABLE_MEMBERS nsSt
   float GetTransitionDuration(uint32_t aIndex) const
   {
     return mTransitions[aIndex % mTransitionDurationCount].GetDuration();
   }
   const nsTimingFunction& GetTransitionTimingFunction(uint32_t aIndex) const
   {
     return mTransitions[aIndex % mTransitionTimingFunctionCount].GetTimingFunction();
   }
+  float GetTransitionCombinedDuration(uint32_t aIndex) const
+  {
+    // https://drafts.csswg.org/css-transitions/#transition-combined-duration
+    return
+      std::max(mTransitions[aIndex % mTransitionDurationCount].GetDuration(),
+               0.0f)
+        + mTransitions[aIndex % mTransitionDelayCount].GetDelay();
+  }
 
   nsStyleAutoArray<mozilla::StyleAnimation> mAnimations; // [reset]
 
   // The number of elements in mAnimations that are not from repeating
   // a list due to another property being longer.
   uint32_t mAnimationTimingFunctionCount,
            mAnimationDurationCount,
            mAnimationDelayCount,