Bug 1343751 - ensure_len() for nsStyleAutoArray<StyleTransition>. r?emilio
MozReview-Commit-ID: 2xCExdpldWQ
--- 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);