Bug 1342139 - Implement gecko bindings for will-change r?xidorn draft
authorNazım Can Altınova <canaltinova@gmail.com>
Sun, 19 Mar 2017 15:36:16 +0300
changeset 502190 ce398d8088caa27c0a741f6dd7897f981e4cdf2e
parent 501163 e1576dd8bd9d3a4ca418cf347133b8a4957ddeca
child 502191 33973eeaee29c60c04e0cdf6fffcd38ed4790f09
push id50218
push userbmo:canaltinova@gmail.com
push dateTue, 21 Mar 2017 12:18:28 +0000
reviewersxidorn
bugs1342139
milestone55.0a1
Bug 1342139 - Implement gecko bindings for will-change r?xidorn MozReview-Commit-ID: KNhVz9vjXUl
layout/style/ServoBindings.cpp
layout/style/ServoBindings.h
--- a/layout/style/ServoBindings.cpp
+++ b/layout/style/ServoBindings.cpp
@@ -1106,16 +1106,36 @@ Gecko_EnsureStyleTransitionArrayLength(v
 
   base->EnsureLengthAtLeast(aLen);
 
   for (size_t i = oldLength; i < aLen; ++i) {
     (*base)[i].SetInitialValues();
   }
 }
 
+void
+Gecko_ClearWillChange(nsStyleDisplay* aDisplay, size_t aLength)
+{
+  aDisplay->mWillChange.Clear();
+  aDisplay->mWillChange.SetCapacity(aLength);
+}
+
+void
+Gecko_AppendWillChange(nsStyleDisplay* aDisplay, nsIAtom* aAtom)
+{
+  aDisplay->mWillChange.AppendElement(aAtom);
+}
+
+void
+Gecko_CopyWillChangeFrom(nsStyleDisplay* aDest, nsStyleDisplay* aSrc)
+{
+  aDest->mWillChange.Clear();
+  aDest->mWillChange.AppendElements(aSrc->mWillChange);
+}
+
 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
@@ -292,16 +292,20 @@ void Gecko_CopyCounterResetsFrom(nsStyle
 void Gecko_CopyCounterIncrementsFrom(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);
 
+void Gecko_ClearWillChange(nsStyleDisplay* display, size_t length);
+void Gecko_AppendWillChange(nsStyleDisplay* display, nsIAtom* atom);
+void Gecko_CopyWillChangeFrom(nsStyleDisplay* dest, nsStyleDisplay* src);
+
 mozilla::Keyframe* Gecko_AnimationAppendKeyframe(RawGeckoKeyframeListBorrowedMut keyframes,
                                                  float offset,
                                                  const nsTimingFunction* timingFunction);
 
 // Clean up pointer-based coordinates
 void Gecko_ResetStyleCoord(nsStyleUnit* unit, nsStyleUnion* value);
 
 // Set an nsStyleCoord to a computed `calc()` value