Bug 1356124 - Part 1: Fix font-variant-alternates property r?emilio draft
authorNazım Can Altınova <canaltinova@gmail.com>
Wed, 28 Jun 2017 09:48:56 -0700
changeset 602201 ff6abb68eafe938eff14de9a63241614ce85df0a
parent 600694 8f80d594c08d5c7a112e5d4b9eb44ffca717eb7b
child 602202 3b7e5bc42118d36a0f408cb3992dd2daef3b5cbf
push id66334
push userbmo:canaltinova@gmail.com
push dateThu, 29 Jun 2017 20:36:01 +0000
reviewersemilio
bugs1356124
milestone56.0a1
Bug 1356124 - Part 1: Fix font-variant-alternates property r?emilio MozReview-Commit-ID: 9gfGBKcqTbD
layout/style/ServoBindings.cpp
layout/style/ServoBindings.h
--- a/layout/style/ServoBindings.cpp
+++ b/layout/style/ServoBindings.cpp
@@ -1229,16 +1229,39 @@ Gecko_nsFont_InitSystem(nsFont* aDest, i
 void
 Gecko_nsFont_Destroy(nsFont* aDest)
 {
   aDest->~nsFont();
 }
 
 
 void
+Gecko_ClearAlternateValues(nsFont* aFont, size_t aLength)
+{
+  aFont->alternateValues.Clear();
+  aFont->alternateValues.SetCapacity(aLength);
+}
+
+void
+Gecko_AppendAlternateValues(nsFont* aFont, uint32_t aAlternateName, nsIAtom* aAtom)
+{
+  aFont->alternateValues.AppendElement(gfxAlternateValue {
+    aAlternateName,
+    nsDependentAtomString(aAtom)
+  });
+}
+
+void
+Gecko_CopyAlternateValuesFrom(nsFont* aDest, const nsFont* aSrc)
+{
+  aDest->alternateValues.Clear();
+  aDest->alternateValues.AppendElements(aSrc->alternateValues);
+}
+
+void
 Gecko_SetImageOrientation(nsStyleVisibility* aVisibility,
                           double aRadians, bool aFlip)
 {
   aVisibility->mImageOrientation =
     nsStyleImageOrientation::CreateAsAngleAndFlip(aRadians, aFlip);
 }
 
 void
--- a/layout/style/ServoBindings.h
+++ b/layout/style/ServoBindings.h
@@ -269,16 +269,21 @@ void Gecko_FontFamilyList_AppendNamed(Fo
 void Gecko_FontFamilyList_AppendGeneric(FontFamilyList* list, FontFamilyType familyType);
 void Gecko_CopyFontFamilyFrom(nsFont* dst, const nsFont* src);
 // will not run destructors on dst, give it uninitialized memory
 // font_id is LookAndFeel::FontID
 void Gecko_nsFont_InitSystem(nsFont* dst, int32_t font_id,
                              const nsStyleFont* font, RawGeckoPresContextBorrowed pres_context);
 void Gecko_nsFont_Destroy(nsFont* dst);
 
+// Font variant alternates
+void Gecko_ClearAlternateValues(nsFont* font, size_t length);
+void Gecko_AppendAlternateValues(nsFont* font, uint32_t alternate_name, nsIAtom* atom);
+void Gecko_CopyAlternateValuesFrom(nsFont* dest, const nsFont* src);
+
 // Visibility style
 void Gecko_SetImageOrientation(nsStyleVisibility* aVisibility,
                                double aRadians,
                                bool aFlip);
 void Gecko_SetImageOrientationAsFromImage(nsStyleVisibility* aVisibility);
 void Gecko_CopyImageOrientationFrom(nsStyleVisibility* aDst,
                                     const nsStyleVisibility* aSrc);