Bug 1343751 - ensure_len() for nsStyleAutoArray<StyleTransition>. r?emilio draft
authorHiroyuki Ikezoe <hikezoe@mozilla.com>
Fri, 03 Mar 2017 08:35:33 +0900
changeset 494506 78d0ff557e9028683f91ea9343e45e100cdcd646
parent 494079 517c553ad64746c479456653ce11b04ab8e4977f
child 494507 fda620327eb9e5e968c532964c3b6a4c89b13e27
push id48041
push userhikezoe@mozilla.com
push dateTue, 07 Mar 2017 06:33:46 +0000
reviewersemilio
bugs1343751
milestone54.0a1
Bug 1343751 - ensure_len() for nsStyleAutoArray<StyleTransition>. r?emilio MozReview-Commit-ID: 2xCExdpldWQ
layout/style/ServoBindings.cpp
layout/style/ServoBindings.h
--- a/layout/style/ServoBindings.cpp
+++ b/layout/style/ServoBindings.cpp
@@ -988,16 +988,31 @@ Gecko_EnsureStyleAnimationArrayLength(vo
 
   base->EnsureLengthAtLeast(aLen);
 
   for (size_t i = oldLength; i < aLen; ++i) {
     (*base)[i].SetInitialValues();
   }
 }
 
+void
+Gecko_EnsureStyleTransitionArrayLength(void* aArray, size_t aLen)
+{
+  auto base =
+    reinterpret_cast<nsStyleAutoArray<StyleTransition>*>(aArray);
+
+  size_t oldLength = base->Length();
+
+  base->EnsureLengthAtLeast(aLen);
+
+  for (size_t i = oldLength; i < aLen; ++i) {
+    (*base)[i].SetInitialValues();
+  }
+}
+
 Keyframe*
 Gecko_AnimationAppendKeyframe(RawGeckoKeyframeListBorrowedMut aKeyframes,
                               float aOffset,
                               const nsTimingFunction* aTimingFunction)
 {
   Keyframe* keyframe = aKeyframes->AppendElement();
   keyframe->mOffset.emplace(aOffset);
   if (aTimingFunction &&
--- a/layout/style/ServoBindings.h
+++ b/layout/style/ServoBindings.h
@@ -269,16 +269,17 @@ void Gecko_ClearPODTArray(void* array, s
 void Gecko_ClearAndResizeStyleContents(nsStyleContent* content,
                                        uint32_t how_many);
 void Gecko_CopyStyleContentsFrom(nsStyleContent* content, const nsStyleContent* other);
 
 void Gecko_EnsureImageLayersLength(nsStyleImageLayers* layers, size_t len,
                                    nsStyleImageLayers::LayerType layer_type);
 
 void Gecko_EnsureStyleAnimationArrayLength(void* array, size_t len);
+void Gecko_EnsureStyleTransitionArrayLength(void* array, size_t len);
 
 mozilla::Keyframe* Gecko_AnimationAppendKeyframe(RawGeckoKeyframeListBorrowedMut keyframes,
                                                  float offset,
                                                  const nsTimingFunction* timingFunction);
 
 // Clean up pointer-based coordinates
 void Gecko_ResetStyleCoord(nsStyleUnit* unit, nsStyleUnion* value);